What is Unity?

Unity is a cross-platform game engine. The Unity editor is supported on Windows, macOS, and the Linux platform. In contrast, the engine currently supports building games for over 25 platforms, including mobile, desktop, consoles, and virtual reality.

What are we going to build?

The course covers the development of one production-ready game. The type of game is 2D survival with a top-down view.

Project - Undead Survival

The main effort of this course is to show the viewer how to build a complete game from scratch. The game's goal is to survive as long as possible with infinite waves of enemies coming at the game protagonist.

The most important parts of the course are:

Scriptable Objects

Scriptable objects will be essential in creating the Statemachine, Ability system, and Action delegation. Scriptable objects make the project reusable and modular.

State Machine

Statemachine is the brain of the AI system. Every NPC can have different states (run, attack ...), while only one state can be active at a time. Every state can have multiple actions. Action is the behavior.

For example, the Enemy has a "Patrol" state. A patrol state can have two actions. One action is to provide movement to the enemy. Another action is to change the animation of the enemy to the walk.

The third component of the Statemachine is a condition. Condition is a boolean statement. When the statement or multiple statements are resolved as "true" the current state can be transited to the new one.

For example, if an enemy is in the "patrol" state and the "spot player condition" is resolved as "true", then an enemy can go to the "attack" state.

Enemies will have a straightforward state machine. More complex state machines will be applied to boss entities.

Ability System

A player and enemies can have different abilities. Each ability has stats, such as damage, cooldown, range, effect, and many others. Each ability is created as a scriptable object, which can be easily reused and changed to the required needs. There are two main types of abilities, passive and active ones. Passive ones are the abilities that are played automatically at a specific interval. Active ones need to be activated by some external input, such as a key-stroke of the player.

Other Parts

The course also covers other essential topics such as the spawning mechanism for the enemies, the UI system to display applied damage, game time, and other vital stats. There is also damage and health system. Next, the course covers the creation of the start/options menu with the options to navigate and choose different protagonists. The game is finished when the hero dies. When this happens, the score screen is displayed, and the game can be replayed infinitely.

Many other smaller topics will be covered in the course.

Main Goal

The main goal of the course is to teach how to create reusable systems that can be used in different games. The course focuses on the reusability of each component.


  • Base knowledge of C# and Unity - The course doesn't cover basics

