Eem.frame-lib

From Robowiki
Revision as of 18:20, 16 August 2017 by Beaming (talk | contribs) (small typos fix, and updates in write up)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

A general bot framework developed by Beaming. The framework is quite general with pluguble motions, virtual guns, gun managers, and bots tracking manager.

The framework aims to be general enough to be used by others. Currently, there are two of my own bots using this framework which are different only in the gun manager part. One is ultimate pacifist bot IWillFireNoBullet and the other is quite competitive bot EvBotNG which is very good in melee.

One of the unique feature of the framework is that it tries to track all bots and treat them somewhat equally with a master bot. I.e., an enemy bot is just a bot which have gun and motion manager, so when an enemy fires, I just ask framework to use enemy gun manager to fire with a given gun set. I plan to extend to the motion drive too, so the framework would attempt to predict future enemy location. While it all generally quite primitive, the gun part is quite general, so I can just check with the enemy bot class how dangerous is the bot itself, what guns it use, and what is their hit rate.

Also, it helps with wave manager, every bot in the simulator suppose to have its own and enemy waves to track.

There is still quite a lot of work to do. But it seems that motion driver is quite strong, especially the exact path one, which is the variation of the minimal risk motion driver. In melee it gives you high chance of survival. Though it is CPU intensive, so expect some skipped turns. From other hand, it does not hit walls.

The available guns are somewhat primitive: head on, linear, circular, circular with acceleration, guess factor, decaying guess factor, flipped guess factor, KDTree gun, and random gun. No PIF gun yet. KDTree gun is quite weak, I think I need to work on proper parameter space here to push performance forward.

License

The code is open source, feel free to do what ever you want with it. It is available as github [eem.frame-lib repository]