Parakeet's my 1-on-1 bot that competes in the [MiniBot Challenge]
? in the
MiniBots category.
It can be downloaded from the RobocodeRepository :
[Parakeet]
==== Current version : 2.27
How does it move?
It mirror's it's enemy's position through the center of the screen.
How does it fire?
PatternMatching.
I equipped Parakeet with this gun as a try-out; to see how it worked out. Though not nearly as effective as
[PatternMatcher]s like those of
Aspid's, Cigarette
?'s,
BlotBot's or other's, I'm quite satisfied with the results (#6 in
MiniBot Challenge 1-on-1).
Parakeet samples opponent's moves every 8 timeframes instead of recording movements every single tick, and uses that data for patternmatching. This way of gathering data has both advantages and disadvantages:
- Disadvantages:
- It is less responsive then other patternmatchers, because this way I don't always have up-to-date data to work with when patternmatching, if my opponent just turned the other way, I only see it when the next sample-time is due.
- It is less accurate. When I reconstruct the predicted future path, I need to interpolate the last move of that path, when my bullet is supposed to hit the opponent. The opponent could have moved in an arc to that new position, or move-stop-moved .... or whatnot.
- Probably some more disadvantages that I cannot think of at the moment ;-)
- Advantages:
- Speed:
- It takes less time to do the patternmatching, because need to loop through an array that is 8x smaller.
- The length of the pattern-to-match can be a lot longer. 4 moves is equal to movements performed in 32 timeframes. Parakeet currently finds a match for the movement of the last 10 moves (the last 80 timeframes)
- The arrays that hold the movement history is small enough to write to disk!
- The main advantage over recording every single timeframe... I haven't it implemented yet. I'll give you a hint: Let's just say that it's no coincidence that the sampleperiod I chose (8 timeframes), is the same amount of time it takes for a full 360-degrees radar-sweep! Shouldn't be too hard to guess what I'm up to. ;-)
It doesn't. ;-)
How does the melee strategy differ from one-on-one strategy?
No melee strategy at all.
Where did you get the name?
When Robotobe started the
MiniBotChallenge with Squirrel as his
MiniBot. I thought it was a good idea to use names of small animals too, so I started with HummingBird
?, my Microbot. Then I wrote
Sparrow and
Parakeet. I chose Parakeet as name, because parrots are known to imitate people.
Can I use your code?
If you think my bot is useful, you are free to use anything from my bot as you want. If you decide to copy-paste some code from me, I would be pleased if you take some time to understand what you are copying first. Making your own implementation would of course be even better. :-)
What's next for your robot?
Not much probably... if I make another experimental gun in the future, I'll probably outfit Parakeet with the prototype to see how it works out. :-)
What other robot(s) is it based on?
Graygoo's
Wolverine was the first bot that uses
PatternMatching, I think. (That was before I started Robocoding, so I'm not sure).
--Dummy
Comments:
EnemyMirroring? seems very effective against Marshmallow, though Parakeet takes the same blows against the walls then. =) I can't seem to hit Parakeet very well with my pattern matcher either.... But I'll go back to the drawing board now and see what I can do to counter.
You might want to check out David Alves' PerceptualDuelist. It has some anti-mirroring strategy. I'm not sure wether the source of PerceptualDuelist is available or not, though... --Dummy
I also played with different delays (how many ticks you skip between rounds) and embeds (how many samples are you using as a vector for comparison). In my experience, delay one is the most effective, event if it doesn`t allows you to deal with long time windows. -- Albert
Yes, but because a full radarsweep costs 8 timeframes as well, I should be able use this gun in melee (with some inter/extra-polating). I don't even need to have some fancy radar-control; just keep the radar spinning. Of course, I haven't completed the gun yet, so there's no telling wether this gun actually works well in melee. This gun is still vaporware. ;-) --Dummy
I've added an explanation for the DavesPatentedAntiMirroringGun that PerceptualDuelist had. :-D I don't have the source for it (I eventually took the gun out) so I can't post that, sorry. --David Alves
I just wrote a robot that is (I admit) conceptually the same bot as Parakeet (in that it's a pattern-matcher that mimics its opponent's movement), and it's a NanoBot! The funny thing is that FunkyLeech actually appears to beat Parakeet pretty reasonably. It also shows how stupid two robots look when they're trying to mirror each other in different ways. Parakeet starts the battle by going to the reflection point across the center from FunkyLeech. FunkyLeech then moves further from that center point, imitating Parakeet's movement relative to himself, until he hits a wall. Then Parakeet catches up to him and hits the wall and they both start shooting at each other from opposite walls. -- Kawigi