It's Time to Customize!
Getting started making game assets
Using the basic tools of polygon modeling
How to use UV mapping and why it's important
UV unwrapping our game asset
Basic texturing techniques

Getting the Assets to the Level
Exporting our object from Blender
What is FBX?
Importing our object into Unreal
Setting up and using our new 3D asset

Enhancing Player Abilities
Adding the running functionality by extending a Blueprint
Breaking down the Blueprint character movement
Customizing control inputs
Adding a sprint ability
Breaking down the Blueprint character movement
Customizing control inputs
Adding a sprint ability
Animating a zoom view
Using a timeline to smooth transitions
Increasing the projectile's speed
Using a timeline to smooth transitions
Increasing the projectile's speed
Adding sound and particle effects
Giving our targets state with branches
Triggering sound effects, explosions, and destruction
Giving our targets state with branches
Triggering sound effects, explosions, and destruction

Making Moving Enemies with AI
Setting up the enemy actor to navigate
Importing from the marketplace
Expanding the play area
Making the level traversable with a NavMesh
Setting the stage for intelligence with AI assets
Importing from the marketplace
Expanding the play area
Making the level traversable with a NavMesh
Setting the stage for intelligence with AI assets
Creating navigation behavior
Setting up patrol points
Enabling communication between assets
Teaching our AI to walk with the Behavior Tree
Setting up patrol points
Enabling communication between assets
Teaching our AI to walk with the Behavior Tree
Making the AI chase the player
Giving the enemy sight with Pawn Sensing
Adding conditions to the Behavior Tree
Creating chasing behavior
Giving the enemy sight with Pawn Sensing
Adding conditions to the Behavior Tree
Creating chasing behavior

Upgrading the AI Enemies
Creating an enemy attack
Making an attack task
Updating the health meter
Making an attack task
Updating the health meter
Making enemies hear and investigate sounds
Adding hearing to the Behavior Tree
Setting up the investigating tasks
Interpreting and storing the noise event data
Adding noise to the player's actions
Adding hearing to the Behavior Tree
Setting up the investigating tasks
Interpreting and storing the noise event data
Adding noise to the player's actions
Making the enemies destructible
Saving time by reusing existing Blueprint content
Saving time by reusing existing Blueprint content
Spawning more enemies during gameplay
Choosing a spawn point where enemies will appear
Managing spawn rates and limits with variables
Spawning new enemies in the Level Blueprint
Choosing a spawn point where enemies will appear
Managing spawn rates and limits with variables
Spawning new enemies in the Level Blueprint
Creating enemy wandering behavior
Identifying a wander point with a custom task
Adding wandering to the Behavior Tree
Identifying a wander point with a custom task
Adding wandering to the Behavior Tree

Tracking Game States and Applying Finishing Touches
Making danger real with player death
Setting up a lose screen
Creating round-based scaling with saved games
Storing game information using a SaveGame object
Storing and loading the saved data when starting the game
Increasing the enemy target goal
Create a transition screen to be shown between rounds
Transitioning to a new round when the current round is won
Storing game information using a SaveGame object
Storing and loading the saved data when starting the game
Increasing the enemy target goal
Create a transition screen to be shown between rounds
Transitioning to a new round when the current round is won
Pausing the game and resetting the save file
Creating a pause menu
Resuming and resetting the save file
Triggering the pause menu
Creating a pause menu
Resuming and resetting the save file
Triggering the pause menu

Building and Publishing
Optimizing your graphics settings
Setting up our game to be played by others
Packaging the game into a build
Packaging the game into a build
Steps for further learning
Finish and share as many games as you can
Stretch out of your comfort zone
Resources for additional learning and support
Finish and share as many games as you can
Stretch out of your comfort zone

Scripting and Data in Unreal
Creating a new C++ class
Blueprints
Creating a new Blueprint
Adding a Blueprint to the scene
Blueprints for Actor classes
Using Data Tables to import spreadsheet data
The spreadsheet format
A sample spreadsheet
The Data Table struct
Importing the spreadsheet
Querying the spreadsheet

Exploration and Combat
Creating the player pawn
The interface
The PlayerController
The Pawn
The GameMode class
Adding the skinned mesh
Creating a Camera Component
Defining characters and enemies
Classes
Characters
Enemies
Party members
The GameInstance class
Turn-based combat
Performing actions
Making decisions
Target selection
Dealing damage
Combat UI with UMG
UI-driven decision making
Creating the game over screen

Inventory Population and Item Use
Creating the FieldPlayer Booleans
Determining whether the inventory screen is on or off
Logical difference between the inventory and shop items
Finishing the inventory screen
Buying items
Using items

Actors and Pawns
Actors versus pawns
Creating a world to put your actors in
The UE4 editor
Starting from scratch
Adding light sources
Collision volumes
Adding collision detection for the objects editor
Adding an actor to the scene
Creating a player entity
Inheriting from UE4 GameFramework classes
Associating a model with the Avatar class
Loading the mesh
Creating a blueprint from our C++ class
Writing C++ code that controls the game's character
Making the player an instance of the Avatar class
Setting up controller inputs
Yaw and pitch
Creating non-player character entities
Displaying a quote from each NPC dialog box
Displaying messages on the HUD
Using TArray
Triggering an event when it is near an NPC
Make the NPC display something to the HUD when something is nearby

Inventory System and Pickup Items
Declaring the backpack
Forward declaration
Importing assets
Attaching an action mapping to a key
Base class PickupItem
The root component
Getting the avatar
Getting the player controller
Getting the HUD
Drawing the player inventory
Using HUD::DrawTexture()
Detecting inventory item clicks

Monsters
Landscape
Sculpting the landscape
Monsters
Basic monster intelligence
Moving the monster – steering behavior
The discrete nature of monster motion
Monster SightSphere
Monster attacks on the player
Melee attacks
Defining a melee weapon
Coding for a melee weapon in C++
Downloading a sword
Creating a blueprint for your melee weapon
Sockets
Creating a skeletal mesh socket in the monster's hand
Attaching the sword to the model
Code to equip the player with a sword
Triggering the attack animation
Blueprint basics
Modifying the animation blueprint for Mixamo Adam
Code to swing the sword
Projectile or ranged attacks
Bullet physics
Adding bullets to the monster class
Player knock back