Added readme for completed bot
[entelect-challenge-tower-defence.git] / readme.org
1 * Entelect Challenge 2018 - Tower Defence - Rustbot
2
3 This is the source code for my [[https://challenge.entelect.co.za/][Entelect Challenge]] 2018 bot. It did
4 really well, coming in 3rd place in the finals.
5
6 ** How does it work?
7
8 I've put together a blog post with the high level overview of how I
9 got to this point and how it works [[https://www.offerzen.com/blog/coding-for-the-win-how-i-built-a-tower-defence-bot][here]]. I will be putting up more
10 articles diving into the details shortly.
11
12 The short explanation is that it's a Monte Carlo Tree Search. All
13 possible moved I can make from the first state are generated. I then
14 iterate through the list of possible moved and play random games that
15 start with that move. The move that statistically wins the most random
16 games is taken as the best move.
17
18 ** Environment Setup
19
20 The Rust compiler tool-chain can be downloaded from the Rust project
21 website.
22
23 https://www.rust-lang.org/en-US/install.html
24
25 ** Compilation
26
27 The bot is written in Rust, and compiled using Cargo. For the sake of
28 running the bot in the tournament, you have to compile using the
29 ~--release~ flag (this is specified in [[./bot.json]]).
30
31 #+BEGIN_SRC shell
32     cargo build --release
33 #+END_SRC
34
35 After compilation, there will be an executable in ~target/release/~.
36
37 ** Other useful commands
38
39 You can find other interesting commands that I used in writing the bot
40 in the [[./Makefile]]. Some notable ones are:
41
42 - ~make bench~: compiles with the benchmarking feature turned on, and
43   runs my end to end benchmark.
44 - ~make profile~: similar to the benchmark, but runs single threaded,
45   for a longer time, and uses ~perf~ to gather statistics on the run.
46 - ~make submission.zip~: Creates the zip file to upload to the
47   Entelect Challenge servers.
48
49 ** License
50
51 See [[./license.org]]
52