Talk:Anti-Gravity Tutorial

From Robowiki
Jump to navigation Jump to search

I'm posting this in it's current form because it took me a lot longer to write than I thought it would, and I don't want to lose all of my work. I would appreciate any ways people could improve it; please go ahead and change anything you can! I'm not exactly a Robocode guru, and there's still stuff that needs to be added to this--CrazyBassoonist 02:38, 21 January 2010 (UTC)

One quick note, is I'm pretty sure the "check various angles" approach is very much not the traditional anti-grav approach, and is closer to min-risk movements actually. The 'traditional' anti-grav approach is simply summing up a 2d total force vector rather than checking angles. --Rednaxela 02:48, 21 January 2010 (UTC)

Yeah, it's actually a little simpler than what you have here. For each enemy, something like:
xForce += Math.sin(absBearing + Math.PI) / (distance * distance);
yForce += Math.cos(absBearing + Math.PI) / (distance * distance);
Then just move in the direction of the resulting force. Not to say that checking angles is wrong (or even likely to give a different result), but it's veering into min risk territory, and not traditional AG. --Voidious 15:57, 21 January 2010 (UTC)
Indeed, like that. In this case, checking angles gives a... similar result, except 1) less precise, and 2) rotates to a sane angle if the forces are *perfectly* blanced, but that's unlikely and normally non-issue anyway. If there are no objections soon I'll modify it to use the vector summing approach. As a side note, I'd also say that using a try/catch instead of an explicit null check is... disagreeable code style. --Rednaxela 16:17, 21 January 2010 (UTC)
Aye. It should be either like that or
xForce -= Math.sin(absBearing) / (distance * distance);
yForce -= Math.cos(absBearing) / (distance * distance);
And use Math.atan2(xForce, yForce) to get the direction of the result vector. --Nat Pavasant 16:31, 21 January 2010 (UTC)

In my thought a 'Tutorial' should involve creating a robot. I'll change it later when I have more time. --Nat Pavasant 14:14, 21 January 2010 (UTC)

I'm not sure everyone agrees (though I think that is a good style). When we discussed tutorial style on Category talk:Tutorials, it seemed most people preferred to have pseudocode tutorials, not the explicit bot building style I use in the Wave Surfing Tutorial. --Voidious 15:22, 21 January 2010 (UTC)
I am not really sure, but I for one only think of advanced tutorial at that time of discussion. I myself prefer pseudocode for advanced tutorial, and bot building for basic tutorial. I don't believe pseudocode is suitable in such situation -- it won't make more sense than just literal explanation. But for advanced techniques, sometimes you can't explain it with literal explanation, and giving the code is just spoil, so I prefer pseudocode. Any one agree with me on this? And since this article cover from data gathering, I consider this a 'basic' tutorial. --Nat Pavasant 15:46, 21 January 2010 (UTC)

Also: thanks for posting, that was pretty quick. =) --Voidious 15:57, 21 January 2010 (UTC)

One note about the enemy tracking this tutorial suggests: The approach it uses only really works when one is very certain that enemies will be scanned in the same order each time around. It can have significant anomalies with a non-spinning radar, and even with a spinning radar the order changing could cause the bot to move oddly every so often. I'd only consider using that type of approach in a highly codesize-restricted bot. Do others approve of changing it to a slightly more advanced system for tracking the enemy points without such issues? :) --Rednaxela 21:06, 21 January 2010 (UTC)

Well, thanks for correcting the page! About the enemy tracking, I did point out that it would only work with spinning radar, and would occasionally cause problems. I just used it because it's extremely simple, and making a decent enemy tracking system in melee can get awfully complex. But yes, I would support changing it if anyone else feels like it--CrazyBassoonist 22:05, 21 January 2010 (UTC)

You cannot post new threads to this discussion page because it has been protected from new threads, or you do not currently have permission to edit.

There are no threads on this page yet.