Difference between revisions of "Talk:Anti-Gravity Tutorial"
(About enemy point tracking) |
RednaxelaBot (talk | contribs) m (Using <syntaxhighlight>.) |
||
(One intermediate revision by one other user not shown) | |||
Line 4: | Line 4: | ||
: Yeah, it's actually a little simpler than what you have here. For each enemy, something like: | : Yeah, it's actually a little simpler than what you have here. For each enemy, something like: | ||
− | < | + | <syntaxhighlight> |
xForce += Math.sin(absBearing + Math.PI) / (distance * distance); | xForce += Math.sin(absBearing + Math.PI) / (distance * distance); | ||
yForce += Math.cos(absBearing + Math.PI) / (distance * distance); | yForce += Math.cos(absBearing + Math.PI) / (distance * distance); | ||
− | </ | + | </syntaxhighlight> |
: 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 [[Minimum Risk Movement|min risk]] territory, and not traditional AG. --[[User:Voidious|Voidious]] 15:57, 21 January 2010 (UTC) | : 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 [[Minimum Risk Movement|min risk]] territory, and not traditional AG. --[[User:Voidious|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. --[[User:Rednaxela|Rednaxela]] 16:17, 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. --[[User:Rednaxela|Rednaxela]] 16:17, 21 January 2010 (UTC) | ||
:: Aye. It should be either like that or | :: Aye. It should be either like that or | ||
− | < | + | <syntaxhighlight> |
xForce -= Math.sin(absBearing) / (distance * distance); | xForce -= Math.sin(absBearing) / (distance * distance); | ||
yForce -= Math.cos(absBearing) / (distance * distance); | yForce -= Math.cos(absBearing) / (distance * distance); | ||
− | </ | + | </syntaxhighlight> |
:: And use <code>Math.atan2(xForce, yForce)</code> to get the direction of the result vector. --[[User:Nat|<span style="color:#099;">Nat</span>]] [[User talk:Nat|<span style="color:#0a5;">Pavasant</span>]] 16:31, 21 January 2010 (UTC) | :: And use <code>Math.atan2(xForce, yForce)</code> to get the direction of the result vector. --[[User:Nat|<span style="color:#099;">Nat</span>]] [[User talk:Nat|<span style="color:#0a5;">Pavasant</span>]] 16:31, 21 January 2010 (UTC) | ||
Line 27: | Line 27: | ||
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? :) --[[User:Rednaxela|Rednaxela]] 21:06, 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? :) --[[User:Rednaxela|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--[[User:CrazyBassoonist|CrazyBassoonist]] 22:05, 21 January 2010 (UTC) |
Latest revision as of 09:32, 1 July 2010
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);
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)