/VersionHistory
/ChallengeResults
Take BasicGFSurfer, add a bit of segmentation and distancing, and switch it to surfing goto-style. Spend about 10 hours working out all the bugs (remember to account for the reduced distance when you slow down at each point - gah!), and something like DrussGT should result. Now to add a flattener (just pick a random point from the precise prediction - would that work?), and then I'll work on guns. =). -- Skilgannon
- That will work for a "flatter than flat with flat juice on top" movement, but you will be in 100% flat mode. Most flatteners (I think? Certainly mine...) add a flattening factor on top of the normal danger factor, so you still have normal dodging with a touch of flat juice on top. =) -- Voidious
Very nice scores! Not really surprising, but still remarkable to see that coming to a full-stop every wave does exploit the weaknesses of LT and CT targeting. I expect you also have some kind of dive-in protection added, or does BasicGFSurfer already have that. I would like to see the total score of the MovementChallenge2K6, then you will see the true power of your movement. -- GrubbmGait
No dive protection =). Instead, I have 151 bins (I'm thinking of adding more) , so at all distances a botwidth covers at least 3 bins. Then, at the predicted position, I add the values of all the covered bins together to get the danger at that point. So, as I get closer, I cover more bins, and it increases the danger. To me this is the most accurate representation of how dangerous it is at a point. I'm not sure how much the StopAndGo is helping me against LT/CT. Another 'feature' (which I'm not sure helps) is my choice of high/med/low/none segmentations. I check if the 'hiseg' bin has any recorded hits, and if it does then I use that segmentation. Otherwise I check the next lowest segment. Each segment has it's own rolling average, which is lower the more precise the segment is. Finally, I think that GoToSurfing? eliminates one big bug-risk: you always go where your precise-prediction thinks you will. =) DrussGT will be coming to the Rumble as soon as I add rolling averages to the gun =). -- Skilgannon
Very nice WSC scores there! Those are 500 rounds, right? (I only ask because we used to do 1000 rounds and yours are particularly good. =)) What kind of gun do you have hooked up, by the way? Feel free to post a test version with the gun from CassiusClay or Dookious, which is a good way of seeing just where your movement stands in the rumble. Keep up the good work!
- A modified gun from GFTargetingBot. I layered several segments on top of each other, and added a Time-since-decel segment.
Oh, I also had a thought on your distance / DiveProtection. I can see the logic in it and it surely works, but if you divided the danger by number of bins covered (average danger), you would have much finer control of your distancing. You could still divide the final danger by the distance (basically what you're doing now), but you'd also have the choice of trying 1.2 * distance or square(distance) if you wanted. There are a lot of points in fine tuning distancing and DiveProtection!
-- Voidious
- I just tried that, and it squeezes out another few points. Awesome. So here's what I'm using:
double thisDanger = getTotalDanger(bestBins,index,botBinWidthAtEnd)/botBinWidthAtEnd;
thisDanger /= Math.pow(distance,2);
Hmmm I just found that I get eaten alive by PatternMatchers?. A Time-Since-Velocity Change segment won't help me, because I stop for every wave. Time-since-dir-change doesn't help much either. I've even tried setting my surfing rolling depth to 2, and it still doesn't help. Any ideas? -- Skilgannon
- Just a lot of experimentation. =) But are you sure it's not just that your gun is weak? (I still don't know what you have on there...) -- Voidious
- I'll try putting CC's gun in. -- Skilgannon
- AntiPatternMatching? (Not a very serious suggestion ... ) -- Simonton
- I think it's the movement. I can't get Che below a 14% hit ratio. -- Skilgannon
- Do you roll (or otherwise decay) your surfing stats? And if so, how quickly? That's important. -- Voidious
- Yep, with a depth of between 10 and 40 (hiseg and noseg, respectively). Only real waves are weighted, at 1. I'm smoothing using the algorithm on BasicSurfer. I tried Chase-san's bell-curve for smoothing, but it didn't work as well. I guess the spike helps. -- Skilgannon
- For what it's worth, I think even 3 is a high rolling depth in movement. If I were using just one depth on all my stats, it would be 0.7 (and used to be). Right now, I have a variety of depths ranging from 0.5 to about 5. I'd definitely encourage experimenting with some lower depths, at least on the hiseg. -- Voidious
- HA! I just realised that I'm using regular Che, not CheMC?. It looks like it only moves on bullet fire, and I wasn't firing, so I thought it was the right one. I've added back the time-since-dir-change layer, I'll tell you what happens. -- Skilgannon
- 16.96. I think it might be because of my way of choosing segments. The low segments don't get weighted at all once the high segments have a hit, and this slows down my learning. But I'll give another try with lower depths, before I change anything. -- Skilgannon
- One more thought: do you ever move away from the enemy, or always just perpendicular? If you aren't keeping a good distance, it will drastically decrease your movement challenge scores - much more so than it would in a real battle, where staying close also helps out your own hit percentages. -- Voidious
- Against the WSC bots I found 400 gave me the best results, but against Che I upped it to 600, where I'm not as big of a target. I'm using an offset of (PI/2 - 1 + dist/BEST_DIST), so that when dist==BEST_DIST it gives me PI/2, which is perpendicular. It keeps me away nicely. A nice part about using GoTo? is that I don't have to change the formulas all over the place - I just change it in the PrecisePrediction, and when I go to the points I follow the path the PrecisePrediction took. -- Skilgannon
OK, I've uploaded version 0.1 with Raiko's gun (from the mc2k7, thanks for the pluggable version Simonton!). -- Skilgannon
- It seems that the surfing is broken, I'll check into it. -- Skilgannon
Ok, so I fixed the precise prediction (it thought it could get 6 pixels further than it could), put Raiko's gun in, and (it looks like) a 2020+ bot. This is without a flattener in the movement, or rolling averages in the gun. In fact, it looses to almost every surfer on the block (besides BasicGFSurfer :-p). Do I get a medal? =) -- Skilgannon
Yes, cept i'm not certified to give it ;). I had my eyes on the 20th spot. Oh also! I might have to make my own goto surfing implimentation after I get my gun above shadows in all the targeting challenges (only about 2 and a half points away in the TC and TC2K6). --Chase-san
OK, I'm ranking on par with CassiusClay, and I'm using Raiko's gun. Maybe it's time to do a version with dLightning? =) -- Skilgannon
Holy cow! Dude, major congrats. =) Yeah man, put up a version with DookiLightning? and see what happens. I want to know. =) Maybe wait for 0.3.1 to get to 2,000 battles, could still move a few points up or down from there. -- Voidious
Keep this up you could take the crown... O.o --Chase-san
Impressive scores! It still is not as good as Dookious, but i would like to have such a movement :) --Krabb
Looks like the third member of The2100Club pre-announced himself. If your gun will be on the same level as your movement, it is just a matter of time! @Krabb: Don't you hate it when people don't want to enter our 'race for 2050 in eighty days' (or weeks), but just beat us left, right and in the middle. :-( -- GrubbmGait
- Haha, I can't tell you why, but for some reason i get motivated instead of depressed by such impressive developments. I think we have our own way of doing things, "slowly but surely". May be one day this stratgie will pay off, he?! How many days are left, if we say 80 weeks? Circumnavigating the world is a complex business... PS: I'm quite satisfied with my ~10 PL ranking for now. --Krabb
- I didn't even know you had that race going! And GrubbmGait, you could seriously increase your score by adding a few more buffers to your movement. I found that it really helps to have different buffers of the same dimension, with different slices. For example, having lateral velocity slices at {3,6}, {1,3,5,7} and {1,2,3,4,5,6,7,8}. If you also add segmentation on distance, do the same thing, with {200,500}, {100,300,500,700} and {200,400,600,800}. @Krabb: This had been said other places, but get rid of your flattener and extra segments, and get EVERY single bug out of your code. Use the graphical debugging to check if you arrive at the place you think you will, when you think you will. The latest robocode has the swing graphics lined up properly, so this is way easier than it used to be. Then add back your segments and flattener, one at a time. =) -- Skilgannon
- I know, I must be the only 2K bot with such a simple movement (and my gun is not that good either) -- GrubbmGait
- WeeksOnEnd uses a single movement buffer segmented only on lateral velocity (But sadly it no longer looks like a 2K bot). And Skilgannon: it wasn't that hard to line up swing graphics before - you just had to pause the screen then wipe another window over it to get it to repaint with the up-to-date state information :) -- Simonton
- I'm using debugging graphics since i discovered robocodeGL and my segmentation is simple and singlebuffered. And there is no flattener at all. My over all ranking is not as high as it could be, because the rolling dept is quite low, tick waves are just fired in the first 3 rounds and the segmentation isn't tuned. You can still join our race, as you still need to write your own gun. But look out! I'll start to do some segmentation reasearch in the next few days. Lets see how many nasty bugs are left :) --Krabb
- Ok, I'll start working on my gun soon. I just need to get my movement sorted first =). I still need to add a few more buffers (I'm only at 44 right now ;-) ), and then I'll start on a GF/PM gun. Where do I have to start? Can I start from GFTargetingBot, or do I have to start from scratch? -- Skilgannon
Congratulations! Hmm... so if you implemented a goto-surfer with VisitCountStats, would its shorthand be WS-GT/VCS? =) -- AaronR
Started up 4 RRAH clients here for ya. =) So DrussiousGT is your movement with Dooki's gun? --David Alves
- Yip. I'm surprised how high it ranks in the PL, considering it doesn't have a flattener, and only has 5 dimensions in the movement. I want to try weighting secondary waves a bit higher, now. -- Skilgannon
I will start up a power-client as well to do battles, one of those core duo lab machines I use to benchmark. --Chase-san
Started up some clients for you. What's new in this version? (How about a /VersionHistory ?) =)--David Alves
A couple segmentation tweaks, nothing much. I haven't had time for anything else. I'll release a version with my own gun some time next week (I hope). -- Skilgannon
- Ha! That's the fastest I've ever seen a bot get to 2000 battles. I added 0.3.6, I'll remove 0.3.4 later. -- Skilgannon
Buggy? http://rumble.fervir.com/rumble/RatingDetailsComparison?game=roborumble&name1=jk.mega.DrussGT%200.3.6&name2=jk.mega.DrussGT%200.3.4 =(
--David Alves
- Yeah, I'm guessing it was my new deceleration simulation attempt. 0.3.6 has been removed. -- Skilgannon
- Found it! Never assume that distance is positive, especially when you made it negative a few lines above =). Basically, my goTo method wouldn't let me turn if I was traveling backwards =). 0.3.7 on the way. -- Skilgannon
Who would have thought it possible - passing RaikoMX with a pattern matcher (and not even multiple choice, at that!) -- Skilgannon
Hey man, I don't know if you meant to leave both of them in there, but there's generally a rule of thumb that you should only have one version of a bot in the rumble at a time. Maybe you could remove DrussGT / PM? Having two versions in as a temporary test is no big deal, but long-term, it kinda throws off what "Top 10 / 25 / 50" means if people leave multiple versions in the rumble. -- Voidious
2062.76 and more than 500 battles... your 2050+ ranking seems save ;( --Krabb
Indeed, this one look almost perfectly tied up with the Raiko version ([compare]). -- Simonton
It's depressing, if I'd had this score 2 weeks ago, I would be in 4th by a good 7 points, but now I'm in 6th! =(. I really need to work on a decent gun...maybe give DC a shot. -- Skilgannon
I didn't do this intentionally, but this DC gun seems to be quite a potent surfer killer. I'm counting 7 losses. Maybe I should try reducing the scan size even more....and put in a Vgun array with my VCS gun. -- Skilgannon
Look ma, no flattener! [PL] -- Skilgannon
He, the 5th PL place is mine! :) --Krabb
Prove it! The only way that will happen is if I get 4th! :-D -- Skilgannon
- HeHe?, [PL]^^ --Krabb
- You can have it back for a while, at least until I get a VCS antisurfer gun going =) - Skilgannon
Hey man, I hope you don't mind a word of wisdom from someone who has done this before - be careful not to over-optimize for the MovementChallenge (or any challenge, really). I think MC2K7 is less susceptible to this than the old MC's, but I'm sure it can still be done. You could very well be increasing your MC2K7 score at the cost of overall (i.e., RoboRumble) performance. Just be sure to post to the rumble often enough to make sure that's not the case. =) Keep up the good work, though! -- Voidious
Yeah, 0.5.10's movement is what is currently under my DC gun in 0.7.0, so I don't think it's that bad. But thanks for the pointer. =) I'm trying to get my DC working as good as my VCS, and I have one idea, but it may not pay off. DC definitely has its problems, but this latest idea may make it good for movement. -- Skilgannon
By the way, I'm not sure how long it's been happening, but I noticed some recent versions of DrussGT were compiled with Java 6, so they're not getting any real battles from my clients. Just FYI - if you're not using anything Java 6, you'll get more battles faster with Java 5 compatibility. ;) -- Voidious
Wow, thanks for the heads up. It seems that when I changed to compiling with jikes to javac to accommodate Simonton's tree, I didn't add -target 1.5 to the right place in the compiler config. This latest version seems a bit buggy anyways...I'll get a new one up asap. -- Skilgannon
version 0.8.3 still is not Java 1.5 compatible, putting jk.mega.* back on my exclude list :-( -- GrubbmGait
I think I know what it is....some of the dependencies didn't get their .class file replaced with the new compile. Sorry 'bout that... -- Skilgannon
- "Added 'Shakespearean Insulter' - inspired by the quotes in Dookious =)" - Haha, did not expect to see that when I checked your version history. =) Shakespearean Insulter, that sounds like a band name... -- Voidious
- Run a battle against DrussGT in your regular Robocode, and check the debug window at the end of each round. =) It's also partly inspired by [this], which I find hilarious! -- Skilgannon
So much for that BrickWall, eh? =) Man, 2111, that's pretty solid, nice work. I suppose it may be time to start testing / tweaking Dookious again... -- Voidious
It was just a straight revert back to 0.7.23. Which has no precise max-GFs. So I'm thinking that my implementation might have had some bugs in it. Unless of course I broke something else in the process, which quite likely. My final implementation was to not allow the choosing of any angles that were outside the present maximum, but I think I should have allowed an extra half botwidth as well so that I could choose that very end angle if I had to. Maybe I'll give that another look, but for now I've got some different things I want to try. Including a major refactor. -- Skilgannon
It's strange that I gained 5 points from adding a flattener, whereas Dookious gained nothing...maybe Dookious' strong anti-surfer gun takes care of the bots that his flattener would help against, negating the effect? -- Skilgannon
Nice work! Hard to say where the difference is. It could be the AntiSurfer gun. It could be that my base movement is already pretty well tweaked against top guns where the flattener would help. It could even be that my flattener just stinks, or that yours is killer! -- Voidious
My flattener only logs hits on 'real' waves, and it logs all waves, whether or not I was hit by the bullet, or even if the bullet got hit by one of my bullets. And it uses about 35 buffers (randomly selected, like my others) on all the same dimensions that I normally use. It seems Chalk has my number though, so I'll have to give it another look. I think the fact that Dookious has quite a few 'deep' buffers (ie. a buffer with more than 5 dimensions) makes his movement more unpredictable to the top guns (a sort of 'randomness' due to differing slices) whereas DrussGT has several slices for every dimension, and each slice is paired with many other slice combinations, but never has more than 4 dimensions in one buffer, making more of a 'surfing' movement that can be predicted by very low rolling averages coupled with real-wave-only logging. Anyways...off to test against Chalk! -- Skilgannon
Wow, did I read that right? You use 35 VCS buffers in your surfing movement? How many dimensions? That makes my movement, with just 5 unwheighted dimensions, look like childs play in terms of complexity... -- ABC
- Nope, wrong. I use 35 buffers just for the flattener. I have 100 buffers for the main surfing buffers =). The code was generated at random, and I just copied it into my initialization method =). I have 8 dimensions, but each buffer only ever has 4 at a time. -- Skilgannon
- Ok, why not go with the full set then? If my calculations are correct there are 162 possible combinations of 8 dimensions. :) -- ABC
- I think there are actually more, because some buffers have 3, 2, or even 1 dimension. And the reason I'm not going with more is because of memory limitations =). That's the same reason I have a maximum of 4 dimensions per buffer =) -- Skilgannon
- I calculated combinations of 8 in 4, 3, 2 and 1, and got to 162 (70 + 56 + 28 + 8), 163 if you have an unsegmented buffer. Multiplied by 31 bins and 4 bytes per bin gives 20212 bytes, should be doable. -- ABC
- [Combinations and permutations calculator] ... Yep! -- Voidious
- Oh, yes, but it gets more complicated: each dimension can have 1 of 3 different 'slice' sets, course, medium or fine. This is something similar to TileCoding? that I think Tigger uses. Also, I'm using 101 bins (down from 151 to same memory). -- Skilgannon
I also use something in that range =) : 34, unweighted, varying dimensions and segments, but not random. I don't have a second set of 34 for my flattener, though, the flattening is also done right in those same buffers. Then I have 3 separate buffers for the non-firing waves flattener. -- Voidious
Psh, 3 releases in one day is nothing. =) Also, by the way, I think some of your recent ratings under /VersionHistory are off by 1 (or 100 =)). -- Voidious
- Haha, it's more like 3 releases in 4 hours =). And thanks for that catch...I probably would have left it like that forever =) -- Skilgannon
Version 1.0.0 is incompatible with java 1.5. :/ -- ABC
Oh gosh, not this again. I must have not replaced the classes from one of my reverts...give me a minute and it'll be fixed... -- Skilgannon
Holy.....73% against SandboxDT after 4 battles.....it might be worth keeping this one even if the points dropped a bit... -- Skilgannon
I know it's just one battle, but Shadow 3.77v just got 77.7% against DT! -- ABC
I'm guessing it's because my flattener only recognizes 'real' waves...adding tick waves would make it quite a bit slower, but if it's what it takes to improve my score ;-) -- Skilgannon
- A couple thoughts. First, I think it would take at least 100 matches for each of you against DT to really judge who's better against DT. Yes, battles really are that random. =) Second, it might be a good starting place to try tweaking your flattener, but I doubt you could jump to that conclusion so quickly. The last time I tested (which was, admittedly, a while ago), my flattener made almost zero different against SandboxDT - and that was tested over hundreds of battles. (The same flattener upped my score vs Ascendant by over 10%, so it wasn't a useless flattener...) -- Voidious
- Maybe I should have clarified =). The 73% against DT was due (I think) to my change in segmentation for 1.0.1. And my flattener boosted my score by about 10% against Ascendant as well. But adding tick-waves to my flattener would help against other bots, I think. Even if it didn't help against DT. -- Skilgannon
Congratulations on your new crown! :) Version 1.0.17NVBW is clearly ahead of Dookious, your precise bot width code wasn't very effective in the rumble after all. -- ABC
Thanks! =) Yeah, seems not. I've just had some ideas on improving the precise botwidth, inspired by Rednaxela's animations, and I see some of the assumptions I took with it aren't quite right. So perhaps I can improve even further than simply removing it. I also had the idea of doing DC surfing weighted parallel with VCS surfing, I remember Stormrider had quite a different set of problembots from DrussGT. -- Skilgannon
Congratulations indeed! You just passed halfway mark from The2100Club to the The2200Club? of legend! In any case, nice stuff, hopefully you can indeed improve further than simply removing it :) -- Rednaxela
Hmm, interesting, looking at the comparison between your new version and your last [[here]], at least as far as UbaRamLT goes it isn't doing any better desipite adding the gunheat waves like I have in RougeDC, and that's one rambot that RougeDC is doing better with than DrussGT (~81% as opposed to ~74%). Perhaps the key to RougeDC's rambot success is not entirely in the gunheat waves... -- Rednaxela
I was tweaking the attack angles against GrubbmThree, maybe I'll have to add some other RamBots to my testbed. Also maybe I'll watch some battles to see what you're doing there in RougeDC to get those scores =). I think your precise botwidth helps a lot with the close-range AntiRamBot? movement, because 1 pixel different can quite often make the difference between getting hit and dodging a bullet. But now I've released 2 new versions, one leaving out the DynamicClustering and the other leaving out this 2 tick advantage, we'll see what happens. -- Skilgannon
By the way, I've noticed how DrussGT somehow outputs to the console when run in the rumble and I noticed that something is off with DrussGT's hitrate calculation. Against pmc.SniperBot? which I think stands still it outputs things like "My hitrate: 1.5" and "My hitrate: 1.2857142857142858" sometimes. Is this a known issue? -- Rednaxela
Wow, it doesn't print to the rumble in my local versions. Checking in the gun, I see that the System.out.println("My hitrate: " + (bulletHit/bulletsPassed)); is placed inside the gun constructor, and the gun is a non-static object in the main bot. So maybe Robocode 1.6 has a bug that allows printing to the console from the constructors? Because this doesn't happen in 1.5.4 with the rumble. And about that buggy hitrate - the only thing it controls is whether or not I fire power 3 bullets. It seems it's buggy only at close range. I'll take a look at it, but I've got other stuff on my plate at the moment, like getting this weighting system working, oh yeah and that integral calculus test in 12 hours time that I should theoretically be studying for =) -- Skilgannon
- This sounds like an interesting problem in itself: if you've got a calc test in 12 hours, X bugs in your weighting system, and you require 3 hours of sleep before the exam, what is the maximum value of X for which your new bot version can be ready before the test? :-P -- Voidious
- Well, let's define this problem a bit more accurately: I need to wait for my current version to get more battles, I need 7 hours sleep before the exam (it's night here - doh) and there are an infinite number of possible ways of doing the weighting system, my goal is to find one that yields better results than no weighting system. I've now given up on weighting the individual sets of bins, instead weighting the entire buffer. 200 round tests against RaikoMicro reveal that there have been no improvements so far. Tests against Ascendant reveal that using this weighting on the flattener, however, *is* effective. But that's to be determined by tomorrow's release. And I really need to work on my gun, anyways. There, just plug it into your calculator, and the answer says that I'm going to bed right now =) -- Skilgannon
- Ah, bringing back fond memories of academic crunch time + Robocode addiction. =) Good luck on your exam! -- Voidious
- Quite busy I see :) Good luck on that exam! By the way, I was wondering if you'd have any objections if I released two temporary bots to the rumble in the wiki package: One that uses RougeDC's gun and DrussGT's movement, and one that's the other way around. I highly suspect they'll both rate somewhere between DrussGT and RougeDC, but I think the bot-by-bot comparison may be interesting. Of course, I'll wait to add them till I both get your word, and the new bots currently in the rumble get to the 2000 battle mark, and I'll remove the temporary ones after they get to the 2000 battle mark. Any objections, and if not, any naming suggestions? :) -- Rednaxela
- Sure, go ahead. But be warned, DrussGT's movement is very sensitive to the gun taking too much CPU time because it uses the majority of the tick whenever it encounters a new wave, or gets data from a bullet hit. Of course, the rest of the time it uses almost nothing, which is why it seems to run pretty fast ;-). Anyways, I suggest you use 1.1.3, but do a search for all references to areaNormalize(float[] bins) and replace it with a call to heightNormalize(float[] bins). I put forward the name RoussGT - thus keeping the majority "Rouge" as well as signifying the GT movement =). Of course, Scourge sounds better - it's your call =) -- Skilgannon - 1 hour till exam
- Hm, I think I'll go with RoussGT for the one with DrussGT's movement and my gun, and then DrugeDC for the one with DrussGT's gun and my DC movement. They'll go up around when my last release of RougeDC gets close to 2000 battles, though that could be a while with how the rumble seems to be running slowish in the last 12 hours (probably partially my fault though, as I only have my slowest machine running the rumble right now, while my fastest is doing RoboResearch). In any case may your exam be successful =) -- Rednaxela
- Okay, I have wiki.RoussGT and wiki.DrugeDC ready now (took a bit to make DrussGT into a reusable component which could have features like gun or movement enabled/disabled). They're based on RougeDC Gamma4 and DrussGT 1.1.3 with the normalization change you suggested. Should I wait till RougeDC Gamma4 and DrussGT 1.1.4 are at 2000 battles before releasing the hybrids, or think they should be released right about now? :) -- Rednaxela
- Just go ahead and release them. Getting DrussGT into a component form should just require: commenting out all references to dgun, making it no longer extend AdvancedRobot, trying to compile it, and adding a reference to the AdvancedRobot 'father' object (that should be a constructor parameter) wherever there is an error =) But maybe you have some other structural requirements? I personally think part of the fun is building your bot around the structure that Robocode gives us =) -- Skilgannon
- Alright! They're out! Well, I also had to separate out "init()" and "runTick(List<Events> events)" from the "run()" code in order to make it fit in the bot structure I use. I also opted to add "useGun", "useRadar", and "useSurf" boolean flags in the constructor instead of simply commenting out parts. Actually, it really surprised me how monolithic DrussGT's code is when I first looked at it. Anyways, about RoussGT and DrugeDC, note that my gun from RougeDC Gamma4 is looking like the weakest yet since Gamma1, so it's possible RoussGT might not perform so great even compared my Gamma1 and Gamma2 releases of RougeDC despite the stronger movement. In any case, this should be interesting. -- Rednaxela
- Monolithic is the right word =). The only restructure since it's BasicSurfer roots is cleaning up the getBestPoints? method handling both the first and second waves (it used to be handled in the getDanger function, as did the buffer generation - yuk!), and making the buffers a class of their own. Other than that it's just had stuff added to it. I tried to make any additions as forward-compatible as possible, so other than getting pretty big, it's actually pretty clean, follows an inline code path, no recursion, stuff like that. The worst of it was removed in 1.1.3, take a look at 1.1.1 if you want to see some ugly code =) I blame it on my never taking any courses in OO programming or anything. Anyways, coding is just a hobby for me =) Give me real robots any day =) -- Skilgannon
- Hmmm... I think that's the most compact way of keeping a huge set of 'pre-determined random' buffers. I don't want to actually determine them at runtime, because then every one-in-10000 battles I might end up without any lateral-velocity or something funny like that. It might look random but I actually had to generate about 3 sets to get one that is fairly evenly spread, and doesn't have to many duplicate/similar entries. I think it's a lot more compact than Voidious's method of making a seperate class for each buffer =) That would be *very* impractical for me, with my horde =) He has something simple, like 20. I guess I could put them in a seperate class with a static method, but for me that doesn't seem a more elegant method. -- Skilgannon
- Well, Voidious's method makes me cringe even more, but I would prefer a more systematic/programmable way for generating the list at runtime. In any case: What the heck though? So many buffers? You're a madman! A winning madman though =) -- Rednaxela
- Yep, crazy. But it works like a charm. Go figure. =) I'll make a special effort to come up with a cleaner way to load it. How does putting the slices into a giant 2 dimensional array sound, then running it through a loop and building the buffers? :-p -- Skilgannon
- Yeah, yeah, go ahead and make fun of me. :-P It was a tough call, but in the end I opted for a class wrapper around each buffer to allow for cleaner / more robust execution code. And hey, it's Java, you can't be afraid of having lots of classes! =) -- Voidious
- It's not lots of classes that make me cringe, it's mass duplicated code even if each bit is small =P -- Rednaxela
- Hehe - well, I don't really consider my setup to have any duplicated code. :-P I'm also pretty anal about that. And the code for handling my buffers and sets of buffers is pretty clean as a result of the class structure. Reflection would probably have given me an even cleaner setup, but I'm not too familiar with it yet, and it could have been real slow... -- Voidious
- Hmmm.... I see the lines words "public class" duplicated a lot. There also seems to be a huge number of unnecessary constructors :-p -- Skilgannon
Well, I think the buffer import code is much better now, and the buffer extraction code, while it may be more messy and complicated, is actually much more technologically advanced, as all floating point comparisons are limited to the absolute minimum, and a huge number of loops are avoided. It could be made to look neater, but that would require a redesign of the entire mess, something I certainly don't have the time for now. Also, while being much neater, it would be less readable, because of all the stuff that would have to be generated beforehand. -- Skilgannon
It seems that somewhere along the gun adaption DrussGT decided he would start going for the surfers... Except for Hydra, WaveSerpent (its close) and Shadow, for some reason CassiusClay (who I used to beat fairly easily, but maybe more matches are needed) and the yet unuploaded Dookious coming in about 47%. I rose above Ascendant, burnt Phoenix to ashes (ok I'll stop now, I promise =) ) and I think got a terrific score against the Raiko family. All in all, I'm 100% happy with the gun transition to precise GFs. I even found a bug in the gun code, so it runs a lot faster than before. My TCRM seasons take place in about 2/3 the time they used to. Thanks for the inspiration, Rednaxela!! -- Skilgannon
Haha! Nice stuff Skilgannon! I'm glad I was able to inspire you =) I'm glad at least some of the qualities that made my DC gun differant than most are not complete garbage =) -- Rednaxela