I have read Game Engine Architecture book. Here is what I think about it
Yesterday evening I ended up reading one of the biggest and one of the most interesting books in my life - Game Engine Architecture by Jason Gregory (@jqgregory). It contains an unimaginable amount of knowledge about almost all aspects of game engine: rendering, physics, audio, animations, resource management… and this list goes on. If you are planning (or already writing) your own game engine, you definitely should read this book. I would recommend going through the first chapters of the GAE even if you are not planning to go deep into engine dev - 1-4 chapters contain necessary information for any programmer: they teach you about memory management, parallelism, computer architecture and development tools like compilers, version control systems and profilers. I was a bit upset to find out that the book does not cover AI and networking subsystems. The third edition brought to us chapter about parallelism, so who knows, maybe forth edition will cover remaining topics? the book already covers so many aspects of game engine development, so adding remaining pieces will make it a truly ultimate source of knowledge.
For me, the most interesting and useful chapters in this book were:
- Parallelism and Concurrent Programming - teaches you about operating system fundamentals, shows how to implement synchronization primitives and work with SIMD instructions. It may be hard to get everything from the first read, but the chapter contains a lot of important information, so I recommend to come back to it from time to time to refresh your knowledge
- Resources and the File System - a small overview of how resource management can be implemented in game engines. If your software is working with lots of different resources, it will definitely interest you and maybe give an idea how to make your program better and more convenient to use
- Tools for debugging and development - debugging is one of the most important aspects of programming. If you are working with real-time systems, which moreover include live interaction with user, debugging the code may be extremely hard. Do not underestimate it, design your application architecture in a way that will ease the process of finding errors and bugs, create tools and use suitable instruments to track program’s behavior. This chapter provides a good overview of technologies used in game engines and, as always, the ideas described there can also be applied to other, not related to game engines software products
- Gameplay systems - I read these two chapters really fast (nearly two days). They contain lots of useful and inspiring information about the systems the game is built on. You will find out how to manage your game objects and customize their behavior (even without typing the actual code!), how game world editor is implemented and integrated into game engine, how to deliver events through the system and so on. After all, the game engines are written to create games on them, so do not ignore the necessity of providing good API and user interface for the game editor - without them no one would be able to unleash the potential of your creation
All in all, I think that Game Engine Architecture is an excellent book and I recommend it for any software developer and especially for game developer. If you are new to the industry like I am, you will find tons of new ideas on its pages and I guarantee that it will inspire you to make something great.