This short lecture introduces advanced knowledge and skills required for building AI game bots, primarily for contests. The program is a mix of traditional algorithmic research knowledge applied to bot contests, community experience, and technical and implementational issues. The content is mostly based on my own experience in participating bot programming contests.
The labs will consist of a few small tasks and a larger project. The project will be implementating a full game bot of decent strength using the techniques from the lecture (e.g., use a particular algorithm, apply testing techniques, optimize for performance via common tricks, use AVX).
Lectures:
1. Introduction, overview of the lecture. Game types. Examples from past contests. Game proposals for the projects.
2. Evaluation function (most common ingredients, examples from game contests). Greedy strategy. Iterative opponent prediction.
3. Technical issues: debugging, proper time management, measuring performance, testing (setup, sequential testing, confidence, timed vs fixed, paper-rock-scissors syndrome).
4. Optimizations: preprocessing, bitboarding, AVX (engine, implementing a BFS).
5. Beam search (straight vs nested, limiter, greedy strategy, predicing the opponent, action pruning, effiecient implementation, time management).
6. MCTS (decoupled, UCT forest, effiecient implementation, light vs heavy simulation, action pruning).
7. Minimax (traditional improvements, applications to games with simultaneous moves, Cultist Wars example).