{"id":2828,"date":"2014-02-05T14:22:42","date_gmt":"2014-02-05T14:22:42","guid":{"rendered":"http:\/\/coherent-labs.com\/?p=2828"},"modified":"2017-11-10T16:48:11","modified_gmt":"2017-11-10T16:48:11","slug":"book-review-cryengine-game-programming-with-c-c-and-lua","status":"publish","type":"post","link":"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/","title":{"rendered":"Book review: CryENGINE Game Programming with C++, C#, and Lua"},"content":{"rendered":"<p lang=\"zxx\">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&#8217;ve shared my experience with integrating Coherent UI into CryEngine, including <a href=\"https:\/\/coherent-labs.com\/getting-the-graphics-device-in-cryengine-3-5-4-the-hard-way\/\">some of the struggle I had to go through<\/a> \ud83d\ude42 .<\/p>\n<p lang=\"zxx\">\n<p lang=\"zxx\">A month ago I received a reviewers copy of a quite an interesting read on the subject. The book is called &#8220;<strong>CryENGINE Game Programming with C++, C#, and Lua<\/strong>&#8221; and I would like to share with you my thoughts on it.<\/p>\n<p lang=\"zxx\">\n<div id=\"attachment_2834\" style=\"width: 253px\" class=\"wp-caption alignright\"><a href=\"\/content\/uploads\/2014\/02\/crybookcover.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2834\" class=\"size-medium wp-image-2834 \" alt=\"Book cover\" src=\"\/content\/uploads\/2014\/02\/crybookcover-243x300.jpg\" width=\"243\" height=\"300\" srcset=\"https:\/\/coherent-labs.com\/posts\/wp-content\/uploads\/2014\/02\/crybookcover-243x300.jpg 243w, https:\/\/coherent-labs.com\/posts\/wp-content\/uploads\/2014\/02\/crybookcover.jpg 500w\" sizes=\"(max-width: 243px) 100vw, 243px\" \/><\/a><p id=\"caption-attachment-2834\" class=\"wp-caption-text\">Book cover<\/p><\/div>\n<p>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&#8217;s a great reference for using CryEngine\u2019s subsystems from a programmer\u2019s point of view.<\/p>\n<p>The content itself is based on CryEngine 3.5.4, which is one of the latest iterations as of February 2014. There&#8217;s also a <a href=\"https:\/\/github.com\/inkdev\/CryENGINE-Game-Programming-Sample\" target=\"_blank\">companion project<\/a> 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.<\/p>\n<p>The book starts by explaining the building blocks for making your game &#8211; how to script your game visually using CryEngine\u2019s 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\u2019ll 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 \u201clearn by example\u201d fashion, which is my personal favorite, especially when the examples are clear and concise as is the case.<\/p>\n<p>The second half of the book is dedicated to the major subsystems in the engine &#8211; Artificial Intelligence, User Interface, Networking, Physics, Graphics and Sound. At just shy of 300 pages, you can\u2019t 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, &#8220;Dynamic alpha testing for vegetation&#8221;). 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.<\/p>\n<p>The last chapter is dedicated to debugging and profiling, covering common ways of detecting and fixing problems in CryEngine.<\/p>\n<p>Overall, it\u2019s a great resource for both beginners and intermediate users of CryEngine, although advanced knowledge in general programming is required to understand what\u2019s going on under the hood. That&#8217;s why\u00a0I wouldn\u2019t recommend it for novice programmers as they will probably be left frustrated. If you have coding experience and you&#8217;re a newcomer to CryEngine who doesn&#8217;t want to spend hours and hours looking for information, then this book is for you. If you&#8217;re already into CryEngine and you find yourself lacking a concise guide for its subsystems it&#8217;s worth the read as well.<\/p>\n<p>You can grab it from the publishers website (<a href=\"http:\/\/www.packtpub.com\/cryengine-game-programming-with-c-plus-plus-c-sharp-and-lua\/book\" target=\"_blank\">Packt publishing<\/a>), Amazon, or your favorite book retailer I guess \ud83d\ude42 .<\/p>\n<p>&nbsp;<\/p>\n<p>Follow Nick on Twitter:\u00a0<a href=\"https:\/\/twitter.com\/nikxio\">@Nikxio<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>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&#8217;ve shared my experience with integrating Coherent UI into CryEngine, including some of the struggle I had to go through \ud83d\ude42 . A month ago I [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":9830,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[410],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Book review: CryENGINE Game Programming with C++, C#, and Lua - Coherent Labs<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Book review: CryENGINE Game Programming with C++, C#, and Lua - Coherent Labs\" \/>\n<meta property=\"og:description\" content=\"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&#8217;ve shared my experience with integrating Coherent UI into CryEngine, including some of the struggle I had to go through \ud83d\ude42 . A month ago I [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/\" \/>\n<meta property=\"og:site_name\" content=\"Coherent Labs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/CoherentLabs\/\" \/>\n<meta property=\"article:published_time\" content=\"2014-02-05T14:22:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-11-10T16:48:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/coherent-labs.com\/posts\/wp-content\/uploads\/2014\/02\/stencil.blog-post-feature-78.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Nick\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CoherentLabs\" \/>\n<meta name=\"twitter:site\" content=\"@CoherentLabs\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nick\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/\",\"url\":\"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/\",\"name\":\"Book review: CryENGINE Game Programming with C++, C#, and Lua - Coherent Labs\",\"isPartOf\":{\"@id\":\"https:\/\/coherent-labs.com\/posts\/#website\"},\"datePublished\":\"2014-02-05T14:22:42+00:00\",\"dateModified\":\"2017-11-10T16:48:11+00:00\",\"author\":{\"@id\":\"https:\/\/coherent-labs.com\/posts\/#\/schema\/person\/0f7e122b7a2587b2ccaf7fe8f9964f94\"},\"breadcrumb\":{\"@id\":\"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/coherent-labs.com\/posts\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Book review: CryENGINE Game Programming with C++, C#, and Lua\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/coherent-labs.com\/posts\/#website\",\"url\":\"https:\/\/coherent-labs.com\/posts\/\",\"name\":\"Coherent Labs\",\"description\":\"Cross-Platform Game UI Middleware\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/coherent-labs.com\/posts\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/coherent-labs.com\/posts\/#\/schema\/person\/0f7e122b7a2587b2ccaf7fe8f9964f94\",\"name\":\"Nick\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/coherent-labs.com\/posts\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cf9bc3aa3b82bb10f4cc082fad0faa59?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cf9bc3aa3b82bb10f4cc082fad0faa59?s=96&d=mm&r=g\",\"caption\":\"Nick\"},\"url\":\"https:\/\/coherent-labs.com\/posts\/author\/nick\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Book review: CryENGINE Game Programming with C++, C#, and Lua - Coherent Labs","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/","og_locale":"en_US","og_type":"article","og_title":"Book review: CryENGINE Game Programming with C++, C#, and Lua - Coherent Labs","og_description":"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&#8217;ve shared my experience with integrating Coherent UI into CryEngine, including some of the struggle I had to go through \ud83d\ude42 . A month ago I [&hellip;]","og_url":"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/","og_site_name":"Coherent Labs","article_publisher":"https:\/\/www.facebook.com\/CoherentLabs\/","article_published_time":"2014-02-05T14:22:42+00:00","article_modified_time":"2017-11-10T16:48:11+00:00","og_image":[{"width":1200,"height":600,"url":"https:\/\/coherent-labs.com\/posts\/wp-content\/uploads\/2014\/02\/stencil.blog-post-feature-78.jpg","type":"image\/jpeg"}],"author":"Nick","twitter_card":"summary_large_image","twitter_creator":"@CoherentLabs","twitter_site":"@CoherentLabs","twitter_misc":{"Written by":"Nick","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/","url":"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/","name":"Book review: CryENGINE Game Programming with C++, C#, and Lua - Coherent Labs","isPartOf":{"@id":"https:\/\/coherent-labs.com\/posts\/#website"},"datePublished":"2014-02-05T14:22:42+00:00","dateModified":"2017-11-10T16:48:11+00:00","author":{"@id":"https:\/\/coherent-labs.com\/posts\/#\/schema\/person\/0f7e122b7a2587b2ccaf7fe8f9964f94"},"breadcrumb":{"@id":"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/coherent-labs.com\/posts\/book-review-cryengine-game-programming-with-c-c-and-lua\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/coherent-labs.com\/posts\/"},{"@type":"ListItem","position":2,"name":"Book review: CryENGINE Game Programming with C++, C#, and Lua"}]},{"@type":"WebSite","@id":"https:\/\/coherent-labs.com\/posts\/#website","url":"https:\/\/coherent-labs.com\/posts\/","name":"Coherent Labs","description":"Cross-Platform Game UI Middleware","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/coherent-labs.com\/posts\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/coherent-labs.com\/posts\/#\/schema\/person\/0f7e122b7a2587b2ccaf7fe8f9964f94","name":"Nick","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/coherent-labs.com\/posts\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cf9bc3aa3b82bb10f4cc082fad0faa59?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cf9bc3aa3b82bb10f4cc082fad0faa59?s=96&d=mm&r=g","caption":"Nick"},"url":"https:\/\/coherent-labs.com\/posts\/author\/nick\/"}]}},"_links":{"self":[{"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/posts\/2828"}],"collection":[{"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/comments?post=2828"}],"version-history":[{"count":1,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/posts\/2828\/revisions"}],"predecessor-version":[{"id":9433,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/posts\/2828\/revisions\/9433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/media\/9830"}],"wp:attachment":[{"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/media?parent=2828"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/categories?post=2828"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/tags?post=2828"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}