Difference between revisions of "Portia"

From Robowiki
Jump to navigation Jump to search
m (spelling correction)
Line 4: Line 4:
 
| author          = [[User:Positive|Positive]]
 
| author          = [[User:Positive|Positive]]
 
| extends        = [[AdvancedRobot]]
 
| extends        = [[AdvancedRobot]]
| targeting      = Semi-linear targeting
+
| targeting      = Semi-[[Linear Targeting|Linear]], [[GuessFactor Targeting (traditional)|GuessFactor]]
| movement        = [[Minimum Risk Movement|Minimum Risk Movement]]
+
| movement        = [[Minimum Risk Movement|Minimum Risk]], [[Stop And Go]], [[Random Movement|Random]]
 
| released        = July 2009
 
| released        = July 2009
 
| current_version = 1.00
 
| current_version = 1.00
Line 21: Line 21:
  
 
; How competitive is it?
 
; How competitive is it?
: We'll see. :)
+
: In melee it's quite competitive. :) In solo it's not.
  
 
== [[Melee]] strategy ==
 
== [[Melee]] strategy ==
  
 
; How does it [[Movement|move]]?
 
; How does it [[Movement|move]]?
: It simulates enemy bullet fire and danger zones, and tries to avoid them by selecting from different exact movement plots.
+
: For each opponent, if Portia detects an enemy energy drop, linear and/or headon shots are simulated from the guessed enemy fire turn and position. Portia tries to avoid simulated shots, and also tries to never be the closest opponent to any enemy. Portia remembers the enemy energy drops, and correlates hits to itself to them.  
  
 
; How does it fire?
 
; How does it fire?
: It uses semi-linear and semi-headon firing. The results vary, and currently it performs very poor against some bots using [[Oscillator Movement]].
+
: It mostly uses semi-linear targetting. The difference with normal linear targetting is that Portia assumes that if an opponent accelerates, it will keep doing so until it reaches max velocity. The results vary, and currently it performs very poor against some bots using [[Oscillator Movement]].
  
 
; How does it select a target to attack/avoid in [[melee]]?
 
; How does it select a target to attack/avoid in [[melee]]?
Line 44: Line 44:
 
; How does it fire?
 
; How does it fire?
 
: It uses an ultra-fast decaying GF gun. If the current GF-bin doesn't have a lot of data, or has high entropy (not many recorded firing angles in the same range), it uses the most recent GF angles instead.
 
: It uses an ultra-fast decaying GF gun. If the current GF-bin doesn't have a lot of data, or has high entropy (not many recorded firing angles in the same range), it uses the most recent GF angles instead.
 +
 +
; What does it save between rounds and matches?
 +
: Between rounds it saves targeting info if the match started with only one opponent. Otherwise it saves nothing. It saves nothing between matches.
  
 
== Additional Information ==
 
== Additional Information ==
  
 
; Where did you get the name?
 
; Where did you get the name?
: "Portia" is the name of a spider I'm somewhat fascinated with. The spider is extremely intelligent (considering its size & that it's a spider): it can hunt using a plethora of methods, and attacks and defends itself strategically. I thought that name was a great fit. :) You can read more about the spider [http://en.wikipedia.org/wiki/Portia_(spider) here].
+
: "Portia" is the name of a spider I'm somewhat fascinated with. The spider is extremely intelligent (considering its size & that it's a spider): it can hunt using a plethora of methods, and attacks and defends itself strategically. I thought that name was a great fit. :) You can read more about the spider [http://en.wikipedia.org/wiki/Portia_(spider) on Wikipedia].
  
 
; Can I use your code?
 
; Can I use your code?
Line 55: Line 58:
 
; What's next for your robot?
 
; What's next for your robot?
 
:
 
:
:* Fast trigonometry (it's somewhat slow now and then, and I think the many calls to sin & cos have something to do with it).
+
:* Better melee targeting. I've been thinking about this a lot, but I can't figure out a logical way to improve this yet. Opponent's melee behaviour is dependent on so many things: their last position, position and energy(changes) of opponents around them, their position relative to the wall and the corner, etc. Also, your image is much more incomplete than in 1v1 because of incomplete scans.
:* Better melee targeting
+
:* Better guessing of who's firing at Portia in melee.
:** Beat simple pattern bots
+
:* Fix collision problem (it doesn't invalidate plots through opponents, so when it collides it sometimes stays "locked" to his opponent)
:** Beat oscillerating bots
+
:* Improve 1v1 mode, targetting & movement.
:* Fix collision bug (when it collides, it sometimes tries to move through the opponent at the moment)
+
:* I'd like to speed the melee mode up more somehow.
:* Anything I'm interested in. :)
+
:* Anything interesting I hear or find out about. :)
  
 
; Does it have any [[White Whale]]s?
 
; Does it have any [[White Whale]]s?

Revision as of 19:15, 14 July 2009

Portia
Portia1p0Paint.jpg
Author(s) Positive
Extends AdvancedRobot
Targeting Semi-Linear, GuessFactor
Movement Minimum Risk, Stop And Go, Random
Released July 2009
Current Version 1.00
Code License closed
Download

Background Information

What's special about it?
Portia is my first robot, and I'm very proud of it. :)
How competitive is it?
In melee it's quite competitive. :) In solo it's not.

Melee strategy

How does it move?
For each opponent, if Portia detects an enemy energy drop, linear and/or headon shots are simulated from the guessed enemy fire turn and position. Portia tries to avoid simulated shots, and also tries to never be the closest opponent to any enemy. Portia remembers the enemy energy drops, and correlates hits to itself to them.
How does it fire?
It mostly uses semi-linear targetting. The difference with normal linear targetting is that Portia assumes that if an opponent accelerates, it will keep doing so until it reaches max velocity. The results vary, and currently it performs very poor against some bots using Oscillator Movement.
How does it select a target to attack/avoid in melee?
It mainly selects the closest opponent, but it tries not to switch targets too much. If it's near a corner it highly prefers opponents near the same corner.
What does it save between rounds and matches?
Between rounds, it saves general linear-targeting info. If an opponent only seems to be shooting with Head-On Targeting like HawkOnFire, it remembers that between matches.

One-on-one strategy

How does it move in One-on-one?
Until the end game, it first tries to use Stop And Go-like movement, and if the opponent seems to catch on it switches to Random Movement. At the end game, it will try to get very close to the opponent to give the final blow. :)
How does it fire?
It uses an ultra-fast decaying GF gun. If the current GF-bin doesn't have a lot of data, or has high entropy (not many recorded firing angles in the same range), it uses the most recent GF angles instead.
What does it save between rounds and matches?
Between rounds it saves targeting info if the match started with only one opponent. Otherwise it saves nothing. It saves nothing between matches.

Additional Information

Where did you get the name?
"Portia" is the name of a spider I'm somewhat fascinated with. The spider is extremely intelligent (considering its size & that it's a spider): it can hunt using a plethora of methods, and attacks and defends itself strategically. I thought that name was a great fit. :) You can read more about the spider on Wikipedia.
Can I use your code?
At the moment I'm keeping it closed source. Turn on paint to get an idea what it's thinking though. :)
What's next for your robot?
  • Better melee targeting. I've been thinking about this a lot, but I can't figure out a logical way to improve this yet. Opponent's melee behaviour is dependent on so many things: their last position, position and energy(changes) of opponents around them, their position relative to the wall and the corner, etc. Also, your image is much more incomplete than in 1v1 because of incomplete scans.
  • Better guessing of who's firing at Portia in melee.
  • Fix collision problem (it doesn't invalidate plots through opponents, so when it collides it sometimes stays "locked" to his opponent)
  • Improve 1v1 mode, targetting & movement.
  • I'd like to speed the melee mode up more somehow.
  • Anything interesting I hear or find out about. :)
Does it have any White Whales?
At the moment, I hope to make it consistently defeat GlowBlowMelee and Infinity in melee. And, of course, all the top-10. :P
What's it based on
I've written all the code myself. But I would like to give some credits.