User talk:Jdev

From Robowiki
Jump to navigation Jump to search


Hello, Jdev, and welcome to RoboWiki! This place contain a wealth information about Robocode, from basic to more advanced. I hope you enjoy creating robots and being a robocoder!

If you are posting a comment on this wiki, please sign your messages using four tildes (--~~~~); this will automatically insert your username and the date stamp. If you are not familiar with MediaWiki, these links might help you out:

If you need help, check out the frequently asked questions or ask it on this page. Again, welcome!

—— Nat 12:37, 22 July 2009 (UTC)

Probably the funniest user page ever! It took me a while before I understand 'well come' as 'welcome'. --Nat Pavasant 06:25, 24 October 2009 (UTC)

Thank you) i'll fix "welcome") --Jdev 10:40, 24 October 2009 (UTC)

It isn't usualy form of communication for me, which used here. Anybody, please, say me which rules there're, where and what i can find here, where i can write, etc. I don't want irritate anybody) --Jdev 15:21, 24 October 2009 (UTC)

The only rule is 'Pretty please be polite'. It can be found on Readme page. You can do anything you want. I think all of us agree that 'common senses' is the second rule. If you do something wrong, then we'll fix it for you. I admit I have done a lot of wrong things on this before. Just learn from mistakes. --Nat Pavasant 15:30, 24 October 2009 (UTC)

Thank you) --Jdev 15:33, 24 October 2009 (UTC)

Welcome from me too, cool user page! :) --Positive 21:14, 24 October 2009 (UTC)

Thank you too) I glad, that robocode community is so newbie-frendly)--Jdev 21:18, 24 October 2009 (UTC)

Well, everybody started out as a newbie, some better than others. Without newbies, the community would slowly vanish. So, welcome, and I hope you turn out to become a veteran. ;-) --GrubbmGait 11:22, 25 October 2009 (UTC)

In the fact i'm already veteran - i robocoder from 2005) just only this summer i leave my computer and go search happy online) --Jdev 17:00, 25 October 2009 (UTC)

May be there're mean to do code review for published listings? i think, that public code review (code review done by community) is the best way to make code perfect. --Jdev 09:33, 28 October 2009 (UTC)

I don't think there is a need of the a 'published listing' if you mean to create new one. Normally I (and I think several other too) randomly read robot's code, and if we spot any bugs, we are kind enough to report them, not to humiliate the author =) In case that you mean to review the existing listing, I think I have enough work already... --Nat Pavasant 13:28, 28 October 2009 (UTC)

Just i read today this code PluggableRobot/Source and, IMHO, there're some not good decision. Also i'm Warrior of Perfect code and try to fight for it evrywhere) But i understand main idea - make it by yourself, but be polite) --Jdev 13:36, 28 October 2009 (UTC)

I agree that PluggableRobot's source isn't very good -- and if I am correct it won't run under Robocode which is use in RoboRumble (key line: _g = bot.getGraphics();) My (developing) robot is currently based on almost the same feature as PluggableRobot framework but with less and much (IMO) cleaner code. Another that may come into effect, is that someone can't read other people's code at all. --Nat Pavasant 13:59, 28 October 2009 (UTC)

Sorry for the late response, but your user page is awesome. =) And welcome to the wiki. About the code review, I don't think many Robocoders are so formal about publishing/reviewing code. (You are certainly welcome to try to organize formal code reviews, but most of us are probably too hooked on our own bots to participate much. =)) I imagine Robert would welcome any feedback you have, though, so you could certainly post it on the talk page. He hasn't been around for a bit, but I don't think he's gone forever. And of course, if you want, you could base a new framework on PluggableRobot, since it's licensed under RWLPCL. --Voidious 19:29, 28 October 2009 (UTC)

It's okey and thank you) and thank you one more time) Ok, i think that soon i will publish my own framework, as alternative) --Jdev 05:59, 29 October 2009 (UTC)

I really wanted to ask, what is that ')' you wrote? If you are using smiley, it should be either :-) or :) or =) etc.

