Redefining Game Engine Architecture through Concurrency

Over the past 30 years, software developers have been conveniently taking advantage of hardware performance increase, giving little consideration to internal architecture changes of the hardware like central processing unit. In the years to come, these hardware architectural changes will affect software architectures and can no longer be ignored. This is especially true for real-time applications, which tend to push the limits of hardware and take the most advantage of available resources. As a result, computer game applications which are inherently real-time and known for pushing computer hardware boundaries will not be immune. By studying the concepts of concurrency, multithreading and multi-core CPU technology, this paper redefines the existing linear architecture of game engines as a generic concurrent and multi-core friendly architecture. Major game engine modules and their inter-dependencies are identified in order to design the new architecture. A sample game was developed to evaluate the performance of the proposed architecture. The comparison of the test results provided in this paper indicates noticeable improvements in the concurrent architecture over the conventional linear approach.

[1]  Timothy G. Mattson,et al.  Parallel programming: Can we PLEASE get it right this time? , 2008, 2008 45th ACM/IEEE Design Automation Conference.

[2]  Andrea Tagliasacchi,et al.  Searching for Concurrent Design Patterns in Video Games , 2009, Euro-Par.

[3]  James R. Larus,et al.  Software and the Concurrency Revolution , 2005, ACM Queue.

[4]  Walter F. Tichy,et al.  Software engineering for multicore systems: an experience report , 2008, IWMSE '08.

[5]  G. Blake,et al.  A survey of multicore processors , 2009, IEEE Signal Processing Magazine.

[6]  Esteban Walter Gonzalez Clua,et al.  An adaptative game loop architecture with automatic distribution of tasks between CPU and GPU , 2010, CIE.

[7]  Aura Conci,et al.  A new physics engine with automatic process distribution between CPU-GPU , 2008, Sandbox '08.

[8]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[9]  Sudhir P. Mudur,et al.  A Design Pattern for Parallel Programming of Games , 2012, 2012 IEEE 14th International Conference on High Performance Computing and Communication & 2012 IEEE 9th International Conference on Embedded Software and Systems.

[10]  Kjetil Raaen,et al.  A demonstration of a lockless, relaxed atomicity state parallel game server (LEARS) , 2011, 2011 10th Annual Workshop on Network and Systems Support for Games.

[11]  Herb Sutter,et al.  The Free Lunch Is Over A Fundamental Turn Toward Concurrency in Software , 2013 .

[12]  Ade Miller The task graph pattern , 2010, ParaPLoP '10.

[13]  Dragoş-Anton Manolescu,et al.  A Data Flow Pattern Language , 1997 .