RPG Core Combat Creator - Unity 2017 Compatible In C#
4.7 (1,051 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
14,126 students enrolled
Wishlisted Wishlist

Please confirm that you want to add RPG Core Combat Creator - Unity 2017 Compatible In C# to your Wishlist.

Add to Wishlist

RPG Core Combat Creator - Unity 2017 Compatible In C#

Build a full Role Playing Game (RPG) in Unity 5.5 & 2017. Learn intermediate C#, code architecture, game & level design.
4.7 (1,051 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
14,126 students enrolled
Last updated 9/2017
English [Auto-generated]
Current price: $10 Original price: $195 Discount: 95% off
5 hours left at this price!
30-Day Money-Back Guarantee
  • 40.5 hours on-demand video
  • 1 Article
  • 39 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Create core combat mechanics for your own Action RPG.
  • Make a simple level with terrain, placed enemies and props.
  • Balance the player and enemy stats (eg. health, damage, movement, attack speed, and more).
View Curriculum
  • You should be able to write basic C# (loops, conditionals, components, etc)
  • Some familiarity with Unity's APIs is helpful.
  • You should know your way round Unity 5's editor.

This highly acclaimed course was over 200% funded on Kickstarter, and is designed for intermediate users of Unity. We recommend you take at least the first half of our Complete Unity Developer or equivalent as a pre-requisite.

Role Playing Games can be complex to create, with many interacting gameplay systems. We make it easy for you, with this online course that teaches you step-by-step how to make the foundations of any good RPG - from scratch.

In this course we're focusing on the core of any great RPG, giving your players a fun combat moment in a well crafted level, based upon a solid game design, built using a robust code architecture. You will follow our project, but also make the game entirely your own.

We will be dealing with AI pathfinding, creating a flexible special abilities system, and learning how to coordinate on a complex project. You'll learn to how to implement click-to-move gameplay, use asset packs, debug, make particle effects and more.

You'll need a basic grasp of Unity and C# before you get start, from there we'll be teaching you more advanced programming techniques such as C# delegates, interfaces, co-routines and more.

Building an RPG is an amazing way to level-up you game development skills, so why not join us and get started right now?

Who is the target audience?
  • This course is for intermediate Unity users who want to create their own RPG.
  • Our Complete Unity Developer course provides the perfect pre-requisite.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
177 Lectures
Character Movement
25 Lectures 04:41:19
  • What this course is all about
  • Why you would take this course
  • What you need to get started
  • What games you will build
  • What you will learn.

(Unique Video Reference: 1_CM_RPG)

Preview 02:06

  • Re-watch promo
  • About GameDev.tv
  • About resource links
  • Challenge: Find the donkey!

(Unique Video Reference: 2_CM_RPG)

Preview 04:06

  • An overview of the section’s project

(Unique Video Reference: 2b_CM_RPG )

About Character Movement

  • You start designing your game
  • Start creating your 1-Page GDD
  • We discuss your top-down direction
  • We discuss your bottom-up moment
  • Challenge: Create first section of 1-page GDD.

(Unique Video Reference: 3_CM_RPG)

Start Designing Your RPG

  • Quickly setup Unity project
  • World scale considerations
  • Import Ethan
  • Layout a simple arena

(Unique Video Reference: 4_CM_RPG)

Set Up A Combat Sandbox

  • Set up a camera arm
  • Position a fixed camera
  • Tag camera and player
  • Write a small script

(Unique Video Reference: 5_CM_RPG)

Preview 09:31

  • Investigate Unity’s standard cameras pack
  • Positioning the Free Look camera
  • Why we’re choosing a fixed camera

(Unique Video Reference: 6_CM_RPG)

Pan And Tilt Camera Options

  • Prototyping requires pretending
  • Add placeholder blocks and enemies
  • Tighten movement and camera
  • Write down ideas and questions

(Unique Video Reference: 7_CM_RPG)

Prototyping With Placeholders

  • A quick intro to raycasting in Unity
  • What a layer mask is
  • The bit shift operator << in C#
  • How to form a layer mask
  • How a layer mask helps Unity to filter hits.

(Unique Video Reference: 7b_CM_RPG )

Preview 03:31

  • Raycasting explained
  • Assign layers for raycasting
  • Import and review CameraRaycaster.cs

(Unique Video Reference: 8_CM_RPG)

Using Raycasts To Query Click

  • How the ThirdPersonCharacter moves
  • Import & review PlayerMovement.cs
  • Resolve any major movement bugs.

(Unique Video Reference: 9_CM_RPG)

Click Mouse To Move

  • As Indie developers we wear many hats
  • What are we building?
  • What is a Work Breakdown Structure

(Unique Video Reference: 10_CM_RPG)

Work Breakdown Structure

This quiz will continue to be updated as we add new content to the course.

Test Your Understanding 1.1
10 questions

+ What we have covered so far
+ Answers to common questions
+ What's coming up in the next 10 lectures.

(Unique Video Reference: 10b_CM_RPG)

Instructor Hangout 1.1

  • Using GameObject > Clear Parent
  • Create separate Player and Enemy prefabs
  • Organise folders by game object type

(Unique Video Reference: 11_CM_RPG)

Organizing Project For Teamwork

  • How to rename a C# script in Unity 5
  • Why we need affordances
  • Import cursor artwork
  • Start writing CursorAffordance.cs

(Unique Video Reference: 12_CM_RPG

Using Cursor Affordances

  • Where are we at with our moment?
  • What is next priority?
  • What are the design requirements?

(Unique Video Reference: 13_CM_RPG)

Most Important Combat Feature

  • Simplify & debug current movement code
  • Optional: implement direct movement

(Unique Video Reference: 14_CM_RPG)

Gamepad Movement Mode

  • What is Onion Design
  • Tighten our core

(Unique Video Reference: 15_CM_RPG)

Onion Design

  • What do we mean by "The Player Experience"
  • How do you create your player experience
  • Challenge - define the player experience for your RPG

(Unique Video Reference: 16_CM_RPG )

Preview 16:59

  • Review all the current TODO comments
  • Fix bug when changing back to indirect mode
  • Fix the slippery enemy bug!
  • Fix bug with cursor?

(Unique Video Reference: 17_CM_RPG )

TODOs And Bug Fixes

  • What the Observer pattern is
  • How data and execution flows
  • The benefits of the pattern

(Unique Video Reference: 18_CM_RPG )

Preview 05:18

  • Declare a new delegate subject type
  • Instantiate a new delegate observer set
  • Write a compatible handling function
  • Add the handling function to the set of observers
  • Call the delegate

(Unique Video Reference: 19_CM_RPG )

Using Delegates In C#

  • Why we need to protect our delegate set
  • Using the event keyword in C#
  • Adding a parameter to our delegate functions

(Unique Video Reference: 20_CM_RPG )

The Event Keyword In C#

Test Your Understanding 1.2
7 questions

+ Answers to common questions

(Unique Video Reference: 20b_CM_RPG )

Instructor Hangout 1.2

  • What we covered from a design perspective
  • What we covered from a dev perspective
  • Share your thoughts and work :-)

(Unique Video Reference: XX_CM_RPG)

Section 1 Wrap Up
Core Combat
58 Lectures 14:04:47
  • We’ll cover core combat in this section
  • We will focus on the simplest code solutions
  • You will also learn some play tuning…
  • … and create your first level

(Unique Video Reference: 1_CC_RPG)

Preview 01:37

In this video...

  • Attack requirements
  • Attack and movement distances

(Unique Video Reference: 2_CC_RPG)

Attacking The Enemies Design

In This Video…

  • Introducing the Gizmos class in Unity
  • Import code to visualise movement
  • Adding attackStopMoveRadius
  • Prevent retreat when in radius
(Unique Video Reference: 3_CC_RPG)
Using Gizmos To Visualise Code

In This Video…

  • Review structure of health bar pack
  • Export a custom package
  • Import custom package
  • Create Player class and test

(Unique Video Reference: 4_CC_RPG)

Player Health Bar UI

In This Video…

  • Import Enemy Health Bar v.2.unitypackage
  • Explore how the package works
  • Create Enemy.cs and wire-up

(Unique Video Reference: 5_CC_RPG )

Enemy Floating Health Bar

In This Video…

  • Our current ranged attack problem
  • Diablo versus Torchlight 2 paradigms
  • Our design decision

(Unique Video Reference: 6_CC_RPG)

Ranged Attack Problem

In this video...

  • We discuss remaining sections of 1-Page GDD
  • We discuss Design Pillar
  • We discuss Remarkability
  • We'll look at what Darkest Dungeon does for their design pillar and remarkability

(Unique Video Reference: 7_CC_RPG)

Update Your 1 Page GDD

In this video...

  • Your feedback to us
  • We’re starting to juggle priorities - combat needs level, level needs art direction
  • Structure of Art Concept Document

(Unique Video Reference: 8_CC_RPG)

Set Your Art Direction

In this video...

  • Designing your level - start with your level’s intention and requirements
  • How we are creating our village level

(Unique Video Reference: 9_2_RPG)

Sketch Your Prototype Level

In this video...

  • We’ll import a level asset pack
  • Tidy up and prepare our scene

(Unique Video Reference: 10_2_RPG)

Importing Level Assets

Test Your Understanding 2.1
8 questions

+ Answers to common questions.

(Unique Video Reference: 10b_CC_RPG)

Instructor Hangout 2.1

In this video...

  • Terrain versus module assets approaches
  • Adding terrain and modifying it
  • Blocking out one moment in your level

(Unique Video Reference: 11_CC_RPG)

Creating Terrain

In this video...

  • Getting rough placement for all of your level moments.
  • Dealing with elevation and camera issues.

(Unique Video Reference: 12_CC_RPG)

Block Out Your Level

In This Video…

  • Asset review and feedback for Mikey
  • Art review - an interesting mistake
  • Altering our level
  • Setup & Standards text file

(Unique Video Reference: 13_2_RPG)

Review And Adjustments

In This Video…

  • Learnings and tips from blocking out level
  • Adding comments and references in your level

(Unique Video Reference: 14_2_RPG)

Commenting Your Level

In This Video…

  • Aside: why you need .psd.meta files
  • Scene folder structure and naming
  • Creating a best practices discussion
  • Everything should be a prefab!

(Unique Video Reference: 15_2_RPG)

Standardising Scene Setup

In This Video…

  • How importing asset packs affects your project
  • Bringing objects to life with script based rotation
  • How to use unit consistency to help you code
  • Why we keep root object scales at 1,1,1.

(Unique Video Reference: 16_2_RPG)

Help Writing Physics Code

In This Video…
  • How to fix disappearing hard shadows
  • Add a navmesh to your terrain(s)
  • Add a Navmesh Agent to our enemy prefab

(Unique Video Reference: 17_2_RPG)

Make Enemies Pathfind To Player

In This Video…

  • The limitations of our current architecture
  • Import new CameraRaycaster.cs
  • Review what’s changed and why
  • Remove our Layer.cs script
  • Preview the editor script

(Unique Video Reference: 18_2_RPG)

Fully Event Based Raycasting

In This Video…

  • Why you would want to extend Unity’s editor
  • Review CameraRaycasterEditor.cs
  • CHALLENGE - check your understanding.

(Unique Video Reference: 19_2_RPG)

Writing Custom Editors

In this video...

  • Control your FOCUS - let’s move on
  • How to modify our player for pathfinding

(Unique Video Reference: 20_2_RPG)

Player Pathfinding To Enemies

Test Your Understanding 2.2
10 questions

+ Ben and Rick answer your questions.

(Unique Video Reference: 20b_CC_RPG)

Instructor Hangout 2.2

In this video...

  • Recap our goals for prototyping
  • Where are you at with your goals - what is your score out of 10?

(Unique Video Reference: 21_2_RPG)

Prototyping Goals And Progress

In this video:

  • Import latest art assets
  • Review distance, sizes, pacing in your level
  • Clean up Nav Mesh

(Unique Video Reference: 22_2_RPG )

Refine Your Nav Mesh

In This Video…

  • It’s important to experiment when prototyping

(Unique Video Reference: 23_2_RPG)

Tuning And Exploring

In This Video…

  • Humanoid character import settings
  • How to replace a character’s mesh

(Unique Video Reference: 24_CC_RPG)

Importing Humanoid Animations

In This Video…

  • What an interface is in C#, and why they’re useful
  • Where and when to use them, e.g. IDamageable
  • Building a simple example scene.

(Unique Video Reference: 25_CC_RPG)

Using Interfaces In C#

In This Video…

  • How to find game objects by interface
  • How to call a method via an interface
  • Getting damage working on player and enemy

(Unique Video Reference: 26_CC_RPG)

Calling Methods Via Interfaces

In this video...

  • How to find game objects by interface
  • How to call a method via an interface
  • Getting damage working on player and enemy

(Unique Video Reference: 27_CC_RPG)

Enemy Move And Attack Spheres

In this video...

  • A quick recap of unit vectors, speed and velocity
  • Setup projectile prefab & attach to enemy

(Unique Video Reference: 28_CC_RPG)

Spawning Enemy Projectiles

In this video...

  • How InvokeRepeating() is string referenced
  • StartCoroutine() is type safe, but more complex
  • A very quick overview of co-routines
  • Test enemies damaging player

(Unique Video Reference: 29_CC_RPG)

InvokeRepeating() vs StartCoroutine()

In this video...

  • Make enemies hit player in chest
  • Import dirty old hoe
  • Attach weapon to player’s hand
  • Make player target a single enemy

(Unique Video Reference: 30_CC_RPG)

Player Melee Damage

Test Your Understanding 2.3
10 questions

Ben and Rick answer your questions

Instructor Hangout 2.3

  • Tidy up level, renaming and position weapon
  • Design 3 Archetypes - Archer, Minion, Bruiser

(Unique Video Reference: 31_CC_RPG)

Creating Enemy Archetypes

  • Check our WBS
  • Health and damage continuums

(Unique Video Reference: 32_CC_RPG)

Health And Damage Philosophy

In this video...

  • Start your Stat Spreadsheet with some starting points
  • Update Player and Enemy stats in level

(Unique Video Reference: 33_CC_RPG)

Start Your Stat Spreadsheet

In this video...

  • Using the tools we have
  • Creating a healer

(Unique Video Reference: 34_CC_RPG)

Healing Companion Prototype

In this video...

  • Give story flavour to your level flow
  • Create new enemies types

(Unique Video Reference: 35_CC_RPG)

Level Story Theme And Flow

In this video...

  • No two moments in your level should be the same
  • Place enemies and healing to make good combat flow
  • Test and tweak your level

(Unique Video Reference: 36_CC_RPG)

Playable Level With Combat

  • How complexity may scale in a project
  • The bigger picture of smelly code
  • Review TODOs to feel in control

(Unique Video Reference: 37_CC_RPG)

Rising Complexity, Refactoring

  • Why our projectiles are hard to see
  • Strategies for improving visibility
  • Using Trail Renderers to help see projectiles

(Unique Video Reference: 38_CC_RPG)

Using The Trail Renderer Component

  • Options for stopping projectiles passing through
  • Using Continuous Dynamic collision detection
  • Fix characters crouching on impact issue
  • Projectiles self-organise and destroy themselves

(Unique Video Reference: 39_CC_RPG)

Preventing Projectile Pass-Through

Test Your Understanding 2.4
10 questions

Catch up with Ben and Rick.

(Unique Video Reference: 39B_CC_RPG )

Instructor Hangout 2.4

  • Our Current Movement Bugs
  • Tuning To Find A Fix

(Unique Video Reference: 40_CC_RPG)

Fix Wobbly Characters

  • The vision of separate “modules”

  • How to “bubble-up” to share

  • When to create folders

  • Naming and cache invalidation… again!

  • Considerations when working in a team.

(Unique Video Reference: 40b_CC_RPG)

Thoughts On Organisation

  • The problem with importing assets
  • Our various needs with our assets
  • Rearranging our assets folder

(Unique Video Reference: 41_CC_RPG)

Preparing Our Assets Folder

  • What we mean by set dressing
  • Import textures and assets
  • Make the ground look good

(Unique Video Reference: 42_CC_RPG)

Set Dressing Our Level

  • Import water from standard assets
  • Place water

(Unique Video Reference: 43_CC_RPG)

Adding Water

  • The bug we’re seeing that started after we added water
  • My solution to the bug
  • A conversation about making decisions on how much time to invest in fixing bugs

(Unique Video Reference: 44_CC_RPG)

Movement Bug And Water

  • Import trees from standard assets, asset store or our asset pack
  • Setting up our tree painting
  • Trees in our level

(Unique Video Reference: 45_CC_RPG)

Adding Trees

  • Creating and explaining the Asset Showcase Scene

(Unique Video Reference: 46_CC_RPG)

Asset Showcase Scene

  • How NOT to automate new scene setup (yet)

  • Showcase scene detail res. & scene file clash

  • Update / import latest art assets. Blue trees?

  • Discuss movement bug / deferring (80% rule)

  • Rename NotifyObservers and fix console errors

  • How to highlight member variables in VS.

(Unique Video Reference: 47_CC_RPG)

Get Your Dev Hat Back On

  • The difference between data and state
  • Why we use Scriptable Objects for data
  • Using [CreateAssetMenu(menuName=”Name”)]
  • Programmatically placing a weapon in hand.

(Unique Video Reference: 48_CC_RPG)

Introducing Scriptable Objects

Test Your Understanding 2.5
10 questions

  • Create a weapon grip transform prefab

  • Associate the weapon grip with the weapon*

  • Ensure weapon spawns with correct grip

* Later you could have multiple grips per weapon.

(Unique Video Reference: 49_CC_RPG)

Adjustable Weapon Grip

  • Recover Rick’s value from player instance

  • Use a MonoBehaviour to tag weapon hand.

(Unique Video Reference: 50_CC_RPG)

Problems With Prefabs

  • Clear all console warnings

  • Simplify Ethan’s Animator Controller

  • Import free animation pack

  • Setup Attack animation trigger.

(Unique Video Reference: 52_CC_RPG)

Import Mecanim Animation Pack

  • Why enemies currently hurt one-another


  • Split class into SO and MonoBehaviour

  • Add facility for sound.

(Unique Video Reference: 52_CC_RPG)

Projectiles Discriminate

Test Your Understanding 2.6
6 questions

  • What you’ve learnt
  • What’s coming up next

(Unique Video Reference: 53_CC_RPG)

Section 2 Wrap Up
Modifiers And Abilities
54 Lectures 12:43:52
  • What’s coming in this section.

(Unique Video Reference: 1_MA_RPG)

Section 3 Introduction

  • Review and update your WBS
  • Decide on next priorities

(Unique Video Reference: 2_MA_RPG)

Design Planning And Decisions

  • GDD Template And Our GDD

(Unique Video Reference: 3_MA_RPG)

Your Game Design Document

+ My chosen options for upgrading to Unity 5.6

+ Review Unity's release notes

(Unique Video Reference: 4_MA_RPG)

Unity 5.6 And VS Community 2017

+ What a namespace is and why it's useful

+ How to use namespaces in C#

(Unique Video Reference: 5_MA_RPG)

Using Namespaces In C Sharp

+ Fixing a possible projectile bug

+ What is an Animator Override Controller?

+ How to override animations at runtime

(Unique Video Reference: 6_MA_RPG)

The Animator Override Controller

+ The hidden dependency in our asset pack

+ How to prevent animation events breaking code

+ Challenge: Apply animations to weapons.

(Unique Video Reference: 7_MA_RPG)

Protecting Our Interfaces

+ Taking control of our animations
+ Drawing out our dependencies
+ Taking control of Standard Assets

(Unique Video Reference: 8_MA_RPG)

Untangling Standard Assets

+ Refactor our Player class

+ Move properties from Player to Weapon

(Unique Video Reference: 9_MA_RPG)

Trigger Player Hit Animation

1. Review AudioTrigger.cs from Gist

2. Set-up and test sound trigger prefab

3. How to source your audio clips

(Unique Video Reference: 10_MA_RPG)

Triggering Audio On Radius

Test Your Understanding 3.1
10 questions

  1. Performance issues from terrain
  2. Challenge: Tune terrain settings

(Unique Video Reference: 11_MA_RPG)

Terrain Optimization

  1. Our level's requirements
  2. Pitch shifting a character
  3. Challenge: create your dialogue

(Unique Video Reference: 12_MA_RPG)

Our First Dialogue

  1. Our bug fixing workflow
  2. Bug tracking and task scheduling
  3. Challenge
  4. Lets fix some issues

(Unique Video Reference: 13_MA_RPG)

Tasks And Bugs

  1. Tidy up scene and import new assets
  2. Challenge: Place props in your scene
  3. Extras: If you want, you can download new assets from repo.

(Unique Video Reference: 14_MA_RPG)

Placing Props

  1. Quick look at visual improvements
  2. Weapon damage design
  3. Prototype requirements for weapons
  4. Adding a third weapon and tuning all three

(Unique Video Reference: 15_MA_RPG)

Weapon Design

  1. Lets investigate our scene lighting
  2. Import and set up a new skybox

(Unique Video Reference: 16_MA_RPG)

Changing Your Skybox

  1. Desired bridge look and navmesh issue
  2. Create your bridge

(Unique Video Reference: 17_MA_RPG)

Bridges And Navmesh

Import and set up new character meshes.

(Unique Video Reference: 18_MA_RPG)

Enemy Mesh Antics

  1. Unity 5.6.1 upgrade, Mac differences
  2. Extending the player by composition

(Unique Video Reference: 19_MA_RPG)

Adding An Energy Mechanic

1. Setup a new delegate in CameraRaycaster
2. De-bounce the right-click button with `GetButtonDown`
3. Subscribe to event in new `Energy.cs` class
4. Reduce energy on each right click
5. Update the energy bar.

(Unique Video Reference: 20_MA_RPG)

Extension By Composition

Test Your Understand 3.2
10 questions

1. How to use source control to keep refactors honest
2. Our new CameraRaycaster architecture

(Unique Video Reference: 21_MA_RPG)

Detecting By Layer In 3D

  1. Adding onMouseOverPotentiallyWalkable event
  2. Removing our custom editor script
  3. Ensuring click to move still works.

(Unique Video Reference: 22_MA_RPG)

Simplifying Click To Move

  1. Remove CursorAffordance.cs altogether!
  2. Remove the CameraRaycasterEditor editor script
  3. Implement move to enemy on power attack
  4. Simplify the CameraRaycaster, Energy and PlayerMovement

(Unique Video Reference: 23_MA_RPG)

Simplifying Click To Attack

  1. What are the choices the player can make in your combat?
  2. Types of Special Abilities
  3. Where to start with implementation

(Unique Video Reference: 24_MA_RPG)

Player Choice In Combat

1. Abilities require serialisable data AND behaviour
2. We can only serialise MonoBehaviours via prefab or scene
3. This causes more contention on those files, and is wrong place
4. A ScriptableObject moves ability config data to a .asset file
5. ... but SOs cannot interact with the world
6. so the Ability also needs a MonoBehaviour
7. One ability can have multiple configs
8. Therefore make the config add the behaviour component at runtime.

(Unique Video Reference: 25_MA_RPG)

Special Abilities System Overview

1. Setup an 'ISpecialAbilty' interface

2. Use an abstract class to create `SpecialAbilityConfig`

3. Inherit 'PowerAttackConfig' from this new abstract class

4. Provide right-click asset menu to create new special ability.

(Unique Video Reference: 26_MA_RPG )

Storing Special Ability Config Data

1. Remove `pointsPerHit` from our `Energy` component
2. Move right-click handling to the `Player`
3. Prepare to read energy cost from special ability.

(Unique Video Reference: 27_MA_RPG)

Making A Class Single Purpose

1. Fix a bug with our AudioTrigger component
2. Make it possible for the player to equip several abilities
3. Use a protected property to reference `behaviour` component
4. Use this property to forward calls to `Use()` to the component.

(Unique Video Reference: 28_MA_RPG)

Implementing Power Attack Behaviour

1. Combine top-level special ability code into one file

2. Create a struct to pass ability use parameters

3. Finish Power Attack behaviour inc energy cost.

(Unique Video Reference: 29_MA_RPG)

Using Structs For Parameter Sets

1. Describe your challenge

2. Introduce `Physics.ShpereCastAll()' API

3. Demonstrate my Area Of Effect solution.

(Unique Video Reference: 30_MA_RPG)

Create An Area Of Effect Ability

Test Your Understanding 3.3
10 questions

1. Why we're not using coroutines yet

2. Challenge: make energy regenerate over time

3. Fix enemy sliding bug (and extra animator).

(Unique Video Reference: 31_MA_RPG)

Regenerating Energy Over Time

  1. The importance of game feel
  2. What things to look for with your audit

(Unique Video Reference: 32_MA_RPG)

Game Feel Intro

  1. Words to describe your game feel
  2. Examples of poor game feel
  3. Tuning of player to enemy collision

(Unique Video Reference: 33_MA_RPG)

Game Feel Audit

  1. A structure for approaching your spreadsheet design
  2. Specific implementation of some "Soul" aspects

(Unique Video Reference: 34_MA_RPG)

Spreadsheet Strategy

  1. Different options for progression
  2. Progression theory and preferences
  3. Populating our spreadsheet's spine

(Unique Video Reference: 35_MA_RPG)

Spreadsheet Spine

1. Detect when the mouse is in the game rectangle
2. Stop raycasting when the mouse is over Unity editor UI

(Unique Video Reference: 36_MA_RPG)

When Mouse Leaves Game Window

1. How to test if the player is dead

2. Use an `IEnumerator` coroutine for timing

3. Use `WaitForSecondsRealtime()` method.

(Unique Video Reference: 37_MA_RPG)

Coroutine For Death Sequence

1. Add an array of damage sounds
2. Add a single death sound (for now).

(Unique Video Reference: 38_MA_RPG)

Player Damage & Death Sounds

1. Fix health bug

2. Implement death animation

3. Projectile firing rate variation?

(Unique Video Reference: 39_MA_RPG)

Player Death Animation

1. Import brand-new HUD graphics

2. Make liquid effect health and energy

3. How a "Filled" image works

3. Use "Fill Amount" property to animate UI.

(Unique Video Reference: 40_MA_RPG)

Using Image Fill In UI

Test Your Understanding 3.4
10 questions

1. Adding special ability icons to slots
2. Fixing bug with game window resizing.

(Unique Video Reference: 41_MA_RPG)

Adding Special Ability UI

  1. Discussing our current Linear approach
  2. Introducing a range of level design paradigms and what they could mean for your game.

(Unique Video Reference: 42_MA_RPG)

Level Design Paradigms

  1. Challenge: add choice to your level
  2. Review our current level for ideas on how to add more choice.

(Unique Video Reference: 43_MA_RPG)

Level Design Choice

  1. Updated grass textures
  2. New free assets as part of student pack from Synty
  3. Adding the Synty particle pack

(Unique Video Reference: 44_MA_RPG)

Assets And Improvements

  1. Particle effects overview
  2. Where to use particles - a review of Torchlight 2
  3. Where we will add particles to our game

(Unique Video Reference: 45_MA_RPG)

Particle Effects Intro

  1. Create an ambient particle effect in the world
  2. Have the particle effect follow the character

(Unique Video Reference: 46_MA_RPG)

Glowing Dust Effect

1. Create particle system prefabs for special abilities

2. Access prefabs from our scriptable objects

3. Trigger particle systems at runtime in C#

4. How to destroy a particle when it has finished playing.

(Unique Video Reference: 47_MA_RPG)

Spawning Particles At Runtime

1. Create a self-heal special ability yourself.

(Unique Video Reference: 48_MA_RPG)

Self Heal Special Ability Challenge

1. Adding key affordances to the UI
2. Scanning for number key presses
3. Triggering and tweaking special abilities.

(Unique Video Reference: 49_MA_RPG)

Triggering Special Abilities From Keys

1. Separate damage and healing methods

2. Add sound triggers to all abilities

3. Tantalise idea of changing interface to inheritance

4. Parent healing particle system to player.

(Unique Video Reference: 50_MA_RPG)

Finishing The Self Heal Ability

Test Your Understanding 3.5
10 questions

1. How to count lines of code added

2. Adding additional weapon damage

3. Adding critical hit calculation & particles.

(Unique Video Reference: 51_MA_RPG )

Critical Hit And Weapon Bonus

  1. Creating particle systems within particle system
  2. Alter rotation of emmission
  3. Use burst emmission
  4. Tune and tweak particles

(Unique Video Reference: 52_MA_RPG)

AOE Particle Effect

  1. Create a "Plus" symbol image for our particle texture
  2. Implement self heal particle system

(Unique Video Reference: 53_MA_RPG)

Self Heal Particle Effect

Test Your Understanding 3.6
3 questions

  1. We now know what our game will be, so its time to shift gears.
  2. Well done on your great work so far!

(Unique Video Reference: 54_MA_RPG)

Section 3 Wrap Up
Finished Demo
40 Lectures 08:47:37
  1. What we're going to cover in this section
  2. Why this material is SO important
  3. Ben will start, Rick will finish
  4. A few new features but a LOT of polish.

(Unique Video Reference: 1_FD_RPG)

Section 4 Introduction

  1. Don't Repeat Yourself (DRY) Principle
  2. Inheritance can help us centralise
  3. It's often easy to change an interface to inheritance
  4. Create the new parent class, then delete the interface
  5. Getting code running again may require abstract and override

(Unique Video Reference: 2_FD_RPG)

Preview 11:02

  1. Move all PlayParticleEffect() code to parent class
  2. Use "down-casting" with caution for configs
  3. Setup prefab based idiom for world vs local particle space.

(Unique Video Reference: 3_FD_RPG)

Less Lines Of Code Is Better

  1. Move special ability audio to AbilityBehaviour.cs
  2. Use the PlayOneShot() method to play clips at the same time
  3. Import Rick's special ability sound effects.

(Unique Video Reference: 4_FD_RPG)

Centralise And Improve Audio Clips

  1. Move AttachComponentTo() method to parent class
  2. Refactor to simplify code as practice.

(Unique Video Reference: 5_FD_RPG)

Making Abstract Methods Concrete

  1. Creating what's effectively nested prefabs!
  2. How to use [ExecuteInEditMode] annotation
  3. Detecting play mode with Application.isPlaying
  4. Trigger a sound effect when weapon is collected.

(Unique Video Reference: 6_FD_RPG)

Weapon Pickup Points

  1. Destroy previous weapon by keeping member variable
  2. The Player class is becoming a "god object" (see Resource links)
  3. Change runtime animation on weapon swap.

(Unique Video Reference: 7_FD_RPG)

Weapon Change Mechanics

  1. Remove Unity's AICharacterControl.cs class
  2. Make PlayerMovement more general CharacterMovement
  3. Overall reduce our code base by 68 lines.

(Unique Video Reference: 8_FD_RPG)

Eliminate AICharacterControl

1. Remove jump and crouch arguments
2. Remove all un-necessary methods
3. Remove un-used member variables

Simplify Unity's ThirdPersonCharacter Class

  1. Upgrade our project to Unity 2017
  2. Fix anything that isn't working
  3. Overview the new features in Unity 2017.

(Unique Video Reference: 10_FD_RPG)

Introducing Unity 2017

Test Your Understanding 4.1
10 questions

  1. About the OnAnimatorMove() callback
  2. Using this to adjust root motion speed
  3. How call-backs can catch you out in refactors.

(Unique Video Reference: 11_FD_RPG)

Caution With Callbacks In Refactors

  1. Refactor our code in place to get an understanding
  2. Bring Unity's code in line with our code standards
  3. Move all code from ThirdPersonCharacter to CharacterMovement

(Unique Video Reference: 12_FD_RPG)

Eliminating ThirdPersonCharacter.cs

  1. With special abilities we turned an interface into inheritance
  2. Now we turn the IDamageable interface into a component
  3. Extract all damage, healing and health bar code.

(Unique Video Reference: 13_FD_RPG)

Extracting a DamageSystem Component

  1. Don't be distracted when not compiling
  2. Just solve the errors, get running & commit
  3. Complete extraction of HealthSystem

(Unique Video Reference: 14_FD_RPG)

Getting To Compilation With Focus

  1. Drawing a comparison with Health System
  2. Using the "Pomodoro Technique" for 20-min chunks
  3. Make energy and special abilities self contained
  4. How to write an alternative getter format in C#.

(Unique Video Reference: 15_FD_RPG)

Centralising Special Ability Code

  1. Remove the AbilityUseParams struct
  2. Eliminate the IDamageable interface

(Unique Video Reference: 16_FD_RPG)

Eliminate A Struct And Interface

  1. Review our code to ensure we "own" it
  2. Get special abilities working again
  3. Use an optional parameter in C#
  4. Setup an out of energy SFX.

(Unique Video Reference: 17_FD_RPG)

Using Optional Parameters In C

  1. Using the [SelectionBase] attribute
  2. Making characters add their own component on Awake()

(Unique Video Reference: 18_FD_RPG)

Having Characters Build Themselves

  1. Finish the work we started in the last lecture as a challenge.

(Unique Video Reference: 19_FD_RPG)

Completing Character Self-Setup

  1. Both PlayerControl and EnemyAI set world space destinations
  2. This will work for mouse, but would need to be modified for gamepad
  3. Take all input listening out of the character
  4. Start to really focus PlayerControl on it's sole function.

(Unique Video Reference: 20_FD_RPG)

A SetDestination() Movement API

Test Your Understanding 4.2
10 questions

  1. Review how the character part of the player works
  2. Create a dedicated animator override controller per enemy
  3. Build a character from scratch as the basis of an enemy
  4. Demonstrate our architecture by possessing as player.

(Unique Video Reference: 21_FD_RPG)

A Strong Character Basis

  1. Extract a few member variables at a time.
  2. Keep your code close to compilation.
  3. Provide new getter methods as needed.
  4. Know when to stop and commit your work!

(Unique Video Reference: 22_FD_RPG)

Slowly Extracting WeaponSystem

  1. Beeminder is a useful tool for accountability
  2. When you're tired you can still move forward
  3. How to recover Scriptable Objects that you can't inspect
  4. A strategy on handling todo tags in code.

(Unique Video Reference: 23_FD_RPG)

Recap And Review When Tired

  1. What makes an enemy an enemy?
  2. Remove member variables relating to WeaponSystem
  3. Use RequireComponent appropriately
  4. Make enemy attack radius depend on weapon
  5. Is GetComponent() slow? OK to call in Update()?

(Unique Video Reference: 24_FD_RPG)

Simplifying Enemy To EnemyAI

  1. Outline our required enemy behaviour in pseudocode.
  2. Use an enum to track the enemy's state
  3. Use co-routines to patrol, attack, chase, etc.
  4. Use the inspector debug mode to see it working.

(Unique Video Reference: 25_FD_RPG)

AI Behaviour Tree In Unity

  1. A simple scheme for defining patrol paths.
  2. A new WaypointContainer class.
  3. Setup a couple of test paths.

(Unique Video Reference: 26_FD_RPG)

Waypoint Paths With Editor Gizmos

  1. How yield break; works
  2. Care of infinite loops with while (true)
  3. Pseudocode to help you keep a consistent level of abstraction.

(Unique Video Reference: 27_FD_RPG)

Patrolling Using Coroutines

  1. How to use Debug.Break() to pause on error.
  2. Using a co-routine for repeat attacks.

(Unique Video Reference: 28_FD_RPG)

Automatic Repeat Attacking

  1. Our target could die at any time.
  2. We will test for deadness, and out of range every frame.
  3. Using StopAllCoroutines() to do just that!

(Unique Video Reference: 29_FD_RPG)

Stopping Coroutines In Update

  1. How to trigger an animation for each special ability.

(Unique Video Reference: 30_FD_RPG)

Special Ability Animations

Test Your Understanding 4.3
10 questions

  1. Setup move and attack.
  2. Setup move and power attack.

(Unique Video Reference: 31_FD_RPG)

Running Coroutines In Series

  1. Fix the enemy UI.
  2. Fix coroutine logic to stop attacking
  3. Review our // todo items.

(Unique Video Reference: 32_FD_RPG)

Finshing The Fight

  1. Challenge to fix the weapon pickup (see resources)
  2. Create a ranged character
  3. Delete Projectile.cs
  4. Resolve all todo items in the entire project!
  5. Fix bug where level doesn't re-load on player death.

(Unique Video Reference: 33_FD_RPG)

Finishing The Weapon System

  1. Explanation of our polish audit process.
  2. Creation of our polish list, phases and priorities.
  3. Creation of polish database.

(Unique Video Reference: 34_FD_RPG)

Polish Audit

  1. Execution - Intention
  2. Intention - Execution
  3. Imitation - Execution

(Unique Video Reference: 35_FD_RPG)

Tuning Paradigms

  1. Updates of our spreadsheet
  2. Base damage and weapon damage approach
  3. Checklist for building a new enemy

(Unique Video Reference: 36_FD_RPG)

Rebuilding Enemies

  1. Our current goals for our prototype level.
  2. Types of ways that we can surprise and delight our players.
  3. The surprise and delight we will be using for our game.

(Unique Video Reference: 37_FD_RPG)

Surprise And Delight

1. How to decide what to do first.

2. Fixing the continuous attacking bug.

(Unique Video Reference: 38_FD_RPG)

Continuous Attack Bug

  1. Identify nature of bug - enemy not attacking in certain states.
  2. Map out the enemy state machine options.
  3. Add variables to more clearly show what distance the player is to the enemy.

(Unique Video Reference: 39_FD_RPG)

Lazy Enemy Bug

About the Instructor
Ben Tristem
4.6 Average rating
60,221 Reviews
284,856 Students
10 Courses
Best-selling Instructor, Game Developer, Online Entrepreneur

Hi, I'm Ben. I have a degree in computing from Imperial College London, and a physics diploma from the Open University.

I started working for myself at the age of 15, and never looked back. I explored careers as varied as being a commercial pilot, stunt-man, rock climbing instructor, and more. None of these provided a continued challenge, and stable income in the same way technology does.

After building and selling a home computer support business, I became an angel investor and business mentor here in Cambridge UK. I fell in love with teaching game development through one of my investments, and I now spend all of my time sharing my passion with people like you.

I can't wait to help you experience the fulfilment, and financial freedom, that having a deep understanding of technology brings.

So why not start learning to make games with me and my team now?

See you soon!


Rick Davidson
4.7 Average rating
1,484 Reviews
17,401 Students
3 Courses
Game Career Coach with 13+ years in the Video Game Industry

Rick Davidson has been making video games for a living for more than 13 years as a Designer, Producer, Creative Director, and Executive Producer, creating games for console, mobile, PC and Facebook. He founded an Indie game studio, Inspirado Games, which was acquired in 2012 by Electronic Arts / PopCap. He has worked on cool IPs such as Mario, Transformers, Captain America and Mortal Kombat and created successful new IPs from scratch (such as "GardenMind" which was nominated for Canadian Game of the Year in the social / mobile category).

As a qualified Career Coach, Rick has helped thousands of people achieve their dream of making games for a living - both as Indie Game Developers and as valuable game industry employees.

GameDev.tv by Ben Tristem
4.6 Average rating
57,902 Reviews
279,361 Students
9 Courses
Learn to Make and Sell Games

GameDev tv was created by best-selling Udemy instructor Ben Tristem to help anyone learn how to develop, design, and sell indie games.  Our team supports Ben in making and maintaining high quality courses that are engaging and entertaining for more than 240,000 students.

GameDev tv offers comprehensive courses on Unity, Blender, Unreal and coding in C#, C++ and more.  Looking to learn about a topic that we don't cover?  Visit our community page and let us know.