User talk:Jlm0924

From Robowiki
Jump to navigation Jump to search

DemonicRage v2.0

I spent alot of time lately working on Demonics movement. In the process I lost the source to some older versions like 1.4 while tring to re-invent the wheel. but I'm happy with the out come, and think it has alot of potiental. I noticed after posting that it got booted from a rumble match while fighting with shadow and sandBox for skipping turns. I will have to fix. --Jlm0924 06:12, 8 September 2009 (UTC)

v2.0b, is funtionally the same, the disabled wave surfing / tracking processing was commented out to try and speed it up a bit.. if you notice skipped turns I'd appreiciate the heads up.. (Dame slow bot :) I guess I should do everyOne a favour and learn kd trees. Any 'simple' code examples of them implemented to start learning from ??

This has a nice applet on k-d tree and quadtree. Try looking at Bucket PR k-d tree as it is faster than original kd-tree, also it has been used by this community =) Simple implementation... Voidious' kd-tree probably most readable 'simple' kd-tree code on this wiki but the Simonton's tree is probably more easier to understand, but with confusing code style. This tree was where I (and probably Voidious) used to learn from. Don't try Rednaxela's kd-tree if you are looking at anything simple =) PS. Could you please at least write about yourself and your robot? » Nat | Talk » 12:59, 8 September 2009 (UT--Voidious 19:56, 8 September 2009 (UTC)C)

Those applets are nice, but what I found most helpful when I was first learning was this. Also, pfft, this older revision of my tree is in my opinion the very most readable one out there Nat. PS, I agre with Nat, it would be nice if you make a page for your bot some time :) --Rednaxela 13:22, 8 September 2009 (UTC)

For what it's worth, the only thing I used for reference was the Wikipedia entry. =) Keep in mind that the tree won't magically solve your skipped turn issues. In fact, optimizing a brute force method might give better performance. Where the trees excel are in guns in longer 1v1 matches - you only get ~5,000 gun scans of each enemy in a 35-round Melee match (unless you start creating lots of extra gun waves, like I did recently...), and far less on the Wave Surfing side. Then again, Rednaxela's tree is really fast. Anyway, good luck. And yes, tell us about DemonicRage, already. =) --Voidious 13:40, 8 September 2009 (UTC)

My tests seemed to show most trees beating or doing just as well as your brute force one code when it was real data in use. Randomized data points lean heavily in favour of the brute force method actually. Still though, indeed the fewer scans of the melee case make the brute force approach not so bad really. :) --Rednaxela 14:03, 8 September 2009 (UTC)

I've annoyed at least one ex gf with my antiSocial robocoding obsession.. :) How do you create a page for a bot? --Jlm0924 19:50, 8 September 2009 (UTC)

There are several ways, but the simplest: click on that red link I put in my last comment; search for the page title you want, then click "create this page"; or just go to (with _ for spaces in the url) and click "edit this page". You can look at other bot pages for examples on how to lay stuff out. --Voidious 19:56, 8 September 2009 (UTC)

thx Void, --Jlm0924 00:24, 9 September 2009 (UTC)


If anyOne could temperarily post the source to HawkOnFire ( here is good) I would appreciate it . The repository seems to currently be down..-Jlm0924 15:19, 24 November 2009 (UTC)

File:Rz.HawkOnFire 0.1P.jar Here you go. --Positive 15:51, 24 November 2009 (UTC)
(edit conflict) Well, I know Positive has posted it, but as I have already prepared it: --Nat Pavasant 15:59, 24 November 2009 (UTC)
Thanks Guys !! -Jlm0924 16:12, 24 November 2009 (UTC)
DemonicRage 2.2d with HawkOnFires' targeting (maintains DRs movement and radar only) is availible, just waiting for Repository to be up to post.
I ran a few 100 round battles with 3 HawkOnFires, 2 Portia126fHoF, 2 DemonicRage2.2dHoF, 1 portia 126d, 1 DemonicRage2.2d, and 1 aleph. Portia126fHoF consistently beat HawkOnFire DR2.2dHoF and even aleph ! :)
DR2.2HoF beat the HawkOnFire
While Portia's score/survival is much higher than dr's...To my Surprise; The scores seem to indicate that DR's gun is on par with portias' :O I'll have to make a DemonHawk :P and see :)-Jlm0924 19:03, 24 November 2009 (UTC)
Well, one thing that may be worth noting, is I think that the gun is Portia's weak point by a notable margin. I don't have time to release something like GlacierHoF right now, but this weekend I might be able to do that. --Rednaxela 00:06, 25 November 2009 (UTC)
Yes that's true. Portia's gun is still relatively weak. I've tried to improve it a lot, but no luck so far. At least its 5% better APSwise that HOT. :) --Positive 00:19, 25 November 2009 (UTC)


Still down ... anyOne know why?? It's not just my end I hope :) -Jlm0924 00:23, 28 November 2009 (UTC)

