Currently I am in my fourth year at university, and for that year I am building a highly concurrent game framework in Erlang as my final year project. It’s a nice language that can potentially handle millions of processes, but in practice only 10’s of thousands on a standard home PC. I’m aiming to try to see if you can easily split a game up into thousands of parts that will automatically scale with the number of CPUs your using.
But this post is not about my project. Whilst doing some background research online I’ve found several nice articles and slides about concurrency in games. Here is a compiled list of my favourites:
Background
Game Benchmarks : Part 2: How Many CPU Cores Do You Need
This is the game benchmarks page from a Tom’s Hardware Guide article on how many cores you need to run apps and games. On average 4 cores only give a 0.6% increase (for games) over 3! So concurrency is clearly a problem, today.
Gamasutra Features : Multithreaded Game Engine Architectures
Three concurrent alternatives to the common game loop. I’m personally building the third architecture for my framework.
Info
Designing the Framework of a Parallel Game Engine
An article by a developer at Intel who has designed a highly concurrent game framework. A long but interesting read on how he has achieved it, and probably the best link on this page.
id Tech 5 Challenges, from Texture Virtualization to Massive Parallelization
These are some Id Software slides about some of the technologies they have built behind their upcomming game Rage. As a part of it they have built a Job based concurrency model where all of the games tasks are split into generic Jobs. At the same time they have a thread pool taking the Jobs and running them.
Tim Sweeney Slides
For those who don’t know, Tim Sweeney is one of the founders of Epic Games and worked on the Unreal engine. As someone who works on one of the most popular engines used for games, these slides are a great insight into what we should be seeing in the not-so distant future.
The next mainstream programming language
Some of this is about concurrency, however a large portion are also ideas on how functional languages could increase the code quality of games and game middle wear if used over current languages.
The end of the GPU roadmap
Very interesting set of slides on how the work inside games will (in Tim Sweeney’s eyes) be split up and parallelised in the futrue, and some of the potential speed ups from doing this. I like how the main emphasis is about underlying technologies that will do this for developers, leaving us to just handle building the games.
Valve
GDC 2007, Valve making Source multi-core
This is a more low-level set of slides on concurrency additions to Valve’s Source engine in 2007. It mainly covers a few key points about the importance of lock-free algorithms.
Multi-Threaded Challenges in the Game Space, a Conversation with Tom Leonard of Valve Fame
An interview discussing the ideas and issus behind the Source engines concurrency support. It mainly goes into why they have chosen to implement their libraries themselves rather then re-using existing libraries.
