CryEngine Game Development Blueprints - Chris Goodswen - E-Book

CryEngine Game Development Blueprints E-Book

Chris Goodswen

0,0
35,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

CRYENGINE is a game engine developed by Crytek for PC, Playstation, Xbox, Android, and iOS. It can be used to create AAA games, movies, high-quality simulations, and interactive applications. It is most popularly used for game development.
In this book, you will start off by exploring the CRYENGINE “Blank” Game Starter-kit, creating a completely playable character from scratch and controlling its movement. You will learn how to implement a weapon and ammo class, and will create complete “start” and “end” game menus using Scaleform and C++.
Additionally, you will learn some key texturing techniques for PBR and how to create and bake maps to the lowpoly model. You will also explore how to get a static model from Maya and shaders setbup in the SDK to check the textures during creation, and create all the necessary engine files to export and see the game character's animations in your engine.
In the final third of the book, you will learn how to create objectives, set up saved games, layer on audio polish to help immerse the player in the experience, and debug game issues.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 325

Veröffentlichungsjahr: 2015

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

CRYENGINE Game Development Blueprints
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
1. Getting Started
Downloading the starter-kit
Installing the starter-kit
Part 1
Part 2
Important classes within the starter-kit
Compiling our game
Summary
2. Creating a Playable Character
Implementing player lives
Part 1 – the player code
Part 2 – the GameRules code
The big picture
Implementing player movement and rotation
The big picture
Making a camera follow the player
The big picture
Summary
3. Implementing Weapons and Ammo
Creating a weapon class
Creating the IWeapon interface
Creating the AWeapon abstract base class
Creating the CBlaster weapon class
Creating an ammo class
Creating the IAmmo class
Creating the AAmmo abstract class
Creating the CFireBallAmmo class
Creating ammo events
Summary
4. Creating an Enemy AI
Registering a new AI class
Detecting the player and preventing mobility
Shooting the player
Extending the AI
Summary
5. Creating User Interfaces
Creating the Flash UI content for our menus
Creating the main menu
Creating the end game menu
Creating UI elements
Implementing a game menu system in C++
Summary
6. The Modeling Workflow for Game Characters and Tools
Getting started
Installing the CRYENGINE SDK
Installing CryTools
An overview of the modeling workflow
Blockout
Highpoly modeling
Lowpoly modeling
UV mapping
Texturing and materials
Summary
7. Highpoly Modeling
Blockout
Highpoly
Using DynaMesh
Highpoly sculpting techniques
Sculpting out the forms
Adding the forms
Adding more details
Adding fine details
The hair system
Exporting the highpoly mesh
Summary
8. Lowpoly Modeling
Creating the lowpoly model
Tools
Getting started
Topology and edgeflow
Good and bad topology
Building the lowpoly
Creating UVs
Adding the eyes
Naming and organizing a Maya scene
Naming
Layers
LODs
Creating LODs
Summary
9. Texturing and Materials
Baking
Baking the fur and alphas
Efficient psd setup
Using masks
Basics of PBR texturing
Exporting maps
Exporting a mesh and materials into CRYENGINE
Importing the mesh by using CRYENGINE Material Editor
File check and handover
Summary
10. Building the Character Rig
Getting started
Scene settings in Maya
Authoring the deformation skeleton in Maya
The deformation skeleton rules
Building the rig
Setting up the hitboxes
Creating the phys proxies for the character
Applying the phys proxies material
Building the character's animation rig
Creating the animation skeleton
Creating the controllers
Rigging the arm
The fingers
The clavicle
Cleaning up the arm controllers
Rigging the spine
The upper body controller
The head
Cleaning up the spine controllers
Rigging the leg
Cleaning up the leg controllers
Rigging the tail
Cleaning up the tail controllers
Enhancing the deformations
The forearm twist
The upper arm twist
Finalizing the rig
Summary
11. Exporting the Character to CRYENGINE
Getting started
Art asset file types
The Crytek Geometry Format
The Character format
The Skinned Render mesh
The Crytek Geometry Animation
Creating the export groups in Maya
Exporting with y axis up
The Character Editor
Debugging in the Character Editor
Creating the character definition file
Exporting the animations to the engine
The Character Parameters file
The Skeleton List file
The physicalized attachments
Summary
12. Initial Level Blockout and Setup
Action bubble level design
References and 2D layout
Design considerations
Level content
Setting up user preferences, hotkeys, and toolbox macros
User preferences
The Auto Backup action
The Fill Selected Shapes action
The Display Dimension Figures action
The View Pane layout
Hotkeys
The Fast Rotate action
The Convert action
The Simulate Objects action
The Switch Camera action
The Toolbox Macros feature
Adapting the premade SDK content
Level duplication
Exporting objects
Exporting the world
The heightmap
Terrain layers
Vegetation instances
Time Of Day and Lighting
Using and understanding source files
Layers
Mass editing content
Stat tracking
Fixing broken content
The .cry and .pak files
Summary
13. The Flow Graph Workflow
Using Flow Graph containers
Host entities
Splitting logic over multiple Flow Graphs
Using Game Tokens to create cleaner Flow Graphs
Creating Game Tokens
Using Game Tokens
Graph Tokens
Laying out Flow Graphs to aid readability
Creating comment boxes
Using comment boxes
Thinking modularly to future-proof our work
Basic events
Test-friendly scripting
Summary
14. Scripting Gameplay Content
Scripting the main level flow and events
Event examples
Triggers
AreaTrigger
ProximityTrigger
Setting up an event listener
Working with events
AI navigation and sequences
Navigation mesh
Cover surfaces
AISequence
Uninterruptible sequences
Adding inventory
Animation events
Ending sequences
Interruptible sequences
Looping movement
Bookmarking
Using the Mannequin editor
Getting familiar with the interface
The preview workflow
Working with fragments
Adding effects to fragments
Procedural layers
Adding a new fragment
The Character Editor window
Creating fragment entries
Adding the AnimLayer
Adapting AI tasks based on player actions
Game Token states
State control
Task scripting
Advanced conditional logic
Multiple area triggers
AND gates
Implementing objectives and checkpoints
Defining the objective information
Using the MissionObjective entities
Activating the objective
Organizing the objective logic
Adding checkpoints
Summary
15. Maintaining Our Work
Skipping through the level flow
Spawnpoint entities
The tags system
Advancing the state of other level elements
Debug location triggers
Advancing complex AI sequences
Extending support to mid-playthrough updates
Debugging setup issues
Game Token debugging
AI debugging
Summary
Index