One the point about the robot framework, I have looked into many different robots and I can't find any robot use any of existing frameworks (PluggableRobot and Module). Some ideas are borrowed, though... This is why I decided not to release my framework. (but I admit I really want to see your compare to mine) --Nat Pavasant 11:57, 29 October 2009 (UTC)

1) why "it sgould be"? it's just shortest form of smile) as you can see, i use it very often, so it's not bad optimization of my typig 2) hm... ok, then i will publish it's special for you) but it will be not very soon - now there're active phase of developing and i didn't refactor and code review yet --Jdev 12:10, 29 October 2009 (UTC)

Okay, I understand your point. But, maybe just me, when I see 'blah blah) blahblah) blah)' I would look before to find '('. But wonder, the '=' key is just two keys on the left of ')'.... Okay, I should s**t up about this. About the framework, if you want to see mine, just email me. (email on my use page) --Nat Pavasant 12:20, 29 October 2009 (UTC)

Okay, I understand your point=) yes, it's interesting for me. but i think, that it will be honestly, if i also show you my framework some time. may be i will not publish my code, but just email it's for you=) --Jdev 12:28, 29 October 2009 (UTC)

Last year i implement and discard 15 different guns (simple guns, genetics programming guns, random guns, PM guns, statistical guns, log based guns) and today start implement new one. Who implement more guns?:) it's so hard to "build the best, destroy the rest"...:) --Jdev 07:06, 17 March 2010 (UTC)

Hmm... well, in my early times Robocoding I implemented, 1) Head-on targeting, 2) Linear targeting, 3) Circular Targeting, 4) A crude pattern matcher, 5) a 'single-tick' pattern matcher as it's often termed, and 6) A rough attempt at using a hopfield neural net for a pattern matcher. None of those are in use anymore. More recently I've done, 7) RougeDC's DC-GF gun, 8) RougeDC's auxiliary PM targeting, 9) Some brief 'cluster tree' experiment that was never fit for real use, 10) A sort of targeting system in Polylunar to detect situations where a certain angle of fire is guaranteed to hit (falling back to I think linear when that gave no guarantee), 11) Antialiased/Interpolated VCS GF gun (aka SaphireEdge), and 12) Glacier's DC-PIF targeting. I think that's a full history of the targeting systems I've done over the years, the first half mostly being simple ones that I never kept. --Rednaxela 15:40, 17 March 2010 (UTC)

Also I have an idea about select gun for shot from guns array. But it was failed in my implementation and maybe anybody else will be more successive. Idea: you know, that gun has 10% hit rate, it's about one hit per ten shots. so, if gun wasn't hit in more than 10 shots, each miss will increment probability of hit with next shot, so you should select the gun, which have lowest hit rate in last time. i try to implement it, but i get little decrement of performance, while in theory it looks very good. --Jdev 20:44, 17 March 2010 (UTC)

I have thought about ways to account for the fluctuating nature of hit rates, but I think your idea is flawed. It sounds like Gambler's fallacy. I agree that VGs probably switch away from the better gun because of fluctuating hit rates all too often, but trying to adjust for that is not an easy task... --Voidious 21:12, 17 March 2010 (UTC)

Yes, against typical random movement, this is exactly the "Gambler's fallacy" which is why it doesn't work. One note is that this is not technically the gambler's fallacy against bots with non-'perceptual' movement, but except but against active flatteners or surfers probably has no chance of helping. Against active flatteners and surfers, I suspect there that attack the issues against them more directly instead of just happening to switch guns when the surfer doesn't expect it. ----

I'm not complectly agree. For example you have HOT and Circular guns. One will hit enemy in corners, while another in else situations. so if you hit by one gun some times, it's time to switch gun. But may be there're too much trivial example. Any way, i think that it's better to share an idea) --Jdev 07:53, 18 March 2010 (UTC)

If you're talking about against random movers, that IS the gambler's fallacy. If you're talking about bots with varied but non-random (or poorly randomized) movement, then yes it could work out in some scenarios but not because of why you said. If you flip a coin, and by luck get 'heads' 5 times in a row, your chance of getting 'tails' next is still 50/50, no higher. --Rednaxela 12:19, 18 March 2010 (UTC)