Course curriculum

  • 2


    • Init Project

    • Assets

    • Environment Tileset

    • Add Player

    • Player Controller

    • AI - Transform

    • Follow Camera

  • 3

    Player Controller

    • Player Input Handler

    • Input Reader

    • AI Scriptable Objects

    • Action Delegate

    • Player Movement

    • Target Speed

  • 4

    Animation & Movement

    • Idle Animation

    • Running Animation

    • Movement Blend

    • Blend Tree

    • Set Animator Speed

    • Character Behaviour

    • Flip Sprite

    • Skeleton Enemy

  • 5

    StateMachine Beginnings

    • State Machine Start

    • StateSO init

    • Statemachine refactor

    • Create State

    • Initial all states

    • StateAction Init

    • Follow Player Action

    • Initialize State Actions

    • AI StateMachine

  • 6

    Follow Player

    • Awake Function

    • Game Manager

    • Get Player in Manager

    • Move towards player

    • Speed Modifier in SO

    • Set Colliders on Player and Enemy

    • Distance to Keep

  • 7

    Receive Damage

    • Prefabs

    • Player Prefab

    • Adds collision with enemy

    • Damageable

    • Damage Interval

  • 8

    Damage Effect

    • Sprite Flash Start

    • Flash Coroutine

    • Flash Color

    • Flip in player direction action

    • Flip the enemy

    • Effect Particles

    • Play Effect

    • Particles Update

  • 9

    Health Bar

    • Health Bar Canvas

    • Int Value SO

    • AI Int Value

    • Player Health

    • Add Health to Damageable

    • Slider Bar

    • Health Bar

  • 10

    Damage UI

    • Damage Text Canvas

    • Damage Text Animation

    • Destroy text on animation exit

    • UI Manager

    • Damage display script

    • Provide correct position for damage

  • 11

    Ability Starter

    • Ability Init

    • Melee Attack

    • Ability Runner

    • AI Ability Runner

    • Instantiate Ability

  • 12

    Melee Ability

    • Melee Attack Prefab + Anim

    • Set parent of ability

    • Disable animation looping

    • Ability Cooldown

    • Compute cooldown

    • Activate Ability

    • Activate Ability Another Option

  • 13

    Ability Action

    • Ability Action

    • Collision Layer

    • Enemy takes damage

    • Flip Attack

    • Disable Collider

    • Animation Event

    • Collide With from Origin Data

    • Flash Effect on Enemy

    • Ability Damage Value

  • 14

    Destroy Enemy

    • Check if death

    • Dead Animation

    • Note Flipping Issue

    • Trigger Dead animation

    • Destroy enemy

  • 15

    State Condition

    • State Condition

    • State Condition Methods

    • Health Condition

    • Health Percentage

    • Can transition

    • Transit To New State

    • Check if there is next state

    • Animation Action

  • 16


    • Coin Reward

    • Pick the coin

    • Move coin towards player

    • Coin Detection Range

    • Experience SO

    • Lootable

    • Drop Loot Action

  • 17

    Experience & Level

    • Level and Exp Values

    • Increase Experience

    • Exp Bar UI

    • Display Exp in UI

    • Increase Level

    • Level Text

    • Display level

    • Timer Text

  • 18

    Game Time

    • Game State SO

    • Increase Game Time

    • Nice Time

  • 19

    Projectile Ability

    • Projectile Ability

    • Fix Projectile SO

    • Refactor abilities

    • Check if action is provided

    • LightBolt prefab and anim

    • Action Modifier

    • Move to random position SO

    • Rotate the action

    • Action Range

    • Fire the projectile

  • 20

    Generic Actions

    • Generic Actions

    • Flip Melee Attack

    • Collision on projectile

  • 21

    Enemy Spawner

    • Spawn Config SO

    • Spawnable SO

    • Spawn Unit

    • Fix action warnings

    • Go to next round

    • Game Stage SO

    • Spawn Side

    • Spawn at random position

    • Extend Spawn Range

  • 22

    New Enemies

    • Bat Enemy Setup

    • Bat Statemachine

    • Collision Damage

    • Golem enemy setup

    • Golem Config

    • Firebolt enemy spell

  • 23

    Handle Losing

    • Player Dead Event

    • Async Method

    • Dead overlay and button

    • Pause the game

    • Is Game Over

  • 24

    Menu Scene

    • Menu Scene

    • Menu Buttons

    • Menu Manager

    • Close current menu

    • Choose Hero

    • Second hero

    • Experience Fix

    • Instantiate Hero

  • 25

    Playability Improvements

    • Fallback player prefab

    • Go to main menu

    • Negative scale

    • Attack Scale Flip

    • Parent Scale

  • 26

    Animation Ability

    • Animation Ability

    • Evade action

    • Ability Execution Type

    • Get ability from ability runner

    • Roll Animation

    • Fix player blonde roll

    • Speed Modifier

    • Evade animation event

    • Set Speed Modifier in Ability

  • 27

    Ability Cooldown Display

    • Ability Icon

    • Ability Add Event

    • Ability Icon Script

    • Choose Ability Icon

    • Health Follow Position

  • 28

    Score Screen & Infinite Map

    • Score Screen UI

    • Increase Score

    • Display Score

    • Infinite Map

  • 29

    Sounds & Course Ending

    • Audio Source

    • Play sound on enter modifier

    • Course Finish


Software Engineer

Filip Jerga

My name is Filip Jerga and I am an experienced software engineer and freelance developer. I have a Master's degree in Artificial Intelligence and several years of experience working on a wide range of technologies and projects from C++ development for ultrasound devices to modern mobile and web applications in React and Angular. Throughout my career, I have acquired advanced technical knowledge and the ability to explain programming topics clearly and in detail to a broad audience. I invite you to take my course, where I have put a lot of effort to explain web and software engineering concepts in a detailed, hands-on and understandable way.


  • How to get help when I am stuck with the course?

    Every video contains a discussion where you can create a post describing an issue. The instructor usually responds within 1 business day.

  • What to do when I am unhappy with the course ?

    Within 30 days from the purchase, you can ask for a full refund. No questions asked. Your happiness is our priority.

  • Do I need to watch every lecture of really extensive course?

    Of course not! Every lecture is committed (explained in the introduction section). You can start watching any lecture. Just download the correct project version attached to the lecture resources.

Eincode Access Options

  • Single Course Access

    • Lifetime and unlimited Access to "Unity 2D With C# - Complete Game Development Course"


    Access to this course only.

    Get started now
  • Monthly Membership

    • Unlimited Access!
    • Access to any current course!
    • Access to future courses!

    $19.00 / month

    Cancel Anytime!

    Get started now
  • Annual Membership

    • Unlimited Access!
    • Access to any current course!
    • Access to future courses!

    $190.00 / year

    Cancel Anytime!

    Get started now