CRYENGINE Game Development Blueprints

CRYENGINE Game Development Blueprints

Copyright © 2015 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: August 2015

Production reference: 1250815

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-78439-987-0

www.packtpub.com

Credits

Authors

Richard Gerard Marcoux III

Chris Goodswen

Riham Toulan

Sam Howels

Reviewers

Anthony Barranco

Keith Homola

Guillaume Puyal

Commissioning Editor

Usha Iyer

Acquisition Editors

Indrajit A. Das

Rebecca Youé

Content Development Editor

Mamata Walkar

Technical Editor

Taabish Khan

Copy Editor

Roshni Banerjee

Project Coordinator

Shipra Chawhan

Proofreader

Safis Editing

Indexer

Priya Sane

Graphics

Abhinash Sahu

Production Coordinator

Nitesh Thakur

Cover Work

Nitesh Thakur

About the Authors

Richard Gerard Marcoux III is a very hardworking and intelligent software engineer with a passion for teaching and helping others. He has captured the attention of over 600,000 people through his YouTube channel with his efforts to educate beginners in the field of game development using the CRYENGINE technology. He also has an extensive IT background, working in the computer / software diagnosis / repair field for the past 7 years. Lately, he has been heavily involved in C++ games and middleware development, where he plans to create compelling 2D and 3D video games for all ages in genres ranging from platform games all the way to RPGs.

Chris Goodswen is a 3D character artist currently working at Crytek with 4 years of experience working with CRYENGINE. He has also worked on Ryse: Son of Rome for Xbox One as well as Warface and Hunt.

Chris is responsible for modeling and texturing characters as well as developing technical systems for characters; alongside this, he also works with universities, mentoring students and giving lectures on 3D character art and video game development.

Riham Toulan is a senior technical artist/animator working at Dice EA, who specializes in character rigging. She has more than 4 years of experience working with CRYENGINE. She worked on the highly cinematic Xbox One launch game Ryse: Son of Rome at Crytek, where she was responsible for developing rigging pipelines and tools in Maya, helping the R&D team develop new CRYENGINE technologies, and consulting the CRYENGINE licensees.

