An Architecture for a concurrent Game Engine ¶
With the shift towards multi-core CPU hardware in the last decade, game engines needed to keep up with this progress to achieve best performance on this parallel hardware. Although game developers managed to exploit the parallel hardware, this achievement required substantial effort as the established object-oriented programming languages in the field are not very well suited for parallel and concurrent programming due to their inherent use of side effects and mutable state.
The actor-based functional programming language Erlang promises to solve these problems through the use of message-passing concurrency with shared-nothing semantics. Also, the modern systems-level programming language Rust promises to solve these problems through an innovative type system, utilising linear types (ownership and borrowing). However, both languages have not yet been systematically analysed for the use in implementing game engines.
The aim of this thesis is to investigate either Erlang or Rust for implementing a concurrent game engine. The outcome should be a proposal of a general architecture for a concurrent (shared-nothing) message passing game engine. This architecture should then be put to a test in the form of a small demo, demonstrating the capabilities of the architecture and show precise performance measurements. NOTE: it is explicitly not the aim of this thesis to write a rendering/phyiscs/audio/AI substystem - they should be brought in through 3rd party libraries / bindings.
- Interest in functional programming and Erlang or Rust.
- Interest in game programming.