ok, let's it will be so - i'm not sure in it so much, to disput about it) --Jdev 12:53, 18 March 2010 (UTC)

hi to all. i have a bug in my radar code and cannot fix it. Code:

            LXXPoint enemyPos = lastUpdated.getPosition();
            double radarTurnDirection = signum(Utils.normalRelativeAngle((angleTo(enemyPos) - getRadarHeadingRadians())));
            if (Utils.isNear(radarTurnDirection, 0)) {
                radarTurnDirection = 1;
            System.out.println("[DEBUG]: radar turn direction = " + radarTurnDirection);
            System.out.println("[DEBUG]: Angle to enemyPos = " + toDegrees(angleTo(enemyPos)));
            System.out.println("[DEBUG]: radar heading = " + toDegrees(getRadarHeadingRadians()));
            double radarTurnAngle = Utils.normalRelativeAngle((angleTo(enemyPos) + (Rules.RADAR_TURN_RATE_RADIANS / 2) * radarTurnDirection) -
            System.out.println("[DEBUG]: radarTurnAngle = " + toDegrees(radarTurnAngle));
            if (abs(radarTurnAngle) > Rules.RADAR_TURN_RATE_RADIANS) {
                radarTurnAngle = Rules.RADAR_TURN_RATE_RADIANS * radarTurnDirection * 0.99;
                System.out.println("[DEBUG]: radarTurnAngle = " + toDegrees(radarTurnAngle));

            lastRadarTurnDirection = (int) radarTurnDirection;


radar turn direction = -1.0
Angle to p = 237.94483339133959
radar heading = 260.4730460891953
angle = -45.02821269785571
angle = -44.550000000000004 - turn radar on 44 degrees
radar turn direction = 1.0
Angle to p = 237.95354219349272
radar heading = 235.44087274677435 - but in fact 260.47304608919535 -  235.44087274677435 = 25 degrees
angle = 25.012669446718338

it seems like bug in robocode, but i think, if it was so, then this bug was already fixed.

Most part of time, this code works fine, but in rare and unknown envorinment it's produce log like upper.

Any suggestions?:) --Jdev 15:55, 8 June 2010 (UTC)

Just update --Jdev 16:49, 17 June 2010 (UTC)

Hm, sorry I didn't look at this close enough before but I think I see the problem. Robocode is behaving correctly, however one must realize that Rules.RADAR_TURN_RATE_RADIANS is the maxiumum radar turning rate relative to the gun turret, and the max gun turret rotation is relative to the body rotation. Even if you use setAdjustGunForRobotTurn(true) and setAdjustRadarForGunTurn(true), the maximum turn still depends on how much the gun and body are moving. One quick note, is to my knowledge very few bots take advantage of this. One of the few being my melee bot Glacier, which uses gun turning when not firing in order to boost how wide a radar arc it can make. --Rednaxela 19:30, 17 June 2010 (UTC)

Thank you very much! It's the answer. I read it in javadocs, but because my english skill dont understood it correctly:) --Jdev 19:51, 17 June 2010 (UTC)

Just collaboration: Method Rules.getTurnRateRadians(velocity) return correct values (real possible turn rates), only if the velocity is in interval [0, 8] and it returns incorrect values for arguments like -16, -8, -2, 10, 15 etc.

So be careful and don't repeat my mistakes) --Jdev 19:01, 22 June 2010 (UTC)

Kamikadze challenge:)

Today while I tweaking my tank movement i've made a bug, so my robot began perfectly catch enemy bullets by his body:) When i seen this, i thought about kamikadze challenge - the goal of challenger is take as many hits as possible:) --Jdev 06:33, 23 June 2011 (UTC)


Thread titleRepliesLast modified
Missed bots406:01, 23 September 2014
Jdev's R-Tree511:39, 18 September 2014
Target Java version for bots410:07, 17 September 2014
New computer and robot618:42, 19 September 2012
How to get 55% hidden in DrussGT020:36, 11 July 2012
GoTo surfing vs True Surfing522:05, 8 December 2011
2100111:43, 19 October 2011

Missed bots

Can any body give me following valid bots jars, so i can stabilize ratings by myself

  • ArchAlpha.ArchimedesAlpha_1.0.jar
  • divineomega_PatrollerBot_1.0.jar
  • ep.MyFirstRobot_1.0.jar

Or may be we can remove them

Jdev (talk)14:57, 22 September 2014

Well if the link for them is down, I would say remove them. But other robots have been hosted after their original link died.

I personally do no have them, so I cannot be any help in that regard.

Chase20:17, 22 September 2014

I just checked my rumble client cache, surprisingly it is exactly one year old. None of the robots in question are present in the cache. Though someone updated their rating on 2014-08-31, that someone must have their copies. It looks like MN was submitting around that time, may be his/her cache is older than mine and has copies of the bots.

I also cannot locate the divineomega_PatrollerBot_1.0.jar rumble rating at all.

May be we need a peer enabled rumble server, so it has all the copies of robots which ratings are submitted and can push it back to clients.

Beaming (talk)01:58, 23 September 2014

divineomega_PatrollerBot_1.0 is available but had invalid name - i fixed this. And I'm going to remove ArchimedesAlpha_1.0 and MyFirstRobot_1.0 - rollback my changes, if someone against this

Jdev (talk)05:54, 23 September 2014

ArchimedesAlpha_1.0 and MyFirstRobot_1.0 are available, but dropbox links was broken

Jdev (talk)06:01, 23 September 2014

Jdev's R-Tree

How fast is your R-Tree Jdev? and would it be possible for Skilgannon to create a faster R-Tree? The only range search comparision possible is Chase's Kd-Tree, to Jdev's R-Tree.

Tmservo (talk)09:41, 18 September 2014

My R-Tree is fast enough for me:) There is on robowiki rough comparsion of range search vs kNN search.
Skilgannon for sure can create faster R-Tree, i think:)
I don't think, that there is fair way to compare speed of R-Tree and KD-Tree, because quite different purpose of them - R-Tree optimised to search for unknown amount of points in strict region, while KD-Tree optimised to search for exact amount of points in unbounded region.