Sam Howels is a senior designer at the Nottingham-based Deep Silver Dambuster Studios. He is currently working on the upcoming sequel to the 2011 game Homefront, titled Homefront: The Revolution. He was recruited at the age of 18 after his dedicated contribution to the modding scene. He has a strong passion for technical problem solving as well as creating engaging and diverse gameplay experiences. Before joining Deep Silver, he worked on multiple AAA titles at both Crytek Frankfurt and Crytek UK, and he has over 8 years of experience in developing content with the CRYENGINE toolset.

Firstly, I would like to thank Crytek for creating such a powerful toolset for designers like me to use and abuse. The versatility and ease of use that it offered when I discovered it in 2007 is still present today, and it has enabled numerous absurd prototypes as well as facilitated the creation of the final shipped content of each title I've worked on. I'd also like to thank the team at Packt for their continued support and feedback during the writing process. It has been a fulfilling experience being able to put pen to paper and share my knowledge of setting up the content with the engine SDK. Finally, I'd like to thank everyone I've worked with at both Crytek and Deep Silver. The teams that build the technology and games are comprised of incredibly special and talented people, and working with this game engine each day would not be nearly as rewarding as it is without sitting next to a hundred other people who pour their hearts and souls into the work they create.

About the Reviewers

Anthony Barranco is a software developer who has worked at several AAA game studios, such as Ubisoft, after receiving a degree from Marist College in Poughkeepsie, New York. He is an avid gamer and programmer; whether it's Unity, Unreal Engine, CRYENGINE, Source, or Construct 2, he has tried and loved them all. He encourages new and veteran software developers to try any of these engines and help contribute to make more great games. If there is one thing he believes in, it's that game development should be accessible to anyone and everyone.

I want to thank Packt Publishing for the opportunity, the authors for writing this book, and Crytek for making CRYENGINE. Books such as this helped me achieve my dream career, and I hope this book helps someone do the same.

Keith Homola is an independent game developer who dreams of working in a large studio one day. With dedication, he has learned the many different trades of game development, including programming, 3D and 2D art tools, and both the CRYENGINE and Unreal Engine 4 game engines. His experience comes from self-learning, and he puts it to use to make games and theory.

Keith has no formal employer in the game development field. All the experience that he has acquired is through his independent work, and he hopes to use his skills at a professional studio one day.

I would like to thank my friends and family for the support over the years, the online development communities for helping me and other people to explore game development, and Packt Publishing for giving me this opportunity.

Guillaume Puyal lives in France and can be described as an enthusiastic polymath. After completing his degree in electronics, he began working on an ambitious but commercially unsuccessful web technology.

Thereafter, his passion for video games led him to lean toward game development with the CRYENGINE technology. Here, his curiosity pushed him to learn everything from modeling to the UI, and he now specializes in the lighting and materials areas.

When he isn't experimenting and implementing his ideas in CRYENGINE or trying to improve his programming skills, he works on his new software project, which he hopes to introduce to the world soon.

You can learn more about him and his work, including a CRYENGINE specific tool and documents, at http://www.guillaume-puyal.com.

I would like to thank the authors and the team at Packt Publishing for giving me the unique opportunity to review this book.

www.PacktPub.com

Support files, eBooks, discount offers, and more

For support files and downloads related to your book, please visit www.PacktPub.com.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

https://www2.packtpub.com/books/subscription/packtlib

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.

Why subscribe?

Fully searchable across every book published by PacktCopy and paste, print, and bookmark contentOn demand and accessible via a web browser

Free access for Packt account holders

If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.

Preface

This book is authored by Richard Marcoux, Chris Goodswen, Riham Toulan, and Samuel Howels; they will be your instructors and friends throughout this book. You are about to embark on a journey of discovery and find out what you can achieve in CRYENGINE, learn some tricks of the trade, the game programming techniques, the new aspects of the CRYENGINE code, and most importantly, how to create full working games. If there is one thing that we want you to take away after reading this book is that it's not the game we will be making, but instead the techniques and the problem solving that went into making it. The goal is to arm you with the knowledge and out-of-the-box thinking that is required to create a CRYENGINE game.

What this book covers

Chapter 1, Getting Started, shows you the CRYENGINE "Blank" Game Starter-Kit that was specifically designed to teach developers how to create a CRYENGINE game from scratch, and provide a blank slate for them to start with. You will install and compile this kit.

Chapter 2, Creating a Playable Character, shows you how to create a completely playable character from scratch and control its movement with the keyboard.