I think everyone has had troubles with it. I suggest you open a google site to store your bots, that works for me. :) --Positive 21:10, 28 November 2009 (UTC)

rumble server error?

I noticed I have two bot's in the rumble that haven't been removed yet.. The server message is: 'the feature is temporary disabled.' is this on purpose, or is there an error somewhere? -Jlm0924

Probably because of the massive melee rescoring happening in the rumble (to clear out a huge number of bad scores) right now that will take a long while... Also, it's probably a bad idea to make any new melee releases during this time period I'd think, since their results won't be reliable and the system is already very stressed... --Rednaxela 00:26, 7 December 2009 (UTC)

ok, cool -Jlm0924 00:51, 7 December 2009 (UTC)

Surprisingly the stress is lower than I expected and the melee rankings appear to be recovering. But right now only my client is doing removals so that's why you're getting that message. And remember that bots can only be removed until at least 4hrs after their last battle, and they will normally keep getting battles until they reach full pairings. --Darkcanuck 07:32, 7 December 2009 (UTC)

Those colored bars

I've been meaning to ask: What are the blue , red, yellow colored bars on a bots tab represent ?? :) the lasted change in robocode also say it display's the memory a bot uses in the main title bar.. where ?? Thx :) -Jlm0924

In the titlebar of the program, saying something like "Robocode: Turn 7, Round 1 of 1000 (paused), Used mem: 23 of 493MB" About the bars, the green/yellow/red one represents the relative health of the bots, and the blue one represents the relative score for the round. --Rednaxela 19:54, 11 January 2010 (UTC)

Thx Red, The new mem feature isn't there for me, I'll try a fresh install.

Rednaxela's kd Tree

Hey Rednaxel, I've been trying to implement your tree. Was hoping for some guidance. I started by looking into Glacier and ported in your " utils.newTree.kdTree". I insert data into the tree with

scanned.kdTree.addPoint( loc , scanData);
then later-on I retrieve 100 similar like so
closestMatchingScanData.addAll(e.kdTree.nearestNeighbor( loc , 100, true)); "
which seems to work fine so far... I then later try to use the "scanData" that was inserted into the tree (within a loop) like so.
KdTree.Entry entry = closestMatchingScanData.get(i);
ScanData sd = (ScanData)entry.value;
There is the problem. The "ScanData sd" has a linked list that I would use to then Play-It-Forward. Am I wrong in thinking how the tree returns the data? or just a bad casting/code? Thanks for any help .. -Jlm0924

What is your problem? Your code looks fine. Just remember that the nearestNeighbor return in reverse order, so the entry with least distance come last. --Nat Pavasant 12:12, 26 January 2010 (UTC)

The code looks fine to me, except that casting isn't necessary since it uses generics. Use KdTree.Entry<ScanData> and remove that cast basically. --Rednaxela 13:42, 26 January 2010 (UTC)

DemonicRage performance in Robocode 1.7

On my localhost rumble server I'm using for testing Robocode 1.7 for issues, I've found that DemonicRage (both 2.5d and 2.5da) are under-performing by a huge margin in Robocode 1.7. As in: Near 100th place instead of being in the top 10. When I test it, I can't see anything obviously wrong (exceptions, skipped turns, etc) like happens with other bots that break in Robocode 1.7. To make things more puzzling still, it seems to score well when I put it in battle with a field of 9x HawkOnFire, so not sure. It may be related to this issue (which I don't quite understand the full implications of) but I don't know. --Rednaxela 03:52, 26 March 2010 (UTC)

I'm not at home right now (thou I did just roll back demonic to version 2.4 in the rumble before reading this) but I am very sure I use 1.7.1 for testing at home. I have not tried the new beta. Demonic 2.5x has been pushing the cpu limit with the dc gun that targets-all & PIF, without the speed of your kdtree yet. It is probably skipping turns. It doesn't yet limit the scans size, so It should start skipping at 40-50 rounds or so. (or with more bots.) Also... someone mentioned awhile back that robocode was not completely clearing static variables (mem) between battles... That is still true for me. I assumed that was never fixed in 1.7.1. and haven't checked lately to make sure it's not demonic. my java is limited to (buggy) bots :) but let me know if I can help.....-Jlm0924 08:57, 26 March 2010 (UTC)

As a quick note, DemonicRage 2.4a is not subject to the issues in Robocode 1.7 that DemonicRage 2.5 was. I'm currently suspecting it was the same cause as what was affecting Garm and DeltaSquad with that bug report I linked. --Rednaxela 05:03, 28 March 2010 (UTC)

Robocode 1.7.6 Bug Report

Can someOne with a sourceforge login report a bug ? When you use draw rectangles the second X,Y's are reversed.. The actualy rectangle is ok, only the draw is wrong. eg: This rectangle will display tall and skinney -Jlm0924 02:38, 11 May 2010 (UTC)

Rectangle2D.Double r = new Rectangle2D.Double(0,0,100,10);
Graphics2D g = getGraphics();