Jdev (talk)10:27, 18 September 2014

Here is that discussion

Jdev (talk)10:39, 18 September 2014

What do CHILDREN_COUNT, and RTreeEntry, each do? Can they be optimized like bucket size? Do you see any optimizations to the R-tree Jdev?

Tmservo (talk)11:06, 18 September 2014

CHILDREN_COUNT - it's split factor, or how many subrectangles will be generated, when current rectangle are overflowed
RTreeEntry... hmmmm... it's entry of range search tree:) It represents data point in turn snapshots space and thing that are added to tree and search for which tree are used.
I think, that CHILDREN_COUNT can be optimised for particular spaces based on theirs natures
I don't know. It was 4 years ago and i do not remember anything

Jdev (talk)11:18, 18 September 2014

Here's some words to use ctrl f on to help you remember

RTree parent 
Tmservo (talk)11:36, 18 September 2014

Target Java version for bots

Hi all! I broke the arm so, i back for awhile:) I cannot find actual required java version - it still 1.6 or i can compile my bot with 1.7?

Jdev (talk)16:55, 16 September 2014

I'm using 1.8, so I don't think 1.7 would be a problem.

Sorry to hear about your arm, hope it heals quickly.

Sheldor (talk)18:06, 16 September 2014

The more important question is which java version is run by clients of a rumble. If your bot is compiled with newer version and the rumble client runs with older java, it will simply refuse to start a battle with your bot. So you will get your stats slower if ever.

I personally run everything with version 7 of the open jdk.

Beaming (talk)03:02, 17 September 2014

Ok, thanks, i just understand that best way to determine max possible java version is to check class version of few active bots

Jdev (talk)10:07, 17 September 2014

You compile bots with target version 1.8 or run rrc on java 8?
Thanks, actually it happen 4 weeks ago, so i hope, that arm immobilization will be cancelled next week

Jdev (talk)10:03, 17 September 2014

New computer and robot