Chapter 3, Implementing Weapons and Ammo, shows you how to implement a weapon and ammo system, as the player will need a way to defeat bad guys.

Chapter 4, Creating an Enemy AI, shows you how to create an enemy AI and give it some basic intelligence.

Chapter 5, Creating User Interfaces, shows you how to create a complete start and end game menu by using Scaleform, Flash, and C++.

Chapter 6, The Modeling Workflow for Game Characters and Tools, gives an overview of the character art workflow principles, terminologies, and how to prepare for the tasks ahead.

Chapter 7, Highpoly Modeling, discusses why we need to create a highpoly model and its uses in the game in current and next-gen game development. In this chapter, we will be working with some of the principles of highpoly modeling and going through a basic workflow to create the highpoly model in Zbrush.

Chapter 8, Lowpoly Modeling, covers the lowpoly generation and some of the most important areas to remember, such as efficient topology, areas to remember for deformation, other important topics, such as an efficient UV mapping, and how to generate LODs from the original lowpoly.

Chapter 9, Texturing and Materials, explores the techniques required to create and bake textures. In this chapter, we will take a look at the tools, such as Photoshop and Zbrush, used for creating texture maps, how to bake the highpoly information to the lowpoly model by using xNormal, and also see how these baked maps can be used in the creation of textures.

Chapter 10, Building the Character Rig, shows you how to build an animator friendly rig for the character in Maya. We will also discuss the folder structure for the character files and explore the already made deformation skeleton on the character, and how to create a simple and efficient rig using that skeleton.

Chapter 11, Exporting the Character to CRYEngine, shows you how to export a character to CRYENGINE step-by-step and explains the animation pipeline and how to use Character Editor to debug and add extra secondary animations to your characters with CRYENGINE physics.

Chapter 12, Initial Level Blockout and Setup, covers the good working practices and tips used for quickly jumping into making a new level in the SDK, giving us a good base to start adding more complex scripted content later on.

Chapter 13, The Flow Graph Workflow, introduces you to the concept of Game Tokens to communicate with the Flow Graphs. We'll also cover how to set up the level logic to modularly accommodate the various scripted elements that go into making a single player level in CRYENGINE.

Chapter 14, Scripting Gameplay Content, dives deep into creating all the elements that make up a Crysis style action bubble, as we now have a solid grounding in how to efficiently and cleanly produce content for a level in CRYENGINE.

Chapter 15, Maintaining Our Work, covers testing the content or fixing the bugs that take place in the last few minutes of a half hour level, which can be a repetitive and time-wasting process.

What you need for this book

In this book, we would be using the following software:

CRYENGINE (Version 3.8.1)The CRYENGINE "Blank" Game Starter-Kit (Version 2.1.0)Visual Studio 2013 (any version)7-Zip or any 7-Zip LZMA2 compatible file archiver (any version)Autodesk MayaCRYENGINE3 Sandbox Editor

Who this book is for

This book is intended for CRYENGINE game developers wanting to develop their skills with the help of industry experts. You need to have a good knowledge level and understanding of CRYENGINE in order to allow the efficient programming of core elements and applications.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.

To send us general feedback, simply e-mail <[email protected]>, and mention the book's title in the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the example code

You can download the example code files from your account at http://www.packtpub.com for all the Packt Publishing books you have purchased. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

Downloading the color images of this book

We also provide you with a PDF file that has color images of the screenshots/diagrams used in this book. The color images will help you better understand the changes in the output. You can download this file from https://www.packtpub.com/sites/default/files/downloads/B03477_Graphics.pdf.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title.

To view the previously submitted errata, go to https://www.packtpub.com/books/content/support and enter the name of the book in the search field. The required information will appear under the Errata section.

Piracy

Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at <[email protected]> with a link to the suspected pirated material.

We appreciate your help in protecting our authors and our ability to bring you valuable content.

Questions

If you have a problem with any aspect of this book, you can contact us at <[email protected]>, and we will do our best to address the problem.

Chapter 1. Getting Started

In this chapter, we will discuss the following topics:

How to download the CRYENGINE "Blank" Game Starter-KitHow to install the starter-kitImportant classes of the starter-kit and the roles they playHow to compile a game project

Downloading the starter-kit

In order to create any CRYENGINE game, there is a need to have a clear place to start. For us, this comes as a blank slate using my very own starter-kit. By using it, we rid ourselves of overcomplications and gain several advantages:

All code written is ours, so we have a clear and precise understanding of what the code does.All code written is specifically for our game, so we don't have unnecessary code bloat.Since all of our code is exactly and only what we need, our code will run faster.All starter-kit code is written cleanly and is heavily documented. This allows us to have a better understanding of how to use CRYENGINE's interfaces.

Now that we know why we will be using my starter-kit, let's see how to download it:

Navigate to the download page at http://www.cryengine.com/community/viewtopic.php?f=355&t=124265. It should look like this:Scroll down the page to the Download section and download Version 2.1.0 by clicking on its link.

Note

For the sake of clarity and consistency, even if there is a newer version of the starter-kit available, it is strongly recommended that you stick with Version 2.1.0. Version 2.1.0 of the starter-kit is fully compatible with CRYENGINE Version 3.8.1 and, as such, it is strongly recommended that you use that version for the remainder of this book.

Installing the starter-kit

Before the starter-kit can be used, it must be installed. Installing the starter-kit is very easy and it is responsible for adding a project wizard to Visual Studio and setting up the needed CRYENGINE environment variables. So let’s get started.

Part 1

Now that we have downloaded the starter-kit, it's time to install it:

Unzip the downloaded archive using 7-Zip (http://www.7-zip.org/) or any other file archiver that supports the 7z file format with LZMA2 compression.You should now see an application (.exe) called CRYENGINE Game Starter-Kit - Blank Installer V2.0.8.exe; launch it. It should look like this:Click on the Browse button to search for the path to CRYENGINE's Code folder. It should look like this:

Note

It is important to note that CRYENGINE's Code folder is the one that contains all of CRYENGINE's code. It contains the CryENGINE, GameSDK, and SDKs subfolders. In the event that you do not have a Code folder at all, you will need to extract CRYENGINE_GameCode_xxxxx or a similar zip archive located in CRYENGINE's root folder. It is very important that the Code folder is in the right location. There should be exactly 2 subdirectories in CRYENGINE’s root folder, like this: CRYENGINE_ROOT/CRYENGINE_pc_eaascode/Code.

Check all of the Visual Studio versions you want to install the starter-kit to, shown here:Lastly, click on the Install button to actually install the starter-kit. After the installation completes, you will get the following message:

Part 2

Now that we have successfully installed the CRYENGINE "Blank" Game Starter-Kit into Visual Studio, we can create our CRYENGINE game project:

Launch your preferred and supported Visual Studio IDE.

Note

For this book, I will be using Visual Studio 2013 Ultimate. You are free to use any supported version you wish. However, you may notice some slight differences. Current supported versions of Visual Studio include any edition of 2012, 2013, and 2015.

Now that we have launched Visual Studio, we can create our game project by using the CRYENGINE "Blank" Game Starter-Kit we installed earlier. To do this, go to File | New | Project. You will see the following menu options:Go to Templates | Visual C++ | CRYENGINE. Select CRYENGINE Game Starter-Kit - Blank and fill in your project information.

Note

You are free to choose whatever name and location you wish. However, I strongly recommend you choose a location outside your CRYENGINE install directory. Throughout this book, we will be calling our game project GAS, which stands for Great Action Side-Scroller. Make sure to uncheck Create directory for solution.

Click the OK button. This will launch the CRYENGINE game starter-kit Project Creation Wizard. It should look like this:Fill in all of the information for your game project, as shown here:

Since we have chosen to call our game GAS, it is recommended to set Project Name as GAS too. Also, it is strongly advised that you check the Include PluginSDK and Set As Active Game options. Including the PluginSDK developed by Hendrik Polinski allows users to add plugins to their game without modifying any actual game code. The advantage is that everything is modularized and features can be bundled up and shared between many projects. If you would like to get in contact with Hendrik, you can do so at https://github.com/hendrikp. Setting our game as active allows CRYENGINE to detect and use our game by modifying the system.cfg file in CRYENGINE's root folder. Although this is all advised, you are free to fill in the data however you wish.

Click on the Create button. After the project has been created, you will get the following screen:

Important classes within the starter-kit

As we have concluded the setting up of the starter-kit, it is probably a good time to bring up a few disclaimers:

While starter-kits in general are extremely helpful, they are technically not a true blank slate.There are a few interfaces and classes that will need to be explained before writing code.Since there is absolutely no gameplay-specific or genre-specific code or classes, the gameplay mechanics and many other things must be implemented from scratch. Although I consider this to be a good thing, some may not.

To address the previous concerns, let's take a closer look at some of the more important classes within the starter-kit that we will be using on a regular basis, keeping in mind that the names of these classes will be different for you as they are based on the project's name:

CEditorGASGame: This class implements CRYENGINE's IEditorGame interface. It is used to create, update, and shut down your game while you are running it inside the CRYENGINE Sandbox Editor. You often need your game to behave differently while testing inside the editor; this class allows us to do just that. It acts as a proxy for our game, giving us the ability to add or remove functionality that should only exist while playing your game in the editor. For now, we simply forward most calls to the actual Game class so that our game behaves similarly in the editor and in the Launcher.CGASGame: This class implements CRYENGINE's IGame interface. It is used to update your game and the rest of CRYENGINE's systems. It acts as a hub that manages every system that your game will use, controls communication between them, and facilitates all of the core mechanics of your game. You can view this class as your game's manager—something that orchestrates all of the little moving parts of your game. For now, we simply update the Game Framework, which, in turn, updates the rest of CRYENGINE's systems such as the Renderer, Input Manager, and Physics System.CGASGameRules: This class implements CRYENGINE's IGameRules interface. It is used to carry out your game's rules and works hand-in-hand with your Game class. It is a class that does and should receive notifications about any gameplay-specific events so that it may decide how best to handle them in accordance with your game's rules. It is also common for this class to dispatch gameplay-specific events to your Game class. For now, this class simply creates the player when asked to do so.CGASModule: This class is a completely custom class in that it doesn't derive from any CRYENGINE interface. I created this class to help you; by definition, it is a helper class. Its sole purpose is to provide project-wide access to all of your game's systems and instantiate them only when needed. It does so by exposing itself as a global pointer called g_pCGASModule, which can be used inside any scope, inside any class, and inside any file to retrieve/create any of your game's systems.

Note

It is strongly advised that if you create a custom system for your game, you should add and implement a singleton get method, as shown in the other get methods in this class.

CGASStartup: This class implements CRYENGINE's IGameStartup interface. It is used to create and initialize all of CRYENGINE's systems and your Game class. This class is instantiated automatically from outside your Game DLL by the Launcher, and is expected to create and initialize all of CRYENGINE's modules and ultimately create and run your game. For now, we load CryGameFramework.dll, retrieve its exported factory method, and call it to instantiate an instance of the IGameFramework interface. We then proceed to initialize it, which, in turn, loads, creates, and initializes all of CRYENGINE's modules.CPlayer: This class implements CRYENGINE's IActor interface. Every CRYENGINE game needs to have a player implementation. This is the place to implement the logic that concerns the player, such as moving around the world and interacting with objects.CSmoothCamera: This class implements CRYENGINE's IGameObjectExtension and IGameObjectView interfaces. It's used to provide a view for our player so that we may see the world. The CSmoothCamera class implements IGameObjectView so that it may control a CRYENGINE IView instance. It implements IGameObjectExtension so that they may be added to a game object that's in the game's world. This class is slightly advanced and it would be better to read the in-code documentation to get a clearer understanding of how this class works.IWindowEventSystem: This interface is a completely custom interface in that it doesn't derive from any CRYENGINE interface. I created this interface to help you; by definition, it is a helper interface. Its sole purpose is to provide a mechanism for which to dispatch and handle various window events, such as window activation, closing, and various mouse/keyboard events.CScriptBind_Game: This class implements CRYENGINE's CScriptableBase class. It's used to expose your game's functionality to Lua. Although not required, any game-specific functionality you want to be exposed to Lua should be added here. For now, only the ability to set the game's current spawnpoint has been exposed.

By now, you should have a good understanding of what each of the classes do and what they are used for. For a more thorough understanding, you may want to take a look at the in-code documentation.

Compiling our game

Now that we have all of the setup ready and have a clear understanding of what all of the important classes in our game do, let's compile our project. Get ready to venture into the world of game programming and create the Great Action Side-Scroller.

Right-click on your game project in the Solution Explorer and click on Build, as shown here:

Summary

This concludes the chapter. If you come across any issues while compiling the game project, I suggest that you take a look at the starter-kit Crydev forum thread at http://www.cryengine.com/community/viewtopic.php?f=355&t=124265. In this chapter, you learned how to download and install my CRYENGINE "Blank" Game Starter-Kit, what all of the important classes in the kit do, and how to compile a CRYENGINE game project. The future is very bright as we move forward with the rest of the book. Good job!