Actually Robocode is known to have problem with Graphics2D.draw/fill(Shape). There is problem with Arc2D.Double too, actually. I'll report this anyway. --Nat Pavasant 03:06, 11 May 2010 (UTC)

I have now fixed this problem. There sure was a bug with Rectangle2D and Arc2D. I have made a version of Robocode containing this fix, which you could try out to see if the bug has been fixed properly. Download it from here. --Fnl 20:48, 16 May 2010 (UTC)

sweet, thx guys -Jlm0924 15:03, 17 May 2010 (UTC)


I stumbled a while back on a page someone wrote about the proper ticks and timing for wavesurfing. I can't seem to find that page again. If someone knows the page i'm refering to, I'd greatly appreciate help finding it. thanks. -Jlm0924 16:50, 20 December 2010 (UTC)
Well, Wave Surfing Tutorial talks about it some, and oldwiki:EnemyWaves is another one I've used. I'm sure there are others, as this comes up from time to time. Or if you have specific questions, just ask, I think I remember most of this stuff... --Voidious 17:00, 20 December 2010 (UTC)


I've decided to put DemonicRage aside and start a new Bot based on him. I recently found a few pieces of broken code in DR and decided a complete rewrite was in order.. That way I can streamline, simplify and test from ground up. DR's wavesurfing is terribly ineffecient.. I simply flipped the DCGUN with little change.. It actually takes 30 or so of my similar states (enemywave) and (PIF) plays them forward to get my (past)locations .. which I used to build and then surf the wave. Talk about redundancy and waste of cpu time :P This time I will streamline/ simplify the melee surfing code.. Instead using traditional GF waves, I intend on using a 2d version. More along the lines of Area surfing that is uniquely precise and scaled by bulletTime. Now if I could only get some time on the home computer :).. -Jlm0924 22:05, 11 January 2011 (UTC)

Cool, good luck! It can help a lot to get a fresh start, especially when your understanding of Robocode/Java has progressed a lot since your initial design. I really like the name, too. --Voidious 13:02, 12 January 2011 (UTC)
Thanks Void, -Jlm0924
You'll never know how right your above comment was Void :P
So I've finally got the majority of Demon written. In the process I've found many coding bugs(in DR) which I fixed in Demon and found many improvements along the way. I completely re-organised the code structure, and learned alot in the process. Some mentionables: a handy Paint utily geared for debugging(like keeping text on screen and off the bot..ect)all painting and data collection is properly ticked (lots of bugs in this department , precise intersect for waves. While rewriting and cleaning the DCGun I some bugs and room for improvement..some i've implemented(like managing low data, and oldData senerios, when to fire improvements, fixed a bug that changed my bullet power between the time I aimed and shot, the new distancing learns quick now ) other improvement notes are spread throughout the code. Without a working movement, I threw in Hawkonfires' movement. DemonHawk had no problem consistently winning Hawk battles out of the gate. eg: demonHawk vrs diamondHawk or in melee: shadowHawk,diamondHawk, GlacialHawk, and DemonHawk.. (you need 4 or less for any consistency)) The revamped gun is certainly much better than DR's. I just finished getting DR's melee wave surfing working in Demon... The new waveData collection doesn't work with it properly yet, and it will take some time... Though it's fun to watch DR and Demon in a melee battle together.. Demon usually wins, alot less survial, and significantly more bulletDamage (and yes the guns are balanced the same, eg same bulletPowr).. On that note. The Hawk battles were interesting and clearly show how Shadow, Glacial, and Diamod balanced their guns for best balance with thier movement.. I'll never write this much again.Promise. :P -Jlm0924 03:18, 1 February 2011 (UTC)
Looking forward to seeing the results! As one note regarding Hawk battles, I expect only running with 4 bots or less drastically hurts Glacier's gun. It's segments are best tuned for early melee when various enemies affect eachother's movement much more heavily. ;) --Rednaxela 03:36, 1 February 2011 (UTC)

the stats smoothing and decay is now

well Demon is coming along , If I get some time tomorrow I think I'll throw a early version into the rumble and see how he does.. He may or may not perform as well as the current DR, but the code is better.. .. If with some luck it does better than DR, I'll yank DR out of the rumble being the intent of the code is similar. (Though Demon is not tweaked, he has quite a few upgrades, most of which were just broken in DR. cheers -Jlm0924 08:23, 11 February 2011 (UTC)
I did some last minute tweaking before throwing him in ,, looks like i did more harm than good.. ohwell. -Jlm0924


Is there an easy way to choose the starting positions of two bots in robocode? -Jlm0924 18:10, 15 January 2011 (UTC)

Well, there is a way. Create a .battle file the open. For example, see battles/intro.battle in the robocode install. :) --Rednaxela 22:05, 15 January 2011 (UTC)

I hope It's as easy as it sounds... Thx Rednaxela ! -Jlm0924 18:42, 16 January 2011 (UTC)

There are no threads on this page yet.