Book review: CryENGINE Game Programming with C++, C#, and Lua
The topic of CryEngine has always created a lot of hype in the game dev community, as numerous AAA games are using it. In some of my previous posts I’ve shared my experience with integrating Coherent UI into CryEngine, including some of the struggle I had to go through 🙂 .
A month ago I received a reviewers copy of a quite an interesting read on the subject. The book is called “CryENGINE Game Programming with C++, C#, and Lua” and I would like to share with you my thoughts on it.
Both authors, Filip Lundgren (developer for CryMono) and Ruan Pearce-Authers (currently working for Crytek GmbH), have a strong background in working with CryEngine. The book gives a lot of insight into the programming side of the engine, which is mostly missing from the documentation; it’s a great reference for using CryEngine’s subsystems from a programmer’s point of view.
The content itself is based on CryEngine 3.5.4, which is one of the latest iterations as of February 2014. There’s also a companion project which is already set up to use CryMono and includes all the code written throughout the chapters. I had some issues running it out of the box but seasoned programmers will have no trouble tackling those problems.
The book starts by explaining the building blocks for making your game – how to script your game visually using CryEngine’s flowgraph system and how to create your own custom flow-nodes. It then expands on customizing the entities and game rules in your application. Halfway through the book you’ll already know how to create your level, spawn your actors, control the player camera and add triggers that execute the game logic. This is done in a “learn by example” fashion, which is my personal favorite, especially when the examples are clear and concise as is the case.
The second half of the book is dedicated to the major subsystems in the engine – Artificial Intelligence, User Interface, Networking, Physics, Graphics and Sound. At just shy of 300 pages, you can’t expect to gain in-depth knowledge of every little detail in those subsystems from reading the book, but it does give you a comprehensive overview that will get you started. One thing that I did not like was that instead of the example driven style used so far, the book becomes more of a reference in this part, with only one practical example for all the subsystems (namely, “Dynamic alpha testing for vegetation”). The subsystems part of the book does give you a lot of useful information summed up, but I feel that having a few samples would add more value.
The last chapter is dedicated to debugging and profiling, covering common ways of detecting and fixing problems in CryEngine.
Overall, it’s a great resource for both beginners and intermediate users of CryEngine, although advanced knowledge in general programming is required to understand what’s going on under the hood. That’s why I wouldn’t recommend it for novice programmers as they will probably be left frustrated. If you have coding experience and you’re a newcomer to CryEngine who doesn’t want to spend hours and hours looking for information, then this book is for you. If you’re already into CryEngine and you find yourself lacking a concise guide for its subsystems it’s worth the read as well.
You can grab it from the publishers website (Packt publishing), Amazon, or your favorite book retailer I guess 🙂 .
Follow Nick on Twitter: @Nikxio