I bought new computer for robocoding: i7 3770, 16gb ram, SSD disk for system (who says, that it's free game?) and it's tests Tomcat in four times faster, than my old netbook and work computer together. So i decide to start development of new robot - Violet. It will duel specialist, initially based on Tomcat without multiple enemies support and with completly new true surfing movement. In future i have some ideas to write completly new movement logs and targeting systems. Comming soon on RoboRumble...:)

Jdev09:00, 19 September 2012

Wow, sounds like fun! Looking forward to welcoming Violet to the rumble. Good luck. =)

Voidious16:08, 19 September 2012

Thanks, i hope, that first release will be at this weekend:)

Jdev18:37, 19 September 2012

Nice, I have a new i7 too. Tested the speed for Roborumble this week, delivering 3 times as many battles in half the time :D Now find the time to do some serious developing/testing.

GrubbmGait18:31, 19 September 2012

It is an indescribable feeling, is not it?:) Good luck with your development:)

Jdev18:39, 19 September 2012

The i7-3770 with 16 GB is exactly what I got a couple months ago too. Amusingly, I also just got a Raspberry Pi, for 1/20th the price, and that's what I've been playing with for the past 3 weeks while the i7 cranks away at the RoboRumble. =)

Voidious18:37, 19 September 2012

Intel must pay salary to Flemming and Pavel:)

Jdev18:42, 19 September 2012

How to get 55% hidden in DrussGT

Since it's funny, i decide to contune little offtop started here: [1] (sorry, i cannot find how to make normal link)

Actually it's pretty ease to get this hidden points, because DrussGT is open source and you can exactly emulate his gun, if include it in yours robot:)

Jdev20:36, 11 July 2012

GoTo surfing vs True Surfing

Here are so quiet on wiki todays, so i will try to troll a little:) Now i just in one step to change my movement mechanics to True Surfing, but i think, that gap between Diamond and DrussGT may be reasoned by movement's mechanics difference. Yours opinions?

P.S. I still here and developing Tomcat every day, but do not do releases every day, just because i notice, that with fair CPU-constant, Tomcat skip several hundreds turns per battle and can not find way to optimise him without performance loses.

Jdev17:28, 8 December 2011

I can almost guarantee most of the APS difference is due to movement, as opposed to gun. But I'm not at all convinced it's as simple as GoTo vs True Surfing. I think DrussGT could probably be just as strong with a True Surfing algorithm. I also think it would take me a while to get a GoTo algo to perform as well as my True Surfing, and vice versa for Skilgannon. It has been in the back of my mind for years, though... Maybe I'll try GoTo eventually?

Most likely, I think it's a bunch of smaller things - maybe better bullet power selection, better tuned surf stats, more effective surfing algorithm, better handling of a few special cases (like anti-ram), less (or less harmful =)) bugs. DrussGT is just badass. =)

PS - Also actively developing here, but no reason to release until I have enough to show for it.

Voidious21:03, 8 December 2011

Thanks for response - I compectly agree that DrussGT is badass:)
And i pretty sure, that Tomcat's APS leak is in gun:)
Also, i notice today, that Diamond now use similar with Tomcat scheme of enery managment. And now they can spend hours hitting each other with low power bullets with energy less than ~20:)

Offtop: Help me to understand english little more:) for me word "badass" sounds very rough, but since you use it, i think i misunderstood it "strength". Can i use this word in conversation, for example, with children?

Jdev21:42, 8 December 2011

Well, I probably wouldn't say "badass" around young children, but it's not very vulgar. It is pretty casual / not formal / slang, though - I wouldn't use it in a paper for school, but I wouldn't expect to get detention if I said it on front of a teacher either. =)

Voidious21:52, 8 December 2011

Thanks for levelup:)

Jdev21:55, 8 December 2011

And more, Skilgannon, befare i agree with Voidious, that DrussGT is badass, i translate this word with Google and he shows word, which can be used by good teacher in kindergarten, so i did not want to be rough (vulgar?):)

Jdev22:05, 8 December 2011

Nice work! We've had 2 new entries to the 2100 club recently... they seem to come in waves =)

Skilgannon11:38, 19 October 2011

Thanks:) I think, that we push each other to top:)

Jdev11:43, 19 October 2011