Robo Home | Changes | Preferences | AllPages

This is Ne's big nasty PatternMatching gun. It is not the best in the world but it was the best I could come up with considering my relative inexperience with all of this.

Bots it's used in:

How does it work?

Firstly there is a massive symbolic pattern buffer. It is broken down into scan-blocks that are haphazardly arranged in a hashtable. Each block represents a string of uninterrupted scans over a certain bot. This solves any problems that pattern matchers tend to have with interrupted scans. Because the number of scan blocks is limited, it replaces the smallest scan block whenever choosing a new block to edit.

When attempting to determine the future location of a target, it will search for the previous n states in all of the scan blocks. It tries to find a balance between a long search pattern and several returns. If the pattern is not found, it reduces the search length. If the search length is still relatively long but returns very few instances in the buffer, it will again reduce the search length until it finds a happy equilibrium.

From there it simply finds all instances of the search pattern and then finds up to 5 possible future ticks in each scan block. Then it simply finds the one tick that is occurred the most times, advances the virtual target one tick, then repeats the process until it registers a bullet hit. If it runs out of data to process, it will revert to circular targeting. It is also capable of predicting and accounting for WallCollision?.

In effect this is somewhat like SingleTick targeting.

Comments / Suggestions:

Nice! -- Simonton

Thanks Dude. Not just for the compliment, but for the inspiration. This happens to be the one piece of my bot that I'm most proud of and it's largely inspired by your SD/SingleTick PM gun. Now you've got me thinking about recording a change in velocity and heading instead of the literal velocity and heading change. I'm also thinking about folding the buffer and possibly combining the two characters used to encode them into one to increase efficiency. The more effecient I can make this thing, the more possible future ticks I can sample from in order to make more accurate statistics. As soon as I can tune Chimera's movement, I'll definitely revisit this. -- Ne

If you'd like, feel free to grab LifelongObsession's jar from the repository. It's open-source, so you can see how I *seriously* optimized the computation time of this sort of pattern matching (compared to what you see in SingleTick). It also has a pretty sweet anti-xxx movement system, where you basically just paste in the source of your white-whale, modify here and there, and voila, you kick the crap out it ... but that's off topic ... -- Simonton

Got off topic from here, moved to Chimera for the sake of keeping me sane. -- Ne

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited May 3, 2007 5:29 EST by Ne (diff)