Difference between revisions of "Talk:DustBunny"

From Robowiki
Jump to navigation Jump to search
(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 (talkcontribs)

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)