Parallel Architecture for Real-Time Video Games
Theodor Zettersten · KTH Publication Database DiVA (KTH Royal Institute of Technology) · 2010
As the number CPU cores increases, game-developers struggle to extract as much performance as possible from the underlying hardware. Aside from difficulties in designing software for concurrency, the extensive use of middleware further limits the opportunity for parallelization. Over recent years, several customized parallel solutions for real-time game applications have been developed, threading specific functionality, but a more generic solution is necessary for the future. The purpose of this project is to design, implement and evaluate an architecture for parallelizing real-time gaming and simulation software. The focus is on scheduling and state-management components that enables transparent performance scalability, for an N-core machine, while suiting a traditional game-framework A generic design is proposed which allows a game-framework to be configured for several scheduling strategies, depending on the specific application’s requirements. A standard has been created which, synchronously or asynchronously, executes wrapped units of work, tasks, in iterative cycles. Furthermore, a centralized state manager has been developed, tailored for a distributed component-based entity-system, supporting two major synchronization strategies: either deferring state-change notifications to an exclusive propagation point, or immediately propagating state-changes with locks to guarantee thread-safety. To evaluate the proposed architecture a demo application has been developed to run a flocking behavior simulation with typical game-related functional blocks such as: rendering, physics, AI, input handling etc. The demo achieves scalable performance benefits through exploiting dataparallelism and dynamically batching entity-processing to maintain an appropriate taskgranularity. A comparison between the two major synchronization strategies revealed a marginal performance benefit when deferring state-change notifications and supporting exclusive propagation.