![]()
Table of Contents
Mastering CryENGINE
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
The jump to CryENGINE 3.5
Other required software
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Setting Up the Perfect Pipeline
What is a production pipeline?
Importance of a strong pipeline
Version control for CryENGINE projects
What version control does for you
Production without version control
Working from a shared folder
Selecting a VCS for CryENGINE projects
Setting up version control for CryENGINE
Sandbox
Perforce setup
Exploring digital content creation tools such as Photoshop and 3ds Max
Visual Studio
Notepad
Identifying CryENGINE project files to be excluded from version control
Automated builds and build scripts
Creating nightly builds
Setting up a build server
Operating systems
What build scripts should do
Creating your custom build script
Writing your own script
Getting the latest files from your version control
Compiling the code
Compiling the assets
Wrapping it up
Scheduling automated builds
Automated performance tests
Using level statistics to profile the performance of a level
Build integration
Integrating a new version of CryENGINE
The engine depot
Project branch
Integration
Quality assurance processes
QA pipeline in larger scale teams
QA pipeline in smaller teams
Working without a QA pipeline
Understanding issue tracking in CryENGINE
Summary
2. Using the CryENGINE Input System – Keyboard, Mouse, and Game Controller
The CryENGINE input system
A layer of abstraction
The input event system
Game actions
Action Maps
Multiple Action Maps
Creating a new Action
Setting up an Action event
Adding an Action mapping
Optional parameters
Trigger options
OnPress parameters
OnHold parameters
OnRelease parameters
Analog input
Modifiers
Triggering console commands
Reacting to Action events
Action events in code
Setting up a new Action listener
Extending PlayerInput
Creating a new handler function
Registering your handler function
Custom Action Maps
Action events in FlowGraph
Filtering Actions
Creating Action Filters
Using Action Filters
Reacting to Input events
Code
FlowGraph
User profiles
Modifying user profiles
DLCs and patches
The input event names reference
Keyboard
Mouse
Xbox 360 controller
PS3 controller
Summary
3. Building Complex Flow Graph Logic
Who uses the flow graph system?
A more complex application of the flow graph
Revisiting the basics of flow graphs
Types of nodes
Entity nodes
Component nodes
Flow graph data format and storage
The entity nodes with dynamic targets
What happens if we input the wrong EntityId?
A more complex application of dynamic EntityIds
Let's take a shortcut
Q – node quick search
F/G – link highlighting
Ctrl + Shift + V – paste nodes with links
Embedding the flow graphs
GameTokens
The GameToken libraries
Reaction to a game token changing its state
The GraphTokens variable
Accessing the Lua functionality
Creating nodes in C++ and Lua
Adding ports to an entity flow graph node
Creating flow graph nodes using the Lua script
Creating flow graph nodes using C++
Summary
4. Morphs and Bones – Creating a Facial Setup for Your Character
Creating a facial setup for a character
Exporting the character's head
Using facial expression libraries
Creating a new facial expression library
Manually creating a library
Automatic creation
Bone rig requirements
Creating expressions in 3ds Max
Creating a Facial Library with Morphs
Mapping the library
Creating expressions
Facial animation
Creating facial sequences
Using facial sequences in the engine
Inside the TrackView editor
Inside the FlowGraph node
Using expressions
The Lip Sync feature
Manual lip synching
Automatic phoneme extraction
Lip sync playback
Quality
Quality – phoneme extraction
Quality – visimes and phonemes
Quality – adding emotions
Summary
5. Mastering Sandbox
Don't stop getting better
Getting faster with keyboard shortcuts
Thinking about hand placement
Object editing modes
Test it!
Aligning objects
Using the deep selection feature
Using the Goto Selection feature
Using camera tag-points
Top five shortcuts
Customizing Sandbox
Customizing the Sandbox window layout
Saving and loading layouts
Working with cameras
Camera targets
Switching cameras
Exploring Sandbox custom commands and macros
Sandbox custom commands and macros
Looking at some lesser-known features
Video recording
Mesh editing
Managing PAK files
Renaming multiple objects
Summary
6. Utilizing Lua Script in CryENGINE
Understanding the relevance of the Lua script in CryENGINE
Lua-based entities
Creating a new Lua-based entity
Assigning a 3D object to an entity
Using entity slots
Setting up physics
Making an entity multiplayer-ready
Understanding the dataflow of Lua entities in a multiplayer environment
The Client/Server functions
The Remote Method Invocation definitions
Using the state machine
Using script binds
Calling script binds
Creating new script binds
Using engine callbacks
Using the Lua debugger
Summary
7. Animating Characters
The CryENGINE animation system
Introducing CryMannequin
Splitting up the game and animation logic
Understanding CryMannequin's purpose
Selecting animations
Starting animations
Fragments, Fragment IDs, and Tags
Extending the state machine
Understanding the state machine hierarchy
Creating a new state
Triggering the new state
Playing animations without CryMannequin
TrackView
Multiple a...