Difference between revisions of "Talk:DustBunny"
(Nice!) |
(move from main page talk + reply) |
||
Line 12: | Line 12: | ||
Awesome stuff! I really should try more nano and more melée --[[User:Rednaxela|Rednaxela]] 23:07, 2 June 2009 (UTC) | Awesome stuff! I really should try more nano and more melée --[[User:Rednaxela|Rednaxela]] 23:07, 2 June 2009 (UTC) | ||
+ | |||
+ | |||
+ | == Wall Avoidance == | ||
+ | |||
+ | I recently saw this code from DustBunny: | ||
+ | <pre> | ||
+ | // Use a very simple running average system. /2 is as cheap as I can get this | ||
+ | xForce = xForce *.9 - Math.sin(absoluteBearing) / distance; | ||
+ | yForce = yForce *.9 - Math.cos(absoluteBearing) / distance; | ||
+ | |||
+ | // Get our turn angle - factor in distance from each wall every time so we get | ||
+ | // pushed towards the center when close to the walls. This took a long time to come up with. | ||
+ | setTurnRightRadians(Utils.normalRelativeAngle(Math.atan2(xForce + 1/getX() - 1/(getBattleFieldWidth() - getX()), | ||
+ | yForce + 1/getY() - 1/(getBattleFieldHeight() - getY())) | ||
+ | - getHeadingRadians()) ); | ||
+ | </pre> | ||
+ | I was wondering... what's up with the 1/getX() - 1/(getBattleFieldWidth()-getX()), and the same with the Y? {{unsigned|Abalabazn}} | ||
+ | |||
+ | It is a [[Anti-Gravity Movement]] system. If you want to learn about this more, I don't suggest your to learn from NanoBot, because they are obfuscated to gain as much codesize possible. --[[User:Nat|<span style="color:#099;">Nat</span>]] [[User talk:Nat|<span style="color:#0a5;">Pavasant</span>]] 13:06, 2 June 2010 (UTC) |
Revision as of 14:06, 2 June 2010
If you manage to fit that Random/Linear gun into it, will you entered it to NanoRumble (not melee)? This bot may kill the DoctorBob records!! » Nat | Talk » 14:52, 1 June 2009 (UTC)
It fits :) - I just need to find 2 more bytes to enter it into the normal rumble due to it no longer being able to call getBattleFieldWidth() and Height(). The other problem being random/linear is poor for melee - linear reduction linear is better (Infinity style.) To make it melee proof will require another 4 bytes or so. Hmmm --Miked0801 15:36, 1 June 2009 (UTC)
- OMG, I found my 2 bytes. I had e.distance() cached in a register, but wasn't using it. Next release will have random linear gun with battleField sizes taken into account. Going for overall best rating next. --Miked0801 17:06, 2 June 2009 (UTC)
Congrats on the Nano crowns! =) That didn't take very long. --Voidious 15:45, 2 June 2009 (UTC)
Great work! Number one in both... very impressive, especially in a nano! --Skilgannon 16:10, 2 June 2009 (UTC)
Good job man! --zyx 20:57, 2 June 2009 (UTC)
Awesome stuff! I really should try more nano and more melée --Rednaxela 23:07, 2 June 2009 (UTC)
Wall Avoidance
I recently saw this code from DustBunny:
// Use a very simple running average system. /2 is as cheap as I can get this xForce = xForce *.9 - Math.sin(absoluteBearing) / distance; yForce = yForce *.9 - Math.cos(absoluteBearing) / distance; // Get our turn angle - factor in distance from each wall every time so we get // pushed towards the center when close to the walls. This took a long time to come up with. setTurnRightRadians(Utils.normalRelativeAngle(Math.atan2(xForce + 1/getX() - 1/(getBattleFieldWidth() - getX()), yForce + 1/getY() - 1/(getBattleFieldHeight() - getY())) - getHeadingRadians()) );
I was wondering... what's up with the 1/getX() - 1/(getBattleFieldWidth()-getX()), and the same with the Y? —Preceding unsigned comment added by Abalabazn (talk • contribs)
It is a Anti-Gravity Movement system. If you want to learn about this more, I don't suggest your to learn from NanoBot, because they are obfuscated to gain as much codesize possible. --Nat Pavasant 13:06, 2 June 2010 (UTC)