All Projects → EntelectChallenge → 2018-TowerDefence

EntelectChallenge / 2018-TowerDefence

Licence: MIT License
Main repository for the Entelect Challenge 2018 tournament

Programming Languages

java
68154 projects - #9 most used programming language
haskell
3896 projects
python
139335 projects - #7 most used programming language
C#
18002 projects
common lisp
692 projects
C++
36643 projects - #6 most used programming language

2018-TowerDefence

The Entelect Challenge is an annual coding competition where students, professional developers, and enthusiasts develop an intelligent bot to play a game.

This year, the game is Tower Defence involving some strategic thinking. We have made it as simple as possible to get started. Just follow the steps below.

Step 1 - Download

Download the starter pack zip file and extract it to the folder you want to work in.

Step 2 - Run

Follow the instructions in the read me files to run your first match between two of the provided starter bots.

Step 3 - Improve

Change some of the provided logic or code your own into one of the given starter bots and upload it to the player portal.

WIN!!!

For more information, visit one of the following:

Our website

Our forum

Or read the rules in the game-rules.md file.

Project Structure

In this project you will find everything you need to build and run a bot on your local machine. This project contains the following:

  1. game-engine-interface - The generic interface that the game runner uses to be able to plug in different game engines.
  2. game-engine - The game engine is responsible for enforcing the rules of the game, by applying the bot commands to the game state if they are valid.
  3. game-runner - The game runner is responsible for running matches between players, calling the appropriate commands as given by the bots and handing them to the game-engine to execute.
  4. reference-bot - The reference bot contains some AI logic that will play the game based on predefined rules. You can use this to play against your bot for testing purposes.
  5. starter-bots - Starter bots with limited logic that can be used a starting point for your bot.

This project can be used to get a better understanding of the rules and to help debug your bot.

Improvements and enhancements will be made to the game engine code over time. The game engine will also evolve during the competition after every battle, so be prepared. Any changes made to the game engine or rules will be updated here, so check in here now and then to see the latest changes and updates.

The game engine has been made available to the community for peer review and bug fixes, so if you find any bugs or have any concerns, please e-mail us or discuss it with us on the Challenge forum, alternatively submit a pull request on Github and we will review it.

Bot upload archive structure

Your archive should contain at least a bot.json with your source code in the root of the archive.

{bot-archive-name}.zip
|--- bot.json
|--- {source_code}

For example the Java sample bot should look like:

|--- bot.json
|--- src
   |--- main
      |--- {package_directories}
         |--- Bot.java
         |--- Main.java
         |--- entities
            |--- Building.java
            |--- BuildingStats.java
            |--- Cell.java
            |--- CellStateContainer.java
            |--- GameDetails.java
            |--- GameState.java
            |--- Missle.java
            |--- Player.java
         |--- enum
            |--- BuildingType.java
            |--- Direction.java
            |--- PlayerType.java

Interim replay viewer

If you guys are looking to view your bot's shenanigans in a more visual way, we have a nice little viewer built by someone from the forum that will let you do just that.

Check out his replay viewer, and if you have any issues running it, let us know on our forum so we can help you out!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].