[Home]Python

Robo Home | Changes | Preferences | AllPages

Difference (from prior major revision) (no other diffs)

Added: 1a2
NOW MELEE COMPATIBLE(omg!)

Changed: 52c53
In melee, Python gets confused.
No difference. WaveSurf all enemies at once(hard!)

Changed: 56c57
He explodes/exception errors before he can.
The first thing scanned by Python V4's radar is either snake food or a snake killer.

Changed: 60c61
Nothing much.
PM data

Python V4.0 is coming soon. TEAMS SUPPORT ADDED + New gun is to be implemented very soon. NOW MELEE COMPATIBLE(omg!) History as of V4(unreleased): V4 Results VS V3 in 35 round fight
Here are the results of Python 3.6 VS Python 4.0(saved in my Galanoth directory because P4 is part of Galanoth)
Name                    Total Survival  Bonus   BDMG    Bonus   RDMG    Bonus   S1sts  S2nds   S3rds
1st: x.galanoth.Python	4035	1500	300	1892	343	0	0	32	4	0
2nd: python.Python 3.6	1610	200	40	1291	78	0	0	4	31	0	
It seems as though Python does better @ long range..

V3.6 removed from RR@H

Bot Name

Python

Author

Xero

Extends

AdvancedRobot

What's special about it?

It was made by an eleven year old child, and it uses the VelocityTrick.

Great, I want to try it. Where can I download it?

http://www.robocoderepository.com/BotDetail.jsp?id=2904

How competitive is it?

Not the best but it's ok. Currently #182 in RR@H.

How does it move?

WaveSurfing with 107 BINS

How does it fire?

A SymbolicPatternMatcher gun.

How does it dodge bullets?

WaveSurfing

How does the melee strategy differ from one-on-one strategy?

No difference. WaveSurf all enemies at once(hard!)

How does it select a target to attack/avoid in melee?

The first thing scanned by Python V4's radar is either snake food or a snake killer.

What does it save between rounds and matches?

PM data

Where did you get the name?

From my favorite snake.

Can I use your code?

It's in the JAR file. Knock yourself out.

What's next for your robot?

Tweaks.

Does it have any WhiteWhales?

Mako at some times, none at others.

What other robot(s) is it based on?

BasicSurfer.

Hissssss.....next thing you know you're dead....


Hey, nice to see that you're already aiming for the crown ;) ... Curious as to how you could combine the BasicSurfer movement with FunkyChicken, I took a look at the source, and wanted to point something out to you. It looks like you are making some calls to setTurnRight?() early on in the onScannedRobot event, but when BasicSurfer's doSurfing() method is called, the movement code it executes will override the previous setXXX stuff. From looking at your source, I think that only the BasicSurfer movement is having an effect.

The RoboRumble stats are processed by a distributed client, so take a look at RoboRumble/StartingWithRoboRumble if you want to have some control over the processing of your tank in the competition. Good luck,

-- Voidious

Welcome to the wiki. It sounds like you're off to a good start with Python, most Robocoders don't even go near WaveSurfing when they're starting out. The repository seems to be down right now, so it might be a little while before any results get posted. --wcsv

Hey man, a couple things you should probably know:

1st: pez.rumble.CassiusClay 2lamda	5645	1750	350	2954	590	0	0	35	0	0
2nd: wiki.Python 2.9g			377	0	0	377	0	0	0	0	35	0
-- Voidious

OK Python is officially much better without the VelocityTrick What i meant by almost beat CassiusClay was by life, not by entire battle. Sorry for the confusion, and sorry I'm kinda bad at that sort of stuff. Also I THINK I fixed the RoboRumble thing. -- Xero

OK, I fixed Python's entry in the Participants list (you needed to put the version number with the name). My client just began processing it, so you should see some results up very soon. Also, I think it was a good idea to take out your velocity trick. A PrecisePrediction WaveSurfing system is very delicate. If something (ie random velocity changes) is throwing off its predictions by even a little bit it will not work near its potential. Anyway, good luck with Python. --wcsv

