Project

lectures on game AI

Goal: sharing teaching material for the course on "game AI" as taught in the computer science MSc program at B-IT / University of Bonn during the summer term 2020

Updates

0 new
117
Recommendations

0 new
6
Followers

0 new
82
Reads

3 new
10344

Project log

Christian Bauckhage
added an update
these slides are for those who are dissatisfied with our previous simple solution to problem 16.3
of course, there is a better way of solving it, however, this requires us to leave our comfort zone and go beyond our trusted code snippets for evaluating probabilities of sequences of states
the solution we present here is based on more or less intricate dynamic programing; its advantage is that it works for state sequences of arbitrary length
 
Christian Bauckhage
added an update
these slides show how to solve the ominous practical problem 16.3
 
Christian Bauckhage
added an update
with these practical problems, we put the idea of simple Bayesian imitation learning into practice; given one of our Quake III location data sets, the task it to automatically produce NPC movements or trajectories that appear human-like
 
Christian Bauckhage
added an update
in this lecture, we study the idea of Bayesian imitation learning; given recordings of human in-game behavior, this approach enables NPCs or game-bot to produce activity patterns that appear life-like and convincing
 
Christian Bauckhage
added an update
with these practical problems, we return to self organizing maps; the 1st task is to fit a SOM of peculiar topology into one of our Quake III location data sets; the 2nd task is to implement SOM batch training
 
Christian Bauckhage
added an update
here, we first revisit applications of DTMCs in game AI and then discuss the important notion of a stationary distribution of a Markov chain
throughout, we present python / numpy snippets which practically solve common problems in this context
 
Christian Bauckhage
added an update
again, these problems consider applications of Markov chains; here, we are interested in assessing the likelihood of (more or less plausible) future events
 
Christian Bauckhage
added an update
here are even more practical problems dealing with Markov chains; in particular, we are interested in estimating Markov chains that model the in-game movements of a human player
 
Christian Bauckhage
added an update
these practical problems deal with Markov chains and their properties
 
Christian Bauckhage
added an update
previously, we looked at how learn a Markov model from data and came up with a simple scheme based on state transition counts
here, we provide a theoretically rigorous foundation for what we did there and show that our approach actually is an instance of the general technique of maximum likelihood parameter estimation
 
Christian Bauckhage
added an update
we have another look at Markov chains and discuss how to learn a Markov model from data; that is, we discuss how to estimate state spaces and state transition probabilities from a given training sequence; finally, we discuss how to avoid issues due to vanishing transition probabilities
 
Christian Bauckhage
added an update
in lecture 19, we studied Markov models or Markov chains and their use in temporal pattern recognition or in forecasting; here, we discuss how to practically implement the computations we considered there
importantly, we discuss aspects of numerical stability when working with products of probabilities; in particular, we emphasize that, in practice, we should (always) work with likelihoods rather than with probabilities
 
Christian Bauckhage
added an update
on these slides, we discuss where the idea of SOM batch training comes from and why it works; in particular, we observe that SOM batch training is a kind of fixed point iteration that iterates towards a stable configuration of the weight vectors of a SOM
 
Christian Bauckhage
added an update
in lecture 14, we studied self organizing maps or SOMs; here we present suggestions for how to implement SOM initialization and SOM training in python; in particular, we present "convenient" implementations which make use of networkx
 
Christian Bauckhage
added an update
in our final session on reinforcement learning, we study Q-learning; in contrast to all other methods we have looked at so far, this approach does not assume a policy to be given but works well nevertheless; in a sense, it is the most practically relevant technique for reinforcement learning
finally, having studied various reinforcement learning algorithms, we point out the two curses of reinforcement learning, namely the curse of modelling and the curse of dimensionality; in other words, we point out that reinforcement leaning may not be feasible for everybody (i.e. for those without access to high performance computing infrastructures) because it is, in essence, brute force computing
 
Christian Bauckhage
added an update
having previously discussed the value- and policy iteration algorithms for RL settings where we have access to a complete MDP model, we now move on and consider RL under weak MDP models; in particular, we study (first visit) Monte Carlo policy evaluation and,more importantly, temporal difference (TD) learning
 
Christian Bauckhage
added an update
this lecture, provides a first glimpse at reinforcement learning; we introduce the notion of a Markov decision process (MDP), study the Bellman equations, and discuss the value iteration and policy iteration algorithms
 
