Difference between revisions of "User talk:Voidious"

From Robowiki
Jump to navigation Jump to search
(→‎Choice of license: Skilgannon for president)
m (archive talk, add links)
(34 intermediate revisions by 13 users not shown)
Line 1: Line 1:
==Point2D Help==
For old discussions, see [[Archived talk:User:Voidious 20071111]] and [[Archived talk:User:Voidious 20110909]].
Hey. I'm trying to debug my Anti-Gravity Movement I'm working on implementing into [[GITS]]. I'm trying to draw a circle with Point2D, but I can't get it to compile. The code I'm using is <code>drawCircle(java.awt.Point2D.Double, int, java.awt.Color);</code>. I just want to know if I'm doing it right. Thank you --[[User:J Litewski|HACKhalo2]] 19:47, 21 May 2009 (UTC)
Hey dude - I'm guessing you saw that method in Dooki's DookiCape.java? I derived my drawing code from [[User:David Alves]]' DrawingBot (not migrated yet, see {{OldWiki|David_Alves/DrawingBot}}), which is similar to [[User:Nat/DrawingBot]]. Basically, you would need something like this to support that call:
private static Vector _renderables = new Vector();
public void onPaint(Graphics2D g) {
    Iterator i = _renderables.iterator();
        Renderable r = (Renderable) i.next();
public static void drawCircle(Point2D.Double center, double radius, Color color){
    _renderables.add(new Renderable.Circle(center, radius, color));
...plus the Renderables class from DrawingBot (linked above). Does that help / make sense? --[[User:Voidious|Voidious]] 20:08, 21 May 2009 (UTC)
== Redirects ==
Hey, thanks for fixing all those redirects. I never knew that you had to do that to remove them from the category listings. --[[User:AaronR|AaronR]] 03:17, 12 November 2007 (UTC)
== Misc Chatter ==
Why not you run more TwinDuel now? I'd like to participated it. --[[User:Nat|Nat]] 07:50, 4 January 2009 (UTC)
Hey, have you read my message? Look [[User_talk:Nat#New_Thai_RoboWiki|here]] &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 09:24, 25 March 2009 (UTC)
So I see Nat said he'd be interested in the TwinDuel - is anyone else still interested? If I recall correctly, I needed to update my automation for newer versions of Robocode, but that shouldn't be a problem when I get some time. I've definitely been getting the itch recently to do some real Robocoding again, but I'm afraid that if I start, none of the rest of the wiki migration stuff will ever get done. =)
And whether just for TwinDuel or for some active Robocoding, I really need to either explore this "Soy Latte" version of Java 6, or find another machine to work on, as I've come to accept that I will never see Java 6 on my Mac. =(
--[[User:Voidious|Voidious]] 14:58, 23 April 2009 (UTC)
Thanks for reply. I think I add that comment very first day on this wiki ;D I don't really think the migration stuff will never finish even you start robocoding again. I'm currently take a pause from developing robot for migration work (and few other reasons) But, do you think I should finished Challenge 2K9 before start my own migration work? Does robocode require Java 6?  &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 15:23, 23 April 2009 (UTC)
: I don't know, I think that's up to you about Challenge 2K9. I haven't really read all the Challenge 2K9 info yet, but I'll try to soon. No, Robocode doesn't require Java 6, but some people use Java 6 in their TwinDuel bots, and it feels silly at this point to require people not to use Java 6 just because I don't have it on my Mac! --[[User:Voidious|Voidious]] 15:54, 23 April 2009 (UTC)
:: If you have time, please help me doing the thing on Komarious. I want it to controlled distance at 450 (using Dookious AgressiveDistanceController), surf non-firing wave (rolled at 1, weight 1/6), surf hit (rolled at 0.8, weight 2), surf visit (rolled 1, weight 1) from Komarious 1.78 please? Thanks. &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 16:08, 23 April 2009 (UTC)
I used SoyLatte successfully until I upgraded to Leopard (which has an optional 1.6 install).  Let me know if you ever want to integrate TwinDuel into the rumble.  --[[User:Darkcanuck|Darkcanuck]] 15:35, 23 April 2009 (UTC)
: Wow, cool, thanks for the info! I definitely heard of a developer beta at some point, but I think it was only for 64-bit processors, and I'm still on a 1st gen MacBook. Looking to upgrade soon, though, so maybe Java 6 is one more thing I can look forward to there. =) --[[User:Voidious|Voidious]] 15:54, 23 April 2009 (UTC)
:: You're probably right about 64-bits -- mine's one of the first 64bit models.  Buy SoyLatte worked great under X11 last time I tried. --[[User:Darkcanuck|Darkcanuck]] 16:41, 23 April 2009 (UTC)
: And a TwinDuel rumble sounds very appetizing! The scoring is the only kind of weird thing, since it's survivalist, ignores total score, and is 75 rounds. If we could make the ELO + Glicko + PL stuff look at % rounds won instead of % total score, that would seem more "right" to me. But even just a 2v2 team battle on an 800x800 battlefield with all the normal scoring could be cool, too, if all of the "weird scoring" is a problem. --[[User:Voidious|Voidious]] 15:54, 23 April 2009 (UTC)
: (Edit conflict) I'm curious, can roborumble client handler the 2000-bytes thing? And will 75 rounds take too long on the client? I don't know really that will anyone run battle for it. MeleeRumble and TeamRumble get only little battles before Deewiant come along with melee rumble, then GrubbmGait start to run team rumble. &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 16:01, 23 April 2009 (UTC)
:: We would have to modify the client to add the new game type and maybe work out a modified version of scoring.  The new server does have a % survival scoring option though.  With a low number of participants, it wouldn't require much client processing time (less than melee rumble for sure).  --[[User:Darkcanuck|Darkcanuck]] 16:41, 23 April 2009 (UTC)
Do you have any planned with any of your robots now? [[Dookious]] hasn't been updated for an ages. &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 14:08, 12 May 2009 (UTC)
: Well, rest assured that I'm working on something. =) I'm not sure when it will be released, maybe a couple more weeks? As for my existing bots, I don't have specific plans, but they have all been on my mind. I will definitely get back to Dookious sometime -- I can't let Skilgannon have all that fun all by himself. --[[User:Voidious|Voidious]] 14:20, 12 May 2009 (UTC)
Testing e-mail notification when I edit a page on my watchlist.... --[[User:Voidious|Voidious]] 23:08, 22 July 2009 (UTC)
The page [[Special:AllMessages]] isn't accessible. Just FYI, I don't think I need to use it. And the only solution is to increase the PHP's memory_limit. I always set to unlimited (0) on my machine and on my host (well, I don't really care if the script stole other site that hosted on the same server memory), but you have, let see, 256MB of RAM? Are you still using David Alves' server or the Vic's one (the old server)? &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 14:45, 23 July 2009 (UTC)
Hey, I see that you're on the wiki right now; could I get your opinion on whether my nanobot [[User Talk: CrazyBassoonist|SavantWS]] is a real wavesurfer? So far I've got one yes and one no, and you've been wavesurfing for longer than most of us. I'd like to hear what you think about it--[[User:CrazyBassoonist|CrazyBassoonist]] 01:56, 31 July 2009 (UTC)
Just a quick note that I've disabled the "rollback" link for sysops, so I won't be accidentally clicking it any more... sorry about that. --[[User:Voidious|Voidious]] 18:59, 8 September 2009 (UTC)
== Segmenting Help ==
I WILL NOT GIVE UP!  I'm going to keep trying!  I need a bit of help.  I understand wave surfing much better now because of the tutorial you made.  Thanks!  In the [[GuessFactor Targeting Tutorial]], it teaches you what to change to segment it.  Very useful.  I've segmented my GF gun with distance, velocity, etc. already.  However, I only see part of what I have to change in the wave surfing code.  Could you give a simple example in the tutorial to help me?  Thanks. -- [[User:Awesomeness]]
Sure, here's a real simple example. Let's say you want to segment your surf stats on distance. Let's go real simple and just segment into "distance < 300" and "distance >= 300".
* In your instance variable declarations:
** <code>public static double _surfStats[] = new double[BINS];</code>
** becomes <code>public static double _surfStats[][] = new double[2][BINS];</code>
* You need to track distance at fire time in your EnemyWave class now.
** In the EnemyWave class definition, add <code>double distance;</code>
** In <code>onScannedRobot</code>, where you detect the bullet and initialize the EnemyWave class, add <code>ew.distance = e.getDistance();</code>
* In <code>logHit</code>:
** <code>_surfStats[x] += 1.0 / (Math.pow(index - x, 2) + 1);</code>
** becomes <code>_surfStats[ew.distance < 300 ? 0 : 1][x] += 1.0 / (Math.pow(index - x, 2) + 1);</code>. (That's an inline if/else statement, you don't have to do it like that if you don't want. Just need to use 0 or 1 for the first array index, depending on the distance.)
* Similarly, in <code>checkDanger</code>:
** <code>return _surfStats[index];</code>
** becomes <code>return _surfStats[surfWave.distance < 300 ? 0 : 1][index];</code>
Basically, any information you want to segment on, you would store that information in your wave class. Then whenever you access your _surfStats, you use that data to come up with the array indexes. Effectively, you end up with a bunch of surfStats[] arrays, one for each situation (segment). Make sense?
--[[User:Voidious|Voidious]] 01:05, 7 May 2009 (UTC)
There is another way doing this. I'm not using that way because it more complex. I use the magic of reference to do the thing similar to the one in [[GuessFactor Targeting Tutorial]]:
* In your instance variable declarations:
** <code>public static double _surfStats[] = new double[BINS];</code>
** becomes <code>public static double _surfStats[][] = new double[2][BINS];</code>
* You need to reference the new segment in your enemy wave now.
** In the EnemyWave class definition, add <code>double[] stats;</code>
** In <code>onScannedRobot</code>, where you detect the bullet and initialize the EnemyWave class, add <code>ew.stats = _surfStats[e.getDistance() < 300 ? 0 : 1];</code> (That's an inline if/else statement, you don't have to do it like that if you don't want. Just need to use 0 or 1 for the first array index, depending on the distance.)
* In <code>logHit</code>:
** <code>_surfStats[x] += 1.0 / (Math.pow(index - x, 2) + 1);</code>
** becomes <code>ew.stats[x] += 1.0 / (Math.pow(index - x, 2) + 1);</code>.
* Similarly, in <code>checkDanger</code>:
** <code>return _surfStats[index];</code>
** becomes <code>return surfWave.stats[index];</code>
(copy from yours, [[User:Voidious|Voidious]]) This way if you are adding more segment, you just need to change only one place (vs. 2 places). Actually I done the <code>ew.stats = _surfStats[ew.distance < 300 ? 0 : 1];</code> thing in constructor of EnemyWave class (by assigning the data to the global variable first of corse). &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 15:13, 7 May 2009 (UTC)
== Time to upgrade ==
Hi Voidious. I think the upgrade time has come. Please upgrade soon. Thanks. I know you are backing the database up, but first you need is "Wiki Lockdown" <!-- like:
$wgGroupPermissions['*'    ]['edit']            = false;
$wgGroupPermissions['*'    ]['createpage']      = false;
$wgGroupPermissions['*'    ]['createtalk']      = false;
$wgGroupPermissions['user' ]['move']            = false;
$wgGroupPermissions['user' ]['edit']            = false;
$wgGroupPermissions['user' ]['createpage']      = false;
$wgGroupPermissions['user' ]['createtalk']      = false;
$wgGroupPermissions['user' ]['upload']          = false;
$wgGroupPermissions['user' ]['reupload']        = false;
... will totally lockdown for anonymous and registered user. (LocalSettings.php) --> or your backup will never present. &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 15:21, 7 May 2009 (UTC)
Soon. =) Probably tomorrow, as I'll be on the away from the computer this evening. --[[User:Voidious|Voidious]] 15:50, 7 May 2009 (UTC)
== public class EnemyWave ==
Awesome basicsurfer tutoral.
Could you edit class EnemyWave to be public class EnemyWave?  APIs freak out otherwise.
Thanks! <small><span class="autosigned">—Preceding [[wikipedia:Wikipedia:Signatures|unsigned]] comment added by [[User:Mageek|Mageek]] ([[User talk:Mageek|talk]] • [[Special:Contributions/Mageek|contribs]]) </span></small>
You can changed it yourself. Robocode's robots don't need API, their classes cannot be used outside (unless you count when someone copy it over). &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 08:27, 23 May 2009 (UTC)
I'm not sure what you mean by "APIs freak out"? You could define it differently, eg as a public class in its own file, but it worked fine as it is last I checked. If there is some reason it should be changed, though, I'm all for it... Glad you liked the tutorial, good luck! Feel free to make a page for yourself and tell us about your bots. --[[User:Voidious|Voidious]] 19:06, 23 May 2009 (UTC)
== Robot's Image ==
Voidious, I'm wondering why do you uploaded those images ([[:File:Phoenix3.jpg]] & [[:File:Silversurfer05.jpg]])? It seems to be robot's image. But you didn't migrate those pages ([[Phoenix]] & [[SilverSurfer]]) &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 15:53, 14 July 2009 (UTC)
It is because I intended to migrate the pages, I just haven't actually done it yet. =) They are the [[Special:WantedPages|most wanted pages]] right now. --[[User:Voidious|Voidious]] 17:01, 14 July 2009 (UTC)
== User welcoming ==
Hi Voidious, I noticed that lately you also welcome all new robocoders (usually after I insert that template) in your own test that mean the same. I wonder why don't you make changes to the template {{tl|Welcome}}, you are welcome to use it to welcome people instead of your writing. The usage is describe on its page. This is applied to all other Robocoders who might read this too.
It just feels a little more personal to me. It's not like we get that many new users, I can take a minute to say hi. =) Your welcome template is fine, too, it contains some good information. --[[User:Voidious|Voidious]] 17:37, 16 July 2009 (UTC)
You can post both the template and personal welcome. I sometimes did that too. I'm not 24/7 robot so I'm not active all the time. OK, all I asked is that when you welcome users using your own text and I haven't put that template on yet, you are very welcome to put that template in (on? which preposition to use here?). Thank you in advance. --Nat
Ok, will do. As for correctness, I think "to put that template onto the page" would be technically correct, but if you leave out "the page", then "to put that template in" sounds right to me, though "on" does not sound wrong. I'm not sure I can even explain why -- English is really weird. --[[User:Voidious|Voidious]] 14:18, 17 July 2009 (UTC)
Thank you. I did go over my sheet on preposition several time and can't find the right one. So you see why I am not sure which one to use. Both "in" and "on" don't sound wrong... You may noticed that I use both "on" and "in" in that sentence, bad I know. &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 14:27, 17 July 2009 (UTC)
== Rumble Help ==
Voidious, since you've been so helpful...  I created a new version without the faulty call.  I've uploaded it to the repository, deleted the old one, and changed the participants in the wiki to point to the new one (1.1 version).  But the server keeps using the old one?  Am I doing something wrong?  Thanks!
--[[User:Borkstation|Borkstation]] 13:15, 17 July 2009 (UTC)
The rumble clients update its list every 2 hours, and the server will allowed clients to remove the bot after four hours of no updates. You need to wait for about an hour more to watch the result. &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 13:19, 17 July 2009 (UTC)
Yeah, as Nat said, a running rumble client only updates its list every 2 hours or so. Also, once a bot has a certain number of battles (50 I think?), the server will try to run battles for it until it completes all its pairings, even if it is removed (so it might run both versions until then). I see my client (which I just fired back up) is running [[BoxCar]] 1.1, so it should be getting steady battles at this point. --[[User:Voidious|Voidious]] 14:27, 17 July 2009 (UTC)
Thanks guys.  I'm really just getting started and trying to create a bot that doesn't stink before I jump into anything complicated.  You've all been a great help.
--[[User:Borkstation|Borkstation]] 15:24, 17 July 2009 (UTC)
== Upload directory not writable ==
Old problem arise, I can't upload again =( &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 04:21, 19 July 2009 (UTC)
: Ok, could you try again please? --[[User:Voidious|Voidious]] 04:25, 19 July 2009 (UTC)
:: Thanks, fixed. &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 04:33, 19 July 2009 (UTC)
== OutOfMemoryError ==
Hey Voidious, have you change the server? It seems that the memory_limit PHP configuretion is lower than it used to be. I got PHP's fatal error when I tried to add the header to Shadow's archived talk page. I must use dummy header to successfully add them. Please fix soon, remember that MediaWiki need at least 96MB. &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 12:10, 25 July 2009 (UTC)
== wget on dijitari.com ==
Heya Voidious, is it known/intended that trying to do a wget on [http://www.dijitari.com/void/robocode/voidious.Diamond_1.252.jar http://www.dijitari.com/void/robocode/voidious.Diamond_1.252.jar] fails with a 403 error while using firefox or the rumble client does download it successfully? Doesn't really matter but it did leave me in confusion for a moment :) --[[User:Rednaxela|Rednaxela]] 05:47, 6 August 2009 (UTC)
: No, not known nor intended. I didn't even know what "wget" was until this morning. =) I'm curious now, though, so I'll look into it when I get a chance (if I can remember)... --[[User:Voidious|Voidious]] 13:07, 6 August 2009 (UTC)
== Modifying Diamond question ==
Hey Voidious, I guess it's okay, but I feel it's proper to ask: Do you mind if I turn off some debugging graphics (the t-... thing) in Diamond and use it as a wavesurfing demonstration in a youtube video? :) --[[User:Positive|Positive]] 20:29, 14 August 2009 (UTC)
: Of course not! =) You may have already seen, but there are variables in the gun, radar, and movement classes to disable all graphics within that class. --[[User:Voidious|Voidious]] 20:37, 14 August 2009 (UTC)
: [http://www.youtube.com/watch?v=dqHmp_kMz-U Here you go] :).
== Re: "stupid #@$% iPhone" ==
I know your pain. The autocorrect when typing is also a pain when typing rarely typed acronyms :) --[[User:Rednaxela|Rednaxela]] 15:11, 15 August 2009 (UTC)
Hehe. Yeah, I adore my iPhone, but sometimes the browser wigs out and totally clicks the wrong place - I think it's scrolling before noticing the click or something, as the touch is usually super accurate. I wish reverting edits required confirmation, too, as I've done that several times now. I hear ya on the autocorrect, but I must say it's pretty cool that it has learned (and even suggests) my favorite swear words now. =) --[[User:Voidious|Voidious]] 15:17, 15 August 2009 (UTC)
You can always create another user for admin and remove sysop right from your username. That will cause the rollback link to disappear I believe =) Just kidding. (Note: but it will disappear) &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 16:38, 15 August 2009 (UTC)
== Wierd scores ==
Hi Voidious! I'm glad you liked my bot. However i'm thoughtful about why your own bot is performing so much better on your own computer then everyone elses.
Check the stats page:
On your client my bot scores about 40% while on other clients my bot scores >70% --[[User:Rsim|Rsim]] 18:27, 15 August 2009 (UTC)
Hmm, I have no idea. It could just be luck, that's only a few battles. I'll try running some more battles between them with and see what happens. --[[User:Voidious|Voidious]] 18:33, 15 August 2009 (UTC)
Ok, 25 battles on my main machine (MacBook, SoyLatte Java 6) had a range of 53-85% and an average of 69%, BulletCatcher winning. But on my Linux box (OpenJDK 6), Komarious wins with ~70%. Maybe there is something about Robocode's bullet collision that is JVM dependent? Is anyone else on Linux that could give this a try? --[[User:Voidious|Voidious]] 18:50, 15 August 2009 (UTC)
: You could try a more controlled experiment on your machines by running the same start positions and random seed on both machines.  In theory you should get an identical result on both?  --[[User:Darkcanuck|Darkcanuck]] 19:00, 15 August 2009 (UTC)
:: I've never done that before... Any pointers on how I'd go about configuring that? The scoring discrepancy between the two is large and consistent enough that I'm already convinced there is one, but it would still be a good test. --[[User:Voidious|Voidious]] 19:06, 15 August 2009 (UTC)
::: Never done it myself, but I think it's what [[Fnl]] uses for testing and also how the engine handles replays.  I know there's a command-line option <code>-DRANDOMSEED</code> (from the robocode.jar usage text) to preset the random number generator.  And if you run using a saved battle file there's a property called <code>robocode.battle.initialPositions</code> that lets you set the initial positions and headings (although I'm not sure of the syntax/format). --[[User:Darkcanuck|Darkcanuck]] 19:29, 15 August 2009 (UTC)
Hmm... the nature of BulletCatcher leads me to believe that this discrepency is due to a CPU or JVM dependent rounding error perhaps... Hopefully we can get this sorted out --[[User:Rednaxela|Rednaxela]] 20:31, 15 August 2009 (UTC)
Having BulletCatcher in Voidious excluded list would make me happy while this is beeing sorted out :) --[[User:Rsim|Rsim]] 20:44, 15 August 2009 (UTC)
: No problem, done. --[[User:Voidious|Voidious]] 20:48, 15 August 2009 (UTC)
To compare, my computer shows BulletCatcher averaging 73.25% over 8 matches, using Sun JVM 1.6.0 on Linux. I'll test with OpenJDK in a moment. --[[User:Rednaxela|Rednaxela]] 20:57, 15 August 2009 (UTC)
: Over 8 matches with OpenJDK 6 on Linux, the average is 74.5% in favor of BulletCatcher still. Whatever this issue is, it's neither the fault of OpenJDK 6, Linux, or Robocode Maybe the processor on that box has a rounding bug issue or something? I don't know what else to think. --[[User:Rednaxela|Rednaxela]] 21:29, 15 August 2009 (UTC)
: I'm still seeing mostly Komarious wins under the Sun JVM 1.6.0, but with 50-60% scores, compared to the 70-80% scores I see under OpenJDK. There's definitely a difference between them on this machine. I switched to OpenJDK because I suspected the Sun JVM was responsible for the machine crashing, and indeed it seemed to be more stable immediately upon switching to OpenJDK. But I guess I'll switch back to the Sun JVM for now (and cross my fingers). Still excluding BulletCatcher, though. It's Ubuntu 8.10 on an AMD2000+, if that means anything to anyone.
: I'm getting a new computer in the next week or so, so the old Linux box will become almost negligible in my total rumble power. Maybe I'll just throw it out the window at that point. =)
: --[[User:Voidious|Voidious]] 21:36, 15 August 2009 (UTC)
:: Update: the machine totally crashed sometime yesterday after 30-40 days up-time, so I do believe it's the Sun JVM's fault (at least in part). --[[User:Voidious|Voidious]] 14:20, 18 August 2009 (UTC)
: Did you check the scripts? I once had a similar problem and I had 256MB for heap size on one of the script files. --[[User:Zyx|zyx]] 22:11, 15 August 2009 (UTC)
:: Good idea, but I just double-checked all three (Robocode, roborumble, meleerumble) and they all use 512 mb. --[[User:Voidious|Voidious]] 22:14, 15 August 2009 (UTC)
::: This could be related to this http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6457965 --[[User:Rsim|Rsim]] 21:35, 23 August 2009 (UTC)
==Faulty Score==
I detected battles where your machine reports wired scored:
For other battles involving GeomancyBS 0.11 you report reasonable scores (I think), could you check what's wrong with the battle against TheBrainPi? (note that this should not be releated to the issue above as i changed the line-intersecting code to be VM independent.) --[[User:Rsim|Rsim]] 18:36, 4 September 2009 (UTC)
I am checking it out now. I think TheBrainPi throws exceptions sometimes, so maybe that is causing the issue. Also, just FYI, the above problems were only on my Linux RoboRumble box, which I'm not running any more, anyway... --[[User:Voidious|Voidious]] 18:40, 4 September 2009 (UTC)
Here's what I'm seeing. The first round, [[GeomancyBS]] sheilds 3 bullets, then [[TheBrainPi]] gets disabled with the following:
apv.TheBrainPi 0.5: Exception: java.lang.NullPointerException
at apv.nrlibj.NNet.frwNNet(NNet.java:378)
at apv.TheBrainPi.aim(TheBrainPi.java:188)
at apv.TheBrainPi.onScannedRobot(TheBrainPi.java:145)
at robocode.peer.robot.EventManager.onScannedRobot(Unknown Source)
at robocode.peer.robot.EventManager.dispatchEvent(Unknown Source)
at robocode.peer.robot.EventManager.processEvents(Unknown Source)
at robocode.peer.RobotPeer.execute(Unknown Source)
at robocode.peer.proxies.BasicRobotProxy.execute(Unknown Source)
at robocode.AdvancedRobot.execute(Unknown Source)
at apv.TheBrainPi.run(TheBrainPi.java:118)
at robocode.peer.RobotPeer.run(Unknown Source)
at java.lang.Thread.run(Thread.java:619)
GeomancyBS sits there (waiting for next bullet?) and eventually gets disabled for not doing anything, and they both die. Every round after that, TBP hits the above NPE before firing, and GBS just sits and also gets disabled. Maybe you need a clause to just fire 3.0 bullets at a disabled opponent?
--[[User:Voidious|Voidious]] 18:46, 4 September 2009 (UTC)
Yes, it probably should (i though it did). But the strange thing is that apv.TheBrainPi works flawlessly on my machine and doesn't throw any errors at all. Thanks for investigating it! --[[User:Rsim|Rsim]] 18:56, 4 September 2009 (UTC)
Out of curiosity, are you seeing that every single time with TBP Voidious? Or is it only sometimes? --[[User:Rednaxela|Rednaxela]] 19:28, 4 September 2009 (UTC)
Against everyone, it looks like -- I tried [[Raiko]], [[Duelist]], and [[Infinity]], and I tried both SoyLatte (my normal JVM) and the Apple JVM with the same results. This is in Robocode --[[User:Voidious|Voidious]] 19:36, 4 September 2009 (UTC)
I decided to do some more investigation of this. First, it looks like most of TBP's zero scores have come from me, but a few have also come from Darkcanuck: [http://darkcanuck.net/rumble/BattleDetails?game=roborumble&name=apv.TheBrainPi%200.5&vs=abc.tron3.Tron%203.11], [http://darkcanuck.net/rumble/BattleDetails?game=roborumble&name=apv.TheBrainPi%200.5&vs=cx.CigaretBH%201.03], [http://darkcanuck.net/rumble/BattleDetails?game=roborumble&name=apv.TheBrainPi%200.5&vs=stf.PanzerGeneral%200.1]. More importantly, though, I remembered that TBP saves its NN info between matches, and uses the same data against every bot (as if all opponents are just one opponent). So I thought maybe TBP had somehow corrupted its own NN data. I tried clearing the data directory and reloading the bot, and indeed, he works fine after that. I'm not sure what to do about this... obviously, it's not fair to make everyone watch out for this and baby-sit their data directories because of a buggy bot, but I also feel bad removing it (especially since [[User:Albert|Albert]] is the father of the RoboRumble). Thoughts? --[[User:Voidious|Voidious]] 20:04, 4 September 2009 (UTC)
: That is indeed an ''emotional'' situation. Maybe we could make a '''fix''' version, as it was done with SilverSurfer (although reasons are different) and just try and catch that exception you posted, if it happens force a clean on the data. If people agree I wouldn't mind checking if I can fix it. --[[User:Zyx|zyx]] 20:13, 4 September 2009 (UTC)
:: Sounds like a good idea to me. I vote for this --[[User:Rsim|Rsim]] 20:18, 4 September 2009 (UTC)
:: Yeah, that's a great idea. I didn't think TheBrainPi was open source, but it is. Just FYI - TBP actually comes with some pre-loaded data (my test above included restoring those files), but seems to work fine starting from a clean data dir, so your proposed fix should work. --[[User:Voidious|Voidious]] 20:30, 4 September 2009 (UTC)
I was looking how hard/easy would that fix be. I easily tracked down a good place to put the fix in and when I tested my fix I realized the File.delete() method was returning false(didn't delete it successfully), some reading on the web of when that happens made me realize he isn't closing the file after reading. If I add the close call to his reading method, then my delete fix works properly. But now I'm thinking that maybe the corruption comes from not closing the files after reading, so I will add the call to close and leave the delete fix, but I will print to the console whether the delete part ever happens, hopefully it will never have to actually the files. --[[User:Zyx|zyx]] 20:57, 4 September 2009 (UTC)
== Choice of license ==
I've been giving serious thought to changing what source code license I use for my bots. It's been a long time since I decided on [[RWPCL]], and my views have evolved a bit since then. A few things recently (including [[User:Rednaxela|Rednaxela]] opting for [[wikipedia:zlib License|zlib]], and [http://www.stevestreeting.com/2009/09/15/my-evolving-view-of-open-source-licenses/ this article] about a graphics engine going from [[wikipedia:LGPL|LGPL]] to [[wikipedia:MIT License|MIT]]) have gotten me thinking hard about why I open source my bots, and in turn, what license best fits those goals. There are 3 main reasons I open source:
# To give others the opportunity to learn from my code in the same way that I have been able to learn from so many other bots and people on this wiki.
# To contribute to the collective advancement of Robocode bots.
# To encourage others to open source their bots.
The RWPCL certainly contributes to all of these points, but I think it may put undue weight on #3, when I actually care a lot more about #1 and #2. And if a more permissive license would result in more people using/learning from my code, that might contribute to #3 more than a Copyleft license's restrictions. I'm considering [[RWLPCL]] or something like zlib or MIT. I already have a good idea where some of you stand, but I'd really appreciate hearing what you guys think about this topic. Thanks,
--[[User:Voidious|Voidious]] 18:16, 25 September 2009 (UTC)
Yeah, similar reflection on why I open source my bots is what led me to decide on a slightly slimmed/modified zlib licence for my kd-tree. In the future (i.e. with Glacier), I'm considering doing a practice of using a somewhat restricted licence (look at the code, learn from it, but don't copy-paste and release it without asking) for unique behavioural parts of the bot like targeting/movement, but using a permissive licence (i.e. slimmed/modified zlib) for all utility code (which seems to make up over half of my bots lately). I don't mind people reusing my code, but I'd use the more restrictive licence on the unique behavioural parts in order to encourage people to do their own thing. If people ask I'd be very open to either changing particular classes to a permissive licence or giving case-by-case exceptions. As I see it, that would be best for allowing people to learn from my code, use useful utility classes they come across, but encourage innovation. Also, for nanos/micros I'd probably just go fully in a permissive licence since it's so small anyway, I'm mainly talking about megas here. That's my position and those are my current plans anyway, as far a the licence of my bots is concerned. --[[User:Rednaxela|Rednaxela]] 18:52, 25 September 2009 (UTC)
: My thoughts exactly =) I like to provide my code as a ''reference implementation'', but it needs to be clear that it's the idea behind the code that is important for people to grasp, not the code itself. If people want to use parts of [[DrussGT]], [[CunobelinDC]], [[Toorkild]] or [[Wintermute]] that make them the unique bots they are, then I really would prefer if they either 1) ask first or 2) make their own implementation based on the concept of what my code is trying to achieve. If there's a licence that provides this I'd happily use it, I'm just mostly too lazy, and too legalese-phobic, to go looking. --[[User:Skilgannon|Skilgannon]] 19:24, 25 September 2009 (UTC)
You're probably right Voidious that [[RWLPCL]] contributes more to the community than [[RWPCL]]. Otoh you want to share your ideas and some utilities, not the complete source. For my bots the license is not that important, as they do not contain any unique code. --[[User:GrubbmGait|GrubbmGait]] 22:28, 25 September 2009 (UTC)
[[Skilgannon]] said exactly my thoughts. I like to share my code so people can learn stuff from them but I don't want them to just copy out of them, but laziness and fear to get too legal about it makes me stay away from licenses. I just want to enjoy Robocode as a very fun game, so I prefer to have no license and let people copy from it than search for an appropriate one and worry about it being violated. At the end I think is their loss if they don't implement it themselves as that is exactly what I enjoy doing. But if this conversation leads to a license that expresses that, I'd happily go for it. --[[User:Zyx|zyx]] 03:34, 26 September 2009 (UTC)

Latest revision as of 20:37, 9 September 2011