In this project we wanted to create an artificial intelligence controller for the racing car game TORCS. Neural network controllers are well suited for car games as they can process input from the game directly into steering outputs if configured properly. We wanted to go beyond the normal scope of using evolutionary algorithms to train the controllers, and instead combine two techniques. We took the neuroevolution algorithm NEAT and instead of having it produce regular neural networks, we had it produce plastic neural networks that were capable of adapting their connection weights during execution. We experimented using both normal Hebbian plasticity and neuromodulation, and to investigate further we created a simple T-maze domain to test in. We didn’t manage to create a useful car racing controller – in fact it consistently performed worse than standard neural networks evolved with NEAT. Everything was implemented in C++ as the AI bridge software for TORCS was written in C++.
We created this project as our final project for the course Modern AI in Games at the IT University.