Christian Bauckhage
added an update
in this lecture, we discuss hidden Markov models (HMMs) and their use for behavior recognition
given our studies so far, HMMs should be rather easy to understand; the take home message is that they are but another specific type of Bayesian networks whose simple structure allows for efficient inference about (partially observable) temporal processes
 
Christian Bauckhage
added an update
now that we are familiar with probabilistic state machines and, more importantly, with Bayesian networks, it will be easy to study Markov chains or Markov models
we shall see that these are but a specific form of Bayesian networks which are especially suited for modelling temporal processes or state transition behaviors; as an important application example, we demonstrate how to use Markov chains to recognize behaviors (long term temporal contexts) from sequences of observed activities (short term temporal contexts)
 
Christian Bauckhage
added an update
this lecture, begins with an ever so brief summary of basic terms and concepts in probability theory; we then introduce the idea of conditional independence and move on to Bayesian networks; this lecture therefore revolves around "basic" math which we will need later on; note that our brief discussion of Bayesian networks starts from first principles and is self-contained
 
Christian Bauckhage
added an update
in lecture 14, we studied self organizing maps or SOMs; here we discuss further details, algorithms, and applications ...
 
Christian Bauckhage
added an update
these practical problems deal with fuzzy control for reactive behavior programing; the task is to implement a fuzzy controller for the movements of the paddle in breakout
 
Christian Bauckhage
added an update
these practical problems ask for implementations of artificial game agents that are capable of simple reactive behaviors; our use case it the game of breakout where the agent has to control the movement of the paddle so as to hit the ball
 
Christian Bauckhage
added an update
here are practical problems w.r.t. self-organizing maps and their use in learning abstract representations of in-game player movement data
 
Christian Bauckhage
added an update
having studied state machines for behavior generation, we observe that they realize nothing but elaborate sets of If-Then rules ...
this observation suggests a detour into fuzzy logic and fuzzy control as they allow for more intuitive reasoning in behavior programming; in this lecture, we therefore study the basic ideas behind fuzzy logic / fuzzy control and present simple examples for their use in game AI
 
Christian Bauckhage
added an update
here are practical projects on clustering (waypoint) graphs into sub-graphs
 
Christian Bauckhage
added an update
in lecture 11, we studied the idea of k-medoids clustering; these slides provide further details as to the properties of (sample) medoids
 
Christian Bauckhage
added an update
we continue our study of finite state machines; first, we briefly look at their reduction and composition and then introduce the more general ideas of non-deterministic and probabilistic finite state machines; knowing about the latter will come in handy once we study Markov chains and hidden Markov models later on
 
Christian Bauckhage
added an update
this project is for those who would like to experiment with the idea of path thinning which we discussed in lecture 10
 
Christian Bauckhage
added an update
working on this practical problem should convince you that edge labeling functions provide interesting tools for modifying the behavior of path finding algorithms; this is of practical interest when it comes to realizing more believable movement behaviors for video game NPCs
 
Christian Bauckhage
added an update
here are practical problems related to path planning; in particular, we are interested in shortest paths in grid graphs and ask for corresponding implementations of Dijkstra's- and the A* algorithm
 
Christian Bauckhage
added an update
this ever so slightly extended material for lecture 11 contains a few additional slides to further emphasize the difference between k-means and k-medoids clustering
 
Christian Bauckhage
added an update
on these slides, we discuss how to tackle the k-queens problem using tree search
 
Christian Bauckhage
added an update
with this lecture, we begin studying the problem of (believable) behavior programming for NPCs or game bots; we first discuss the behavioral hierarchy (strategic, tactic, and reactive behaviors) and then study finite state machines and finite state transducers and their use in game AI
 
Christian Bauckhage
added an update
here are slightly revised slides for lecture 09.1; we merely corrected some typos and added a few additional remarks on powers of graph adjacency matrices
 
Christian Bauckhage
added an update
here is a practical problem on problem solving as tree search; note: while you might be well familiar with the puzzle you are supposed to solve, the kind of solution we are asking for likely requires you to rethink / reconsider solutions you may seen earlier ...
 
Christian Bauckhage
added an update
here are practical problems for those who want to gather experience with Monte Carlo integration as discussed in lecture 08
 
Christian Bauckhage
added an update
in this lecture, we continue our study of methods for clustering waypoint graphs or player location data and discuss methods that cluster w.r.t. geometry and topology
first, we briefly discuss the notion of a manifold and then study self organizing maps and growing neural gasses; videos that illustrate how these approaches work are available on YouTube
 
Christian Bauckhage
added an update
to (try to) understanding why spectral clustering works and why it involves eigenvectors of the graph Laplacian, we first recall basic concepts from continuous and discrete calculus; in particular, we have a look at continuous and discrete Laplace operators having done that preparatory work, we next study the Laplace operator as it appears in wave equations and find that its eigenfunctions characterize standing waves
specializing this insight to discrete structures (i.e. graphs) then reveals that eigenvectors of the graph Laplacian characterize standing waves on a graph; this crucial finding then allows for clustering the vertices of a graph according to their dynamical properties and answers our question
 
Christian Bauckhage
added an update
in this lecture, we study k-means clustering, k-medoids clustering, and spectral clustering and have a look at how these methods behave when applied to the problem of clustering waypoint graphs
 
Christian Bauckhage
added an update
in this lecture, we first have a brief look at the notions of geometry and topology and introduce the concept of waypoint graphs as mathematical models of game worlds
we then continue our study of the A* star algorithm for path planning and discuss the notion of an admissible heuristic
moving on, we discuss how to equip game bots with more life-like movement behavior; one of the main ideas we will look into is the use of force fields to generate smooth movements between waypoints
we conclude this lecture with an outlook on techniques for waypoint clustering
 
Christian Bauckhage
added an update
in lecture 09, we studied informed or heuristic tree search strategies which consider the the problem definition / state space structure together with additional pieces of information / background knowledge
the most important informed search algorithm we studied was the A* algorithm; when it comes to path planning, this is the method of choice; however, its heuristic for node expansion is fairly abstract
on these additional slides, we demonstrate that search heuristics can also be simple and intuitive; however, we also show that using simple heuristics during tree search may lead to sub-optimal results
 
Christian Bauckhage
added an update
these slides present ideas for how to implement labeled graphs in python; in particular we discuss the use of the package networkx and show how it allows us to compute shortest paths
 
Christian Bauckhage
added an update
these slides provide additional material for lecture 08; we briefly demonstrate that Monte Carlo tree search (MCTS) has a wider range of applications than just finding good moves in two-player turn-based games; in particular, we demonstrate the use of MCTS for path planning
 
Christian Bauckhage
added an update
these slides provide additional material for lecture 07; first, we present simple python implementations for breadth- and depth-first tree search as discussed in the lecture; then, we show how to modify /extend these bare bone procedures such that they return state space paths that solve the problem under consideration
 
Christian Bauckhage
added an update
in this third set of slides for lecture 09, we discuss the A* algorithm for shortest path computation
 
Christian Bauckhage
added an update
in this second set of slides for lecture 09, we discuss Dijkstra's algorithm for shortest path computation
 
Christian Bauckhage
added an update
in many video games, NPCs or game bots need to be able to autonomously navigate game maps, that is, to find their way from a source- to a target position in the game world
our main goal for lecture 09 is therefore to familiarize ourselves with Dijkstra's algorithm and with the A* algorithm for shortest path planning (or route planning if you wish); again, the slides for this lecture will be split into three sets
in this first set of slides for lecture 09, we recall basic terms and definitions from the area of graph theory
 
Christian Bauckhage
added an update
in this third set of slides for lecture 08, we (only) scratch the surface of the exploration / exploitation dilemma and ever so briefly present two strategies for the multi-armed bandit problem
both notions, i.e. the exploration / exploitation dilemma and the multi-armed bandit problem, are closely intertwined and of crucial importance in many areas of AI/ML; we will encounter them again once we study reinforcement learning
 
Christian Bauckhage
added an update
in this second set of slides for lecture 08, we study Monte Carlo tree search (MCTS)
MCTS had been a corner stone of game AI for about 15 years, but really rose to public prominence in 2016 when it played a key role in Google DeepMind's AlphaGO; here, we look at the fundamental ideas behind this technique
 
Christian Bauckhage
added an update
our main goal for lecture 08 is to develop an understanding of the idea of Monte Carlo tree search (MCTS); however, the slides for lecture 08 are split into three sets
in this first set of slides, we introduce the notion of a Monte Carlo method; Monte Carlo techniques provide very general tools for a wide variety of problems in mathematics and computer science and, in order to familiarize ourselves with the basic ideas, we look at a simple example of Monte Carlo integration
 
Christian Bauckhage
added an update
here are several practical problems / programming tasks that ask for implementations of minmax searches for tic tac toe and connect four
 
Christian Bauckhage
added an update
here are two problems related to the minmax algorithm
 
Christian Bauckhage
added an update
in this second set of slides for lecture 07, we study classical uninformed strategies for search tree expansion, namely breadth-first search and depth first search; in particular, we will discuss aspects of computational complexity of these approaches; our goal is to prepare ourselves for the study of Monte Carlo tree search and its benefits ...
 
Christian Bauckhage
added an update
the slides for lecture 07 are split into two separate sets ...
in this first set of slides, we point out that tree search is a very general idea that applies whenever a state space can be modeled as a graph; we look into the important notion of a well defined problem and study general aspects of search tree expansion
 
Christian Bauckhage
added an update
in this lecture, we look at "simple" ideas of how to either improve minmax searches or make them searches feasible at all
in particular, we briefly discuss the ideas of alpha-beta pruning and depth restricted searches; studying the latter, we also look at the important concept of features of a game state and at the notion of evaluation functions; we then briefly discuss minmax searches for games involving elements of chance and finally have another look at the history and state of the art of game AI for turn based zero sum games
 
Christian Bauckhage
added an update
here are two more problems related to tic tac toe
 
Christian Bauckhage
added an update
in this lecture, we introduce even more basic terms and definitions; among others, we look at the notion of a zero sum game
we then discuss the backward induction algorithm which allows for solving zero sum games
finally, we introduce and discuss the utterly important minmax algorithm which is at the heart of almost all game AI solutions for zero sum, turn based two player games (yes, at its very core, even AlphaGO is based on minmax searches, too)
 
Christian Bauckhage
added an update
in this lecture, we first (very briefly) introduce the notion of partially ordered sets or posets and look at their relation to game trees
second of all, and more importantly, we discuss a python/numpy implementation of a rudimentary game engine for tic tac toe; the ides and concepts we discuss may come in handy for the practical projects of this course
in passing, we will also have a first glance at basic concepts in the area of graph theory
 
Christian Bauckhage
added an update
those who want to put their new found knowledge into practice might want to tackle the tasks on this problem sheet; it basically asks for simple solutions for more intelligent NPCs for the games of tic tac toe and connect four (which both are deterministic, turn-based, two-player, zero-sum games of perfect information)
 
Christian Bauckhage
added an update
here is simple python / numpy implementation of tic tac toe (also see lecture 04)
the core problem for the exercises / practical problems is to replace the silly function move_at_random by more intelligent solutions ...
 
Christian Bauckhage
added an update
in 2014, we recorded 22 lectures of the game AI course and uploaded them to YouTube; while the video quality is not always stellar and the course has since been slightly modified, the 2020 circumstances still suggest to check them out:
 
Christian Bauckhage
added an update
to begin our study of game AI techniques, we define several basic concepts; in particular, we look at the notions of:
(in)complete information games, (im)perfect information games, game entities, entity attributes, configurations, state spaces, game states, moves, and game trees
 
Christian Bauckhage
added an update
throughout this course, we will get to know several artificial intelligence (AI) techniques; to better appreciate why it is difficult to implement cognitive capabilities on machines and why certain simple algorithms are referred to as AI algorithms, it is instructive to have a look at what intelligence actually is; this is what we attempt in the first part of this lecture
in the second part, revisit the history of artificial intelligence and computer games, look at technical milestones achieved over the past decades, and summarize the current state of the art in game AI
 
Christian Bauckhage
added an update
in the summer term 2020, the course on game AI will be taught via ZOOM
we will soon begin to post revised / updated lecture slides for the course; stay tuned ...
 
Christian Bauckhage
added an update
for the fun of it and because we mentioned them several times throughout this course, we devote our final lecture on game AI to genetic algorithms; we briefly discuss fitness functions, selection mechanisms, genetic encoding schemes, and genetic operators such as recombination and mutation and show how genetic algorithms can learn policies in a Markov decision process; we conclude with as brief illustration of genetic programming
 
Christian Bauckhage
added an update
in our final session on reinforcement learning, we study Q learning; in contrast to all other methods we have looked at so far, this approach does not assume a policy to be given but works well nevertheless; finally, having studied various reinforcement learning algorithms, we point out the two curses of reinforcement learning, namely the curse of modelling and the curse of dimensionality; in other words, we point out that reinforcement leaning may not always work well because it is, in essence, brute force computing
 
Christian Bauckhage
added a research item
The problem of creating believable game AI poses numerous challenges for computational intelligence research. A particular challenge consists in creating human-like behaving game bots by means of applying machine learning to game-play data recorded by human players. In this paper, we propose a novel, biologically inspired approach to behavior learning for video games. Our model is based on the idea of movement primitives and we use Archetypal Analysis to determine elementary movements from data in order to represent any player action in terms of convex combinations of archetypal motions. Given these representations, we use supervised learning in order to create a system that is able to synthesize appropriate motion behavior during a game. We apply our model to teach a first person shooter game bot how to navigate in a game environment. Our results indicate that the model is able to simulate human-like behavior at lower computational costs than previous approaches.
Christian Bauckhage
added a research item
Most computer games that are set in simulated 3D worlds require the player to act according to his or her current location. For the programming of convincing artificial game agents this poses the problem of providing them with a sense of where they are. However, due to the growing size and complexity of games, manual annotations that capture all essential areas and aspects may soon become infeasible. In this paper, we therefore propose a data-driven approach to the semantic clustering of in-game locations. Following the paradigm of gamebot programming by human demonstration, we apply the technique of spectral clus- tering to automatically derived waypoint maps. First results underline that this approach indeed provides spatial partitions of game maps that make sense from a gamers point of view.
Christian Bauckhage
added a research item
Present day video games offer interesting perspec-tive for computer science research and eduction. As the first generation in history that grew up playing computer games is gradually moving from being students to being teachers, we are now witnessing a growing number of scientific publications and university courses dealing with games. In this contribution, we will report on both these aspects. By means of the problem of behaviour modelling for game characters, we will outline the po-tential of modern commercial games for research in subsymbolic machine learning. Using the network traffic of multiplayer games as input for our algorithms, we will present results obtained with different neural network architectures. Finally, we also shall point out the benefits of video games in teaching machine learning materials and report on first encouraging experiences with computer games in undergraduate education.
Christian Bauckhage
added an update
having discussed the value- and policy iteration algorithms, we move on and study the ideas behind the temporal difference (TD) learning algorithm
 
Christian Bauckhage
added a research item
Superior weapon handling is the road to success in first person shooter games. On the expert level of gameplay, this demands more than just accurate tracking and targeting of opponents. It also requires knowledge about the behavior and characteristics of different weapons in the player's arsenal. Given enough practice, human players usually master both skills. Usual gamebots, in contrast, can only track and target but lack the sense for the appropriateness of a weapon in a given situation. As a consequence, their performance and behavior appears non-natural. In this paper, we propose to make use of machine learning techniques to realize aiming behavior that is adapted to the spatio-temporal context. We will present a mixture of experts architecture of neural networks which is specialized in the use of several weapons. Experimental result show that this paradigm indeed is able to produce more human-like aiming behavior.
Christian Bauckhage
added an update
in this lecture, we have a first look at reinforcement learning; we introduce the notion of a Markov decision process (MDP), study the Bellman equations and the value iteration and policy iteration algorithms
 
Christian Bauckhage
added 2 research items
As it strives to imitate observably successful actions, imitation learning allows for a quick acquisition of proven behaviors. Recent work from psychology and robotics suggests that Bayesian probability theory provides a mathematical framework for imitation learning. In this paper, we investigate the use of Bayesian imitation learning in realizing more life-like computer game characters. Following our general strategy of analyzing the network traffic of multi-player online games, we will present experiments in automatic imitation of behaviors contained in human generated data. Our results show that the Bayesian framework indeed leads to game agent behavior that appears very much human-like.
Traditionally, the programming of bot behaviors for com-mercial computer games applies rule-based approaches. But even complex or fuzzyfied automatons cannot really chal-lenge experienced players. This contribution examines whether bot programming can be treated as a pattern recog-nition problem and whether behaviors can be learned from recorded games. First, we sketch a technical computing in-terface to a commercial game that allows rapid prototyping of classifiers for bot programming. Then we discuss the use of self organizing maps to represent manifolds of high dimen-sional game data and how multilayer perceptrons can model local characteristics of such manifolds. Finally, some exper-iments in elementary behavior learning are presented.
Christian Bauckhage
added an update
in this lecture, we discuss hidden Markov models and how to use them for behaviour recognition; given what we studied so far, HMMs are rather easy to understand; the take home message is that they are but another special kind of Bayesian networks whose simple structure allows for efficient inference about (partially observable) temporal processes
 
Christian Bauckhage
added an update
having familiarized ourselves with probabilistic automata and, more importantly with Bayesian networks, we are now well prepared to study the idea of Markov chains or Markov models; we shall see that these are but a specific form of Bayesian networks which are especially suited for modelling temporal processes or state transition behaviours; as an important application example, we demonstrate how to use Markov chains to recognize behaviours (long term temporal contexts) from sequences of observed activities (short term temporal contexts)
 
Christian Bauckhage
added an update
in this lecture, we first recall basic concept from probability theory; we then introduce the idea of conditional independence and move on to Bayesian networks; in other words, this lecture revolves around "basic" mathematics which will come in handy later on; note that our discussion of Bayesian networks starts from first principles; it is self-contained but brief
 
Christian Bauckhage
added an update
having studied state machines for behaviour generation, we may observe that they realize nothing but elaborate sets of If-Then rules; this suggests a detour into fuzzy logic and, in particular, fuzzy control because they allow for more intuitive reasoning in behaviour programming; in this lecture, we therefore study the basic ideas behind fuzzy logic / fuzzy control and present simple examples for their use in game AI
 
Christian Bauckhage
added an update
here, we continue our study of finite state machine; we touch on reduction and composition of finite state machines and introduces the ideas of non-deterministic and probabilistic finite state machines; knowledge as to these concepts will come in handy later on when we study Markov chains and hidden Markov models
 
Christian Bauckhage
added an update
in this lecture, we begin studying the problem of (believable) behaviour programming for game agents; we have a look at the behavioural hierarchy (strategic, tactic, reactive) and study finite state machines and finite state transducers and their roles in game AI
 
Christian Bauckhage
added an update
we continue our study of methods for clustering waypoint graphs or player location data and discuss methods that cluster w.r.t. geometry and topology; in particular, we discuss self organizing maps and neural gasses; videos on how these work are available at
 
Christian Bauckhage
added an update
having familiarized ourselves with the Laplace operator, we are now able to look at the physics behind spectral clustering; to this end, we shall solve the wave equation to learn about eigenfuctions of the Laplace operator which represent standing waves; looking at waves over discrete structures (graphs) we then realize that the eigenvectors of the Graph Laplacians represent standing waves on a graph
 
Christian Bauckhage
added an update
previously, we have seen that spectral clustering can cluster graphs or networks into reasonable substructures; however, a question that is oddly often left unanswered is: why does spectral clustering work?
if the computer science literature tries to answer it at all, we typically find (convoluted) explanations that have to do with relaxed versions of the min-cut problem ... yet, we shall see that a more straight forward explanation comes from physics
to prepare ourselves for what is to come, this lecture recalls the notion of the Laplace operator for continuous and discrete multivariate functions
 
Christian Bauckhage
added an update
in this lecture, we study k-means clustering, k-medoids clustering, and spectral clustering and investigate how these methods behave when applied to the problem of clustering waypoint graphs
 
Christian Bauckhage
added a research item
Evaluating the spatial behavior of players allows for comparing design intent with emergent behavior. However, spatial analytics for game development is still in its infancy and current analysis mostly relies on aggregate visualizations such as heatmaps. In this paper, we propose the use of advanced spatial clustering techniques to evaluate player behavior. In particular, we consider the use of DEDICOM and DESICOM, two techniques that operate on asymmetric spatial similarity matrices and can simultaneously uncover preferred locations and likely transitions between them. Our results highlight the ability of asymmetric techniques to partition game maps into meaningful areas and to retain information about player movements between these areas.
Christian Bauckhage
added an update
in this lecture, we continue our study of the A* star algorithm for path planning and discuss the notion of an admissible heuristic
we then move on and discuss how to equip game bots with more life-like motion behaviour; one of the main ideas we look into is the use of force fields to generate smooth movements between waypoints; we conclude with an outlook on techniques for waypoint clustering
 
Christian Bauckhage
added an update
for many games, we need NPCs or bots that can autonomously navigate game maps, that is, find their way from a source to a target position in the game world
in this lecture, we therefore begin to study the problem of path planning; we first introduce further important concepts from graph theory and look at graph adjacency matrices; we then then study Dijkstra's algorithm and the A* algorithm for shortest path computations in graphs
 
Christian Bauckhage
added an update
we briefly demonstrate (by means of an example) that Monte Carlo tree search (MCTS) has applications beyond deciding for moves in two-player turn-based games; in particular, we show that it can be used for path planning
 
Christian Bauckhage
added a research item
Analyzing telemetry data of player behavior in computer games is a topic of increasing interest for industry and research, alike. When applied to game telemetry data, pattern recognition and statistical analysis provide valuable business intelligence tools for game development. An important problem in this area is to characterize how player engagement in a game evolves over time. Reliable models are of pivotal interest since they allow for assessing the long-term success of game products and can provide estimates of how long players may be expected to keep actively playing a game. In this paper, we introduce methods from random process theory into game data mining in order to draw inferences about player engagement. Given large samples (over 250,000 players) of behavioral telemetry data from five different action-adventure and shooter games, we extract information as to how long individual players have played these games and apply techniques from lifetime analysis to identify common patterns. In all five cases, we find that the Weibull distribution gives a good account of the statistics of total playing times. This implies that an average player's interest in playing one of the games considered evolves according to a non-homogeneous Poisson process. Therefore, given data on the initial playtime behavior of the players of a game, it becomes possible to predict when they stop playing.
Christian Bauckhage
added an update
in this lecture, we study Monte Carlo tree search (MCTS)
MCTS had been a corner stone of game AI for about 15 years, but rose to public prominence in 2016 when it played a key role in Google DeepMind's AlphaGO
to familiarize ourselves with Monte Carlo techniques, we first look at Monte Carlo integration; we then discuss MCTS, and conclude by scratching the surface of the exploration / exploitation dilemma and ever s briefly present two strategies for the multi-armed bandit problem
 
Christian Bauckhage
added an update
in this lecture, we shall see that the idea of tree search is a very general concept and that tree search algorithms can be used for planning / problem solving whenever the state space can be modelled as a graph
we introduce the notions of a well define problem, of an optimal solution, of fringes, and search strategies and discuss common uninformed tree search algorithms and their characteristics (strengths and weaknesses)
 
Christian Bauckhage
added an update
here, we look into `simple" strategies of improving minmax searches; in particular, we briefly discuss the ideas of alpha-beta pruning and depth restricted searches; studying the latter, we also look at the important concept of features of a game state and at the notion of evaluation functions
 
Christian Bauckhage
added an update
in this lecture, we introduce the notion of a zero sum game, present the backward induction algorithm which allows for solving zero sum games, and introduce and discuss the very important minmax algorithm which provides the foundation for almost all game AI solutions for zero sum, turn based two player games (yes, at its core, AlphaGO is based on minmax searches, too)
 
Christian Bauckhage
added an update
in this lecture, we present a python/numpy implementation of a rudimentary game engine for tic tac toe; the ides and concepts we discuss may come in handy for the practical projects of this course
 
Christian Bauckhage
added an update
in order to study game AI, we first need to familiarize ourselves with certain (mathematical) concepts and basic terminology; in this lecture, we therefore discuss a series of definitions that form the basis for the study of two player turn-based games
 
Christian Bauckhage
added an update
before we set out to study the theory and practice of game AI, let's gather the tribe around the camp-fire and listen to the elders' stories of where we are coming from and where we are headed ... in sort, these slides provide an overview over the history of computer games and game AI from the 1940s to the present (2018)
 
Christian Bauckhage
added an update
content will begin to appear soon ...
 
Christian Bauckhage
added a project goal
sharing teaching material for the course on "game AI" as taught in the computer science MSc program at B-IT / University of Bonn during the summer term 2020