The games is accessible as a server via a REST API.
The particularity is that the API has some cooldown between each interaction you do with it. Also you have multiple citizens to control, therefore I had to implement it smartly using Java's CompletableFutures to control them asynchronously.
**All the async logic is hidden** behind a layer so you can control them seamlessly without worrying about these limitations.
When you first appear on the map, the goal is to gather a maxiumum of resources, to do so the Cartographer module is quite helpful to retrieve their locations.
As you collect them, you have to place paths behind you to not be killed by Hector, which is the name given to the ClearLag like routine that kills every entity too far from home orany path.
After some time, enemies will appear and target you, you must then use your resources to build defenses: walls, turrets and attack units... but without forgetting to grow your town by building more structures to keep the pace.
The notation was about achievements: basically you could push your code on the official server and watch it play by itself. The more achievements you won in total, the more points you have !
You can find the units objects inside `src/main/java/com/epita/creeps/units`, and global commands under `src/main/java/com/epita/creeps/commands`. The main algorithm is itself located at `src/main/java/com/epita/creeps/Program.java` with some other utilities like the asynchronous execution module (`AsyncExec.java`) and the ServerResponseException class.
Most given files are not included in this repo as some of them are quite heavy or not really relevant. But I plan to find a way to easily access them from here, it's just not a priority for now.