In reference to your request at the top of the page: I havn't had time to look at your code (been coding for classes all day), but if you want to use randomized velocity changes and still have working surfing you'll have to do what Voidious posted earlier; determine when and by how much you want to change velocity ahead of time and factor those changes into the PrecisePrediction calculations. --wcsv

I made the velocity changes less frequent so the wavesurfing should have time to mess around. It gets 100 ticks for itself before any changes in velocity happen.Pattern: Surf, velocity change, surf, velocity change. Every 100 ticks it goes to the next thing. Not perfect, still, but works a little better. -- Xero

Well, the thing is that the WaveSurfing algorithm chooses which direction to orbit in based on the assumption that max velocity is 8. It could be altered to take a different maximum velocity into account if you wanted. But if you change the max velocity and the WaveSurfing isn't aware of it, it's really just acting more like RandomMovement - not that that's entirely bad. But the true power of WaveSurfing shines through in a flawless implementation, so you might want to decide if WaveSurfing or RandomMovement is what you're really going for. -- Voidious

1st: python.Python	865	400	80	333	52	0	0	8	2	0
2nd: pez.mako.Mako 1.5	609	100	20	454	35	0	0	2	8	0

1st: python.Python       	1015	400	80	461	74	0	0	8	2	0
2nd: wiki.mako.MakoHT 1.2.2.1	643	100	20	482	41	0	0	2	8	0
1st: python.Python	1690	500	100	909	181	0	0	10	0	0
2nd: sample.MyFirstRobot	8	0	0	8	0	0	0	0	10	0
 Hooray! I don't suck anymore! --Xero

  1. Remember, a LOT of people in the rumble have put in many, many hours to develop a strong bot. I'd wager that no one in the top 100 placed a bot there without some serious thought. With that in mind, be patient. See what you can learn over time. Don't try to do it all at once.
  2. Regarding GuessFactorTargeting, the best way to learn is to approach it in a way that makes sense to YOU. No one can say exactly what that means; but for instance, think of your opponent moving in one dimension: either right or left relative to you. Don't worry about anything else. As a first step toward GuessFactorTargeting, keep track of the angle your opponent likes to move either right or left. Store that information. Now, when you fire, determine their favorite right or left angle and shoot! I'm purposely leaving out technical details because I think they can be more confusing than useful. Think about the problem without tutorials. You'll soon realize that the right or left question is heavily dependent on which direction they're already traveling. If they're moving right, they're more likely to continue moving right. The same applies for left. This exposes the need to 'qualify' an observation based on what your opponent is currently doing. It's the basis of Segmentation. Resist the urge to read that page. Instead, think of how you can 'qualify' your observations. What influences your opponents decision to move right or left? As you answer this question, make it part of your decision to aim right or left and by how much.

If you think targeting is hard, consider the folly of unwinding the whole thing to determine where NOT to move. --Corbos

The way I think about guess factors is:

  1. I only consider the opponents lateral movement orbiting me.
  2. I think of the opponents current movement direction as forwards.
  3. Thus the other movement direction is reverse.

When collecting statistics I note, for each Wave that reaches the opponent, how far in either the forwards or reverse direction the opponent traveled. Say maximum forward is 100% and maximum reverse is -100%. I chop that up in bins of an array where index 0 means -100% and index BINS-1 means 100%.

When firing I check what bin is most used and convert it to a bearing for my gun.

I hope this makes some sense.

-- PEZ

Mako saves data between matches, I think, so that might give him a leg up on Python in multiple matches. Also, RoboRumble matches are 35 rounds, not 10, so that gives a learning gun a lot more time to zero in on your movement. (You can still learn things from longer or shorter matches in testing, though, for sure.) -- Voidious


Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited June 10, 2006 23:48 EST by Xero (diff)
Search: