Difference between revisions of "Portia"

From Robowiki
Jump to navigation Jump to search
(Created page with '{{Infobox Robot | name = Portia | image = Portia1p0Paint.jpg | author = Positive | extends = AdvancedRobot | targeting = Semi-…')
 
(Fix broken download link)
 
(20 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
{{Youtube|EJPskFGvGi8}}
 +
 +
{{Navbox small
 +
| title        = Sub-pages
 +
| page1        = Version History
 +
}}
 +
 
{{Infobox Robot
 
{{Infobox Robot
 
| name            = Portia
 
| name            = Portia
 
| image          = Portia1p0Paint.jpg
 
| image          = Portia1p0Paint.jpg
| author          = [[Positive]]
+
| author          = [[User:Positive|Positive]]
 
| extends        = [[AdvancedRobot]]
 
| extends        = [[AdvancedRobot]]
| targeting      = Semi-linear targeting
+
| targeting      = Semi-[[Circular Targeting|Circular]], [[GuessFactor Targeting (traditional)|GuessFactor]], [[DynamicClustering|Dynamic Clustering]]
| movement        = [[Minimum Risk Movement|Minimum Risk Movement]]
+
| movement        = [[Minimum Risk Movement|Minimum Risk]], [[WaveSurfing]]
 
| released        = July 2009
 
| released        = July 2009
| rating          = None yet
+
| current_version = 1.26e
| current_version = 1.00
 
 
| license        = closed
 
| license        = closed
| download_link  = http://www.robocoderepository.com/BotDetail.jsp?id=3698
+
| download_link  = http://robocode-archive.strangeautomata.com/robots/positive.Portia_1.26e.jar
 
| isOneOnOne      = true
 
| isOneOnOne      = true
 
| isMelee        = true
 
| isMelee        = true
Line 18: Line 24:
 
== Background Information ==
 
== Background Information ==
  
; What's special about it?
+
; What's special about it for you?
Portia is my first robot, and I'm very proud of it. :)
+
:
 +
:* Portia is my first competitive public robot
 +
:* Portia is my first big solo project in any language; as of writing the sourcecode spans 111 files and is 453kb in size. :)
  
 
; How competitive is it?
 
; How competitive is it?
We'll see. :)
+
: In melee it's quite competitive. Highest ever in melee was 2nd place (under Shadow) at 13 September 2009.
  
== [[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 preforms very poor against some bots using [[Oscillator Movement]].
+
: Portia has different methods, which are marked by color (if you turn on Paint)
 +
:* Blue - primary gun: [[Circular Targeting|circular targeting]]
 +
:* Yellow - [[DynamicClustering|Dynamic Clustering]]
 +
:* Cyan - simple bot targeting (mainly for sample bots and bots derived from them)
 +
:* Red - [[Head-On Targeting]] (mainly for disabled bots)
  
 
; How does it select a target to attack/avoid in [[melee]]?
 
; How does it select a target to attack/avoid in [[melee]]?
It mainly selects the closest opponent, but it tries not too switch targets too much. If it's near a corner it highly prefers opponents near the same corner.
+
: With [[Circular Targeting|circular targeting]] it selects the closest opponent, with [[DynamicClustering|Dynamic Clustering]] the ''most hittable'' opponent.
  
 
; What does it save between rounds and matches?
 
; What does it save between rounds and matches?
Between rounds, it saves general linear-targetting info. If an opponent only seems to be shooting with [[Head-On Targeting]] like [[HawkOnFire]], it remembers that between 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 ==
 
== [[One-on-one]] strategy ==
  
 
; How does it [[Movement|move]] in [[One-on-one]]?
 
; How does it [[Movement|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
+
: [[WaveSurfing]] only.
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?
 
; 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
+
: It uses a [[DynamicClustering|DC]]-PIF gun.
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 its [[DynamicClustering|DC]] tree. Between matches nothing.
  
 
== 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
+
: "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].
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].
 
  
 
; Can I use your code?
 
; 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. :)
+
: 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?
+
; What's probably 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 targetting
+
:* Better handling of rambots
** Beat simple pattern bots
+
:* Perhaps an anti-surfer and anti-flattener gun
** Beat oscillerating bots
+
:* Improved wavesurfing
* Fix collision bug (when it collides, it sometimes tries to move through the opponent at the moment)
+
:* Using more area in the melee movement
* Anything I'm interested in. :)
+
:* Lobbying to get the army to develop a real tank that uses Portia's code.
 +
:* Anything interesting I hear or find out about. :)
  
 
; Does it have any [[White Whale]]s?
 
; Does it have any [[White Whale]]s?
At the moment, I hope to make it consistenly defeat [[GlowBlowMelee]] and [[Infinity]] in melee. And of course, all of the top-10. :P
+
: [[Diamond]] and [[Shadow]] in melee.
 
 
; What's it based on
 
I've written all the code myself. But I would like to give some credits.
 
  
* The [[Stop And Go]] was inspired by [[Coriantumr]] by [[Kawigi]].
+
; What it's based on
* The sologun has really benefited from his [[GuessFactor Targeting Tutorial]] as well.
+
:
* The melee dodging is much easier to test thanks to the debugging graphics of [[Gladiator]] by [[User:KID|KID]].
+
:* [[User:Voidious|Voidious']] wavepainting code (the nice danger transition between blue and red).
* I've found [[Diamond]] by [[User:Voidious|Voidious]] also very usefull to test the solo targetting with because of it's graphics. :)
+
:* As of version 1.17, Portia uses [[User:Rednaxela/kD-Tree|Rednaxelas awesome kD-tree]] (big thanks!).
 +
: Furthermore, I would like to give some credits for usefull information and tools:
 +
:* The [[Stop And Go]] was inspired by [[Coriantumr]] by [[User:Kawigi|Kawigi]].
 +
:* The solo gun has really benefited from his [[GuessFactor Targeting Tutorial]] as well.
 +
:* The idea of visual danger circles comes from [[Shadow]] by [[User:ABC|ABC]].
 +
:* The melee dodging is much easier to test thanks to the debugging graphics of [[Gladiator]] by [[User:KID|KID]].
 +
:* I've found [[Diamond]] by [[User:Voidious|Voidious]] also very useful to test the solo targeting with because of its graphics, although Portia can't quite hit it yet. :)
 +
:* [http://old.robowiki.net/cgi-bin/robowiki?TronsGun TronsGun page] by [[User:ABC|ABC]] for the main ideas I used for developing the [[DynamicClustering|Dynamic Clustering]] gun.
  
 
__NOTOC__  __NOEDITSECTION__
 
__NOTOC__  __NOEDITSECTION__
 
[[Category:MegaBots]]
 
[[Category:MegaBots]]

Latest revision as of 03:20, 1 August 2017

Youtube
Youtube has a video of Portia in action: click here to watch


Sub-pages:
Version History
Portia
Portia1p0Paint.jpg
Author(s) Positive
Extends AdvancedRobot
Targeting Semi-Circular, GuessFactor, Dynamic Clustering
Movement Minimum Risk, WaveSurfing
Released July 2009
Current Version 1.26e
Code License closed
Download

Background Information

What's special about it for you?
  • Portia is my first competitive public robot
  • Portia is my first big solo project in any language; as of writing the sourcecode spans 111 files and is 453kb in size. :)
How competitive is it?
In melee it's quite competitive. Highest ever in melee was 2nd place (under Shadow) at 13 September 2009.

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?
Portia has different methods, which are marked by color (if you turn on Paint)
How does it select a target to attack/avoid in melee?
With circular targeting it selects the closest opponent, with Dynamic Clustering the most hittable opponent.
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?
WaveSurfing only.
How does it fire?
It uses a DC-PIF gun.
What does it save between rounds and matches?
Between rounds it saves its DC tree. Between matches nothing.

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 probably next for your robot?
  • Better handling of rambots
  • Perhaps an anti-surfer and anti-flattener gun
  • Improved wavesurfing
  • Using more area in the melee movement
  • Lobbying to get the army to develop a real tank that uses Portia's code.
  • Anything interesting I hear or find out about. :)
Does it have any White Whales?
Diamond and Shadow in melee.
What it's based on
Furthermore, I would like to give some credits for usefull information and tools: