Complete C# Unity Developer 2D: Learn to Code Making Games
4.6 (57,817 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
291,804 students enrolled

Complete C# Unity Developer 2D: Learn to Code Making Games

Game development & design. Learn Unity 2018 in C#. Your first 7 2D Unity games for web, Mac & PC. Includes Tilemap
Bestseller
4.6 (57,817 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
291,804 students enrolled
Last updated 4/2019
English
English, French [Auto-generated], 7 more
  • German [Auto-generated]
  • Indonesian [Auto-generated]
  • Italian [Auto-generated]
  • Japanese [Auto-generated]
  • Portuguese [Auto-generated]
  • Spanish [Auto-generated]
  • Turkish [Auto-generated]
Current price: $11.99 Original price: $194.99 Discount: 94% off
1 day left at this price!
30-Day Money-Back Guarantee
This course includes
  • 35 hours on-demand video
  • 4 articles
  • 27 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to Udemy's top 3,000+ courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Learn C#, a powerful modern language, from scratch. No prior programming experience is necessary.
  • Become excellent at using the Unity game engine.

  • Build a solid foundation for game design and game development that will help you build your own games.

  • Learn how object oriented programming works in practice.
  • Create playable game projects - good for your portfolio, or just for your own sense of achievement.
  • Transfer your knowledge to .NET, other languages, and more.
  • Develop highly transferable coding problem solving skills.
  • Be part of an amazing and supportive community of people similar to you.
Course content
Expand all 220 lectures 35:06:05
+ Introduction & Setup
6 lectures 32:00

In this video (objectives)…

  1. We make learning Unity & C# easy
  2. Introducing Ben & Rick
  3. What the course covers
  4. 40,000 reviews can't be wrong!

After watching (learning outcomes)… Recall why you were motivated to buy this course.

(Unique Video Reference: 1_IN_CUD)

Preview 02:38

In this video (objectives)…

  1. Navigate to Unity's download page

  2. Download Unity Hub

  3. Select the latest version of Unity to download

  4. Select your download options from the list

After watching (learning outcomes)… Get Unity and Visual Studio downloading.

(Unique Video Reference: 2_IN_CUD)

Download Unity & Visual Studio
05:32

In this video (objectives)…

  1. Create a new Unity project
  2. Create a .cs script
  3. Add a simple print statement
  4. Attach script to camera game object
  5. Run script and see our statement printed to the console

After watching (learning outcomes)… Create a script and print a simple statement to the Unity console.

(Unique Video Reference: 3_IN_CUD)

Your First Code
10:42

In this video (objectives)…

  1. We use PC mostly throughout the course
  2. General differences you'll see on Mac versus PC
  3. Specific Unity and Visual Studio differences you'll see on a Mac.

After watching (learning outcomes)… Understand what difference to look for if on a Mac.

(Unique Video Reference: 4_IN_CUD)

Notes For Mac Users
03:42

In this video (objectives)…

  1. Options for getting help & support
  2. Using the Udemy Q&A section
  3. GameDev.tv community forum
  4. Discord chat server
  5. Facebook community group
  6. Google slides and close captions.

After watching (learning outcomes)… Exactly how and where to get help and support.

(Unique Video Reference: 5_IN_CUD)

Community & Support
09:01

In this video (objectives)…

  1. Great work on getting set up
  2. Let's dive into the next section.

After watching (learning outcomes)… You'll be set up and ready to go.

(Unique Video Reference: 6_IN_CUD)

Section Wrap Up
00:25
Test Your Understanding - Intro & Setup #1
5 questions
+ Number Wizard - Basic C# Coding
10 lectures 01:20:40

In this video (objectives)…

  1. Overview of this section
  2. Code is mostly the same as the original code
  3. Let's get started!

After watching (learning outcomes)… Ready and raring to start.

(Unique Video Reference: 1_NC_CUD)

Welcome To Number Wizard Console
01:42

In this video (objectives)…

  1. Understand the game flow for the simple game we are making.
  2. Use Debug.Log() to print our welcome to the player
  3. Add three additional statements to give the player the requirements

After watching (learning outcomes)… Be able to print to the console using Debug.Log().

(Unique Video Reference: 2_NC_CUD)

Print To Console With Debug.Log()
10:52

In this video (objectives)…

  1. Discuss that variables are like boxes which store data.
  2. Create an integer variable to store our maximum guess value.
  3. Create an integer variable to store our minimum guess value.

After watching (learning outcomes)… Be capable of creating an integer type variable.

(Unique Video Reference: 3_NC_CUD)

Preview 07:23

In this video (objectives)…

  1. Problem solving discussion using Unity docs.
  2. Use Input.GetKeyDown() to recognise when a key is pressed.
  3. Use the KeyCode keyword to determine which key is pressed.
  4. Discuss white space, code blocks and bracketing.
  5. Introduce commenting.

After watching (learning outcomes)… Understand how to recognise player input using Input.GetKeyDown().

(Unique Video Reference: 4_NC_CUD)

Respond To Player Input
15:49

In this video (objectives)…

  1. Consider the problem we have of multiple key presses being possible.
  2. Discuss the difference between if, else if & else conditional statements.
  3. Implement an approach that makes our key presses mutually exclusive of one another.

After watching (learning outcomes)… Use if and else if statements to make key presses mutually exclusive.

(Unique Video Reference: 5_NC_CUD)

Using if, else if & else
05:29

In this video (objectives)…

  1. Discuss how C# is organised / grouped.
  2. Address the problem of scope and with our variables not being accessible.
  3. Create a guess variable.

After watching (learning outcomes)… Be cool with how scope applies to declaring and using variables.

(Unique Video Reference: 6_NC_CUD)

Preview 09:50

In this video (objectives)…

  1. Implement the simple calculation to guess the midpoint of our min and max.
  2. Fix an issue with the maximum guess not reaching 1000.
  3. Tidy up our text.
  4. Use github to access our code updates and lecture changes.

After watching (learning outcomes)…

Implement a simple calculation that updates our guess based upon player feedback.

(Unique Video Reference: 7_NC_CUD)

Calculate Guess Variable
11:29

In this video (objectives)…

  1. Create a new function for StartGame().
  2. Create a new function for NextGuess().
  3. Discussion encapsulating as it relates to C#.
  4. Finish our game.

After watching (learning outcomes)…

Create your first functions and finish off our simple game.

(Unique Video Reference: 8_NC_CUD)

Functions & Encapsulating
12:01

In this video (objectives)…

  1. Great work for completing this section.
  2. You're not supposed to understand everything yet.
  3. Keep pushing forward into the next section.

After watching (learning outcomes)…

Celebrate completing this section and push on to the next one.

(Unique Video Reference: 9_NC_CUD)

Number Wizard Console Wrap Up
01:18
Test Your Understanding - Number Wizard #1
10 questions

In this video (objectives)…

  1. Checklist for troubleshooting if Visual Studio seems to be not working properly.

After watching (learning outcomes)… Armed with knowledge on how to fix Visual Studio problems.

(Unique Video Reference: 3b_NC_CUD)

Fixing Visual Studio Problems
04:47
+ Text101
17 lectures 02:52:36

In this video (objectives)…

  1. Overview of this section
  2. Flex your designer muscles if you're interested
  3. We'll be using Scriptable Objects to make a Text Adventure Game
  4. Let's get started!

After watching (learning outcomes)… Ready and raring to start this section.

(Unique Video Reference: 1_TX_CUD)

Welcome To Text101
02:44

In this video (objectives)…

  1. Overview of our game design, core mechanic and theme
  2. Some high level design insight on how we are creating a game for other people
  3. A challenge to flex your designer muscles and come up with your own game theme

After watching (learning outcomes)… Clear on the design for our game.

(Unique Video Reference: 2_TX_CUD)

Text101 Game Design
05:50

In this video (objectives)…

  1. Introduction to Unity's main windows - Hierarchy, Scene, Game, Project, Inspector.
  2. Create simple square and circle sprites.
  3. Compare the difference between 2D and 3D scene view.
  4. Build a simple platformer scene for fun.

After watching (learning outcomes)… Capable of adding sprite Game Objects into a scene in Unity.

(Unique Video Reference: 3_TX_CUD)

Creating Sprites In Unity
14:13

In this video (objectives)…

  1. Introduction to Unity canvas for UI.
  2. Initial discussion of parent-child relationship for Game Objects in hierarchy.
  3. Add text elements.
  4. Edit text, resize elements.
  5. Add UI images as background elements.

After watching (learning outcomes)…

Able to create UI Canvas with text elements and plain image objects.

(Unique Video Reference: 4_TX_CUD)

UI Canvas & Text
11:50

In this video (objectives)…

  1. Deeper understanding of how Unity Game Objects, Components and Properties relate to one another.
  2. Introduction to [SerializeField].
  3. Creating a reference to a text field.
  4. Printing a string to our UI text field.

After watching (learning outcomes)…

Capable of programmatically adding a string of text to a UI text field.

(Unique Video Reference: 5_TX_CUD)

Update Text Component
14:23

In this video (objectives)…

  1. What are states and what is a state machine.
  2. Creating decision points for the player.
  3. How to manage all of our states and conditions - scriptable objects.

After watching (learning outcomes)…

Understand our requirements regarding states and create your first state for your text adventure game.

(Unique Video Reference: 6_TX_CUD)

Game States
07:18

In this video (objectives)…

  1. What is a scriptable object and why use it?
  2. Use CreateAssetMenu so that we have a context menu to add scriptable objects.
  3. Create our first scriptable object.

After watching (learning outcomes)…

Create our first scriptable object.

(Unique Video Reference: 7_TX_CUD)

Unity Scriptable Objects
09:09

In this video (objectives)…

  1. Reminder of how we are using state as a variable.

  2. Reminder of what methods are.

  3. Example of return types in methods.

  4. Example of public versus private methods.

After watching (learning outcomes)…

Be ready for the challenging content that is coming in next few videos.

(Unique Video Reference: 7B_TX_CUD)

Challenging Content Ahead
07:11

In this video (objectives)…

  1. Public versus private access modifier.
  2. What are return types for methods.
  3. Writing a public method and accessing it from another class.

After watching (learning outcomes)…

Create a public method and access it from another class.

(Unique Video Reference: 8_TX_CUD)

Public Methods & Return Types
10:34

In this video (objectives)…

  1. What is an array and how are arrays created.
  2. Returning an array type variable from within a public method.
  3. Assigning array elements in Unity by dragging and dropping into the inspector.
  4. How to lock the inspector window.

After watching (learning outcomes)…

Understand how to create arrays and assign elements to arrays in code or in the inspector.

(Unique Video Reference: 9_TX_CUD)

Creating An Array
13:39

In this video (objectives)…

  1. Create a small game loop by having each state lead to another state.
  2. Create a method to respond to player's key input.
  3. Update the game's state based upon the next state array options.

After watching (learning outcomes)…

Complete our small adventure game engine using player input and state flow.

(Unique Video Reference: 10_TX_CUD)

Manage Next States
10:17

In this video (objectives)…

  1. Using draw.io for our state diagram and flow.
  2. Time to create your own story.

After watching (learning outcomes)…

Capable of creating a flow chart for your story.

(Unique Video Reference: 11_TX_CUD)

Game State Story Design
07:49

In this video (objectives)…

  1. Complete our game flow by adding all story states, and start and end states.

After watching (learning outcomes)…

Add all our states to our game.

(Unique Video Reference: 12_TX_CUD)

Organise State Files
10:33

In this video (objectives)…

  1. Using Unity's Package Manager to install TextMesh Pro.
  2. Font a font online to bring into your project.
  3. Create font atlas using the font you found and TextMesh Pro.
  4. Create a TextMesh Pro text for your title.
  5. Find a colour scheme you like and update the colours in your game.

After watching (learning outcomes)…

Know how to use TextMesh Pro and how to polish the look of your game.

(Unique Video Reference: 13_TX_CUD)

TextMesh Pro & Polish
13:14
Test Your Understanding - Text101 #1
10 questions

In this video (objectives)…

  1. Further discussion regarding state as a class and state as a variable.
  2. Further discussion on how scriptable objects work, where they are saving and what is required.
  3. Code formating - where it matters and where it doesn't.
  4. Why we didn't dig into more narrative design in this section.

After watching (learning outcomes)…

Deeper understanding of the concepts covered thus far in this section.

(Unique Video Reference: 14_TX_CUD)

Text101 Instructor Hangout #1
11:50

In this video (objectives)…

  1. Find a bug in our game which causes our standalone PC build to break.
  2. Figure out why the game is breaking because of the bug.
  3. Use a for loop to change our input mechanism and stop ArrayOutOfIndex errors.

After watching (learning outcomes)…

Fix our ArrayOutOfIndex error using a for loop for player input.

(Unique Video Reference: 16_TX_CUD)

For Loops
11:20

In this video (objectives)…

  1. Adjust our screen aspect ratio and scaling.
  2. Create a WebGL build.
  3. Zip our build foler and upload to sharemygame.com.
  4. Celebrate, you've published a game!

After watching (learning outcomes)…

Create a WebGL build and publish online.

(Unique Video Reference: 15_TX_CUD)

Publish Your WebGL Game
10:42
+ Number Wizard UI
12 lectures 01:40:50

In this video (objectives)…

  1. Overview of this section.
  2. Focus on UI - adding buttons, text, images.
  3. Linking our button functionality with our code.
  4. Creating scenes and loading scenes.

After watching (learning outcomes)… Ready and raring to start this section.

(Unique Video Reference: 1_UI_CUD)

Welcome To Number Wizard UI
01:59

In this video (objectives)…

  1. Reminder of the core guessing game mechanic.
  2. Presentation of our game flow through the main scenes.
  3. Discussion of theme and tone of the game.

After watching (learning outcomes)… Clear on the design objectives for the game.

(Unique Video Reference: 2_UI_CUD)

Number Wizard UI Game Design
04:07

In this video (objectives)…

  1. Add a button to our canvas.
  2. Add an image to our canvas.
  3. Adjust the stretch and anchor settings so that our UI assets are aligned how we want them to be even if the game is played at different aspect ratios or resolutions.

After watching (learning outcomes)… Capable of implementing UI anchor points works.

(Unique Video Reference: 3_UI_CUD)

UI Anchors
09:59

In this video (objectives)…

  1. Add mouse over and click effect to our button.
  2. Improve font quality using TextMesh Pro text for the button.
  3. Create 3 scenes, each of which has a button that can be used to load new scenes.

After watching (learning outcomes)… Create nice looking buttons that can be used for awesome functionality.

(Unique Video Reference: 4_UI_CUD)

Making Buttons
12:21

In this video (objectives)…

  1. Create public method to load the next scene.
  2. Add build index to scenes.
  3. Hook up start button with LoadNextScene() public method.

After watching (learning outcomes)… Create public method to load next scene, triggered from a button.

(Unique Video Reference: 5_UI_CUD)

Button Click Loads Scene
11:58

In this video (objectives)…

  1. Create new method to load straight to our first scene.

  2. Hook up all buttons to loading functionality.

  3. Load all scenes.

After watching (learning outcomes)…

Load all scenes in our game using buttons.

(Unique Video Reference: 6_UI_CUD)

Load All Scenes
06:11

In this video (objectives)…

  1. Examine our "spec" for the game screen.
  2. Implement all the buttons, text, images required for the game screen.
  3. Ensure all game objects are properly named and ready for action.

After watching (learning outcomes)… Implement UI elements required for our core game from our game design.

(Unique Video Reference: 7_UI_CUD)

Prepare Game Screen
09:39

In this video (objectives)…

  1. Import our NumberWizard.cs code from previous section of the course.
  2. Assess what needs to be refactored / changed in order to have our code work with our user interface.
  3. Refactor the code including player input mechanism.

After watching (learning outcomes)… Refactor our code so that it is ready to hook up with our user interface.

(Unique Video Reference: 8_UI_CUD)

Import & Refactor Code
07:11

In this video (objectives)…

  1. Hook up our buttons to the previously created methods.
  2. Link our UI text field to our code.
  3. Use ToString() to convert our integer into a string to be displayed in our text field.

After watching (learning outcomes)… Connect a variable in our code with a text field in our UI.

(Unique Video Reference: 9_UI_CUD)

Using ToString()
08:27

In this video (objectives)…

  1. Use Random.Range() for our guess to introduce randomness.
  2. Refactor our code to only have 1 place of calculating guess.
  3. Tweak our logic to prevent the computer from guessing a number already guessed.

After watching (learning outcomes)… Use Random.Range() to add randomness to the number guessed.

(Unique Video Reference: 10_UI_CUD)

Use Random.Range()
08:32

In this video (objectives)…

  1. Use Application.Quit() to create a quit button for our game.
  2. Add final text, colours and tweaks to the game.
  3. Build to PC, Mac, Linux Standalone.

After watching (learning outcomes)… Create a final PC / Mac / Linux Standalone build.

(Unique Video Reference: 11_UI_CUD)

Polish & Standalone Build
10:20
Test Your Understanding - Number Wizard UI #1
10 questions

In this video (objectives)…

  1. We discuss namespaces in more detail.

After watching (learning outcomes)… A hangout where Ben and Rick talk about namespaces.

(Unique Video Reference: 12_UI_CUD)

NWUI Instructor Hangout #1
10:06
+ Block Breaker
39 lectures 06:14:51

In this video (objectives)…

  1. Overview of this section.
  2. Focus on Unity's physics engine and collisions.
  3. Lots of creative opportunity to make your own levels, background, blocks, rules, tuning and so on.

After watching (learning outcomes)… Ready and raring to start this section.

(Unique Video Reference: 1_BR_CUD)

Welcome To Block Breaker
01:37

In this video (objectives)…

  1. Fundamental aspects of our design.
  2. Ideas for your game.
  3. Challenge for your game theme, background image and name.

After watching (learning outcomes)… Clear on the game design we will use for Block Breaker.

(Unique Video Reference: 2_BR_CUD)

Block Breaker Game Design
05:46

In this video (objectives)…

  1. Export scenes and SceneLoader.cs from previous project.
  2. Import package into our new project.
  3. Set up build settings, change aspect ratio, update text.

After watching (learning outcomes)… Export scenes and logic from one project and import as a package into another.

(Unique Video Reference: 3_BR_CUD)

Export & Import Package
13:01

In this video (objectives)…

  1. Discuss what Unity World Units are.
  2. Set up our camera size.
  3. Import and set up background image, paddle, ball and block.

After watching (learning outcomes)… Understand world units and set up play space.

(Unique Video Reference: 4_BR_CUD)

World Units & Play Space
11:45

In this video (objectives)…

  1. Add a Rigidbody2D to the ball so that it has gravity influencing it.
  2. Add colliders to ball and block so that they collider.

After watching (learning outcomes)… Able to add the core physics components to 2D objects.

(Unique Video Reference: 5_BR_CUD)

Rigidbody & Colliders
07:18

In this video (objectives)…

  1. Add Polygon Collider 2D to our paddle.
  2. Add Physics Material 2D to our ball.
  3. Bounce!

After watching (learning outcomes)… Make a game object bounce off another game object.

(Unique Video Reference: 6_BR_CUD)

Add Unity Physics Material
06:43

In this video (objectives)…

  1. Stop our ball rotating by freezing Z axis rotation on our Rigidbody.
  2. Create a lose collider.
  3. Discuss difference between trigger and collider and examine the event matrix for collision events.
  4. Load Game Over screen when ball passes through lose collider.

After watching (learning outcomes)… Make the game load a new scene when an object passes through a trigger volume.

(Unique Video Reference: 7_BR_CUD)

Colliders, Collision & Triggers
12:14

In this video (objectives)…

  1. Find the position of the mouse on the screen.
  2. Convert the mouse position into a relative proportion of our screen represented as game units.
  3. Link movement of our mouse to movement of our paddle.

After watching (learning outcomes)… Move a game object so that it matches the position of the player's mouse.

(Unique Video Reference: 8_BR_CUD)

Move Object With Mouse
15:33

In this video (objectives)…

  1. Figure out the range we want to allow the paddle to move on x axis.
  2. use Mathf.Clamp() to limit the paddle's movement.

After watching (learning outcomes)… Use Mathf.Clamp() to limit the movement of a game object.

(Unique Video Reference: 9_BR_CUD)

Limit With Mathf.Clamp()
05:00

In this video (objectives)…

  1. Understand how to calculate the distance from ball to paddle.
  2. Update location of the ball to match the location of the paddle plus our offset.

After watching (learning outcomes)… Stick the ball to the paddle.

(Unique Video Reference: 10_BR_CUD)

Distance As A Vector2
12:56

In this video (objectives)…

  1. Create a method to give the ball an upwards velocity.
  2. Create a bool which allows us to determine if the game has started yet and therefore stop locking the ball to the paddle.

After watching (learning outcomes)… Launch the ball with upward velocity from the paddle.

(Unique Video Reference: 11_BR_CUD)

Launch The Ball
10:41
Test Your Understanding - Block Breaker #1
10 questions

In this video (objectives)…

  1. Add walls for our ball to bounce off.
  2. Alter the gravity so that the ball doesn't slow down due to gravity.

After watching (learning outcomes)… Set up our play space and change our gravity.

(Unique Video Reference: 13_BR_CUD)

Play Space & Gravity
10:17

In this video (objectives)…

  1. Add Block.cs script to our block.
  2. Use the Destroy() method to destroy the block once its hit.
  3. Discuss the option to set arguments for the method.

After watching (learning outcomes)… Destroy our block when the ball hits it.

(Unique Video Reference: 14_BR_CUD)

Destroy GameObject
09:49

In this video (objectives)…

  1. Create our first prefab.
  2. Experiment with how prefabs work.
  3. Set our snap settings.
  4. Build a level.

After watching (learning outcomes)… Use prefabs and build a level out of prefabbed blocks.

(Unique Video Reference: 15_BR_CUD)

Using Prefabs In Unity
17:12

In this video (objectives)…

  1. Prefab all of the game objects that are required for our game levels.
  2. Create Level 2 using our prefabbed objects.

After watching (learning outcomes)… Create a second level using prefabbed assets.

(Unique Video Reference: 16_BR_CUD)

Make A Second Level
09:21
Test Your Understanding - Block Breaker #2
5 questions

In this video (objectives)…

  1. Identify the issue - the ball slows down after hitting the side of the paddle.
  2. Alter the physics material friction value to remove all friction on the ball.

After watching (learning outcomes)… Stop the ball slowing down when it collides with the paddle.

(Unique Video Reference: 17_BR_CUD)

Fraction Too Much Friction
03:05

In this video (objectives)…

1. Understand Audio Listener, Audio Source and Audio Clip.

2. Use GetComponent to access the Audio Source and play our clip.

3. Ensure that the sound does not start until the ball is launched.

After watching (learning outcomes)…

Trigger sound effect each time the ball collides with something.

(UVR 18_BR_CUD)

GetComponent To Play Audio
10:50

In this video (objectives)…

1. Use PlayOneShot instead of Play.

2. Create an array and then use that array to randomly select one of many audio clips.

3. Cache our component reference.

After watching (learning outcomes)…

Randomly play one of many sound effects when an event takes place.

(UVR 19_BR_CUD)

Play Random Sound From Array
10:05

In this video (objectives)…

  1. Examine our problem with destroying our GameObject and therefore destroying the ability to play our destroyed SFX.
  2. Use PlayClipAtPoint() to solve the issue of our AudioSource being destroyed.

After watching (learning outcomes)… Play sounds from objects which are being destroyed.

(Unique Video Reference: 20_BR_CUD)

PlayClipAtPoint()
10:02

In this video (objectives)…

  1. Map out our workflow for determining how many blocks are in a scene so that we can know when we reach zero.

  2. Create level GameObject and script.

  3. Increment our number of blocks for each block in our scene.

  4. Introduction to FindObjectOfType.

After watching (learning outcomes)… Tally up the total number of blocks in our scene.

(Unique Video Reference: 21_BR_CUD)

Count Breakable Blocks
09:24
Test Your Understanding - Block Breaker #3
5 questions

In this video (objectives)…

  1. Create a public method for decreasing total number of blocks when a block is destroyed.
  2. Use FindObjectOfType to access our level loading methods.

After watching (learning outcomes)… Load the next level when all blocks in a level have been destroyed.

(Unique Video Reference: 22_BR_CUD)

Win The Level & Load
09:50

In this video (objectives)…

  1. Use [Range] to create a constrained slider in our inspector.
  2. Add Time.timeScale to adjust the speed of our entire game instead of needing to play around with gravity and velocity.
  3. Hunt down an error by updating our other level with our prefabs.

After watching (learning outcomes)… Able to change the speed of our game using Time.timeScale.

(Unique Video Reference: 23_BR_CUD)

Using Time.timeScale
11:46

In this video (objectives)…

  1. Create currentScore and pointsPerBlockDestroyed variables.
  2. Create a public method that adds to our score when called.
  3. Call the method which increases our score when a block is destroyed.

After watching (learning outcomes)… Able to increase the player's score when a block is destroyed.

(Unique Video Reference: 24_BR_CUD)

Add Player Score
08:22

In this video (objectives)…

  1. Create TextMeshPro text, import font, tweak till we're happy.
  2. Use ToString() to update our text field with our current score.

After watching (learning outcomes)… Able to display and update the player's score in the UI.

(Unique Video Reference: 25_BR_CUD)

Display Player Score
10:01

In this video (objectives)…

  1. Introduce the Singleton Pattern.
  2. Use DontDestroyOnLoad().
  3. Examine the Unity script execution order to see that we can use Awake() for our singleton.

After watching (learning outcomes)… Able to implement a Singleton Pattern to ensure that our score persists across level load.

(Unique Video Reference: 26_BR_CUD)

Implement Singleton Pattern
17:05

In this video (objectives)…

  1. Inserted a simple fix for bugs we are seeing with the Singleton.
  2. Immediately set the game object to inactive and then destroy it.

After watching (learning outcomes)… Fix one of the known issues with the singleton not destroying itself correctly.

(Unique Video Reference: 26b_BR_CUD)

Singleton Pattern Bug Fix
03:16
Test Your Understanding - Block Breaker #4
5 questions

In this video (objectives)…

  1. Reinforce the public method paradigm we've been using.
  2. Fix the issue with our score persisting from game session to game session.
  3. How to rename a class.

After watching (learning outcomes)… How to elegantly reset our game session so that our score resets.

(Unique Video Reference: 27_BR_CUD)

Reset Game Session
08:03

In this video (objectives)…

  1. Review how Instantiate() works, discussing method overloads and signatures.
  2. Create code for instantiating a particle effect when we destroy a block.

After watching (learning outcomes)… Able to instantiate a GameObject through our code.

(Unique Video Reference: 28_BR_CUD)

Instantiate GameObject
10:44

In this video (objectives)…

  1. Getting schwifty with tags - understanding the what and why of using them.
  2. Creating an unbreakable block type which... doesn't... break!

After watching (learning outcomes)… Able to use tags to create an unbreakable block type.

(Unique Video Reference: 29_BR_CUD)

Using Tags In Unity
09:41

In this video (objectives)…

  1. Create 2 variables we can compare - maxHits and timesHit.
  2. Implement a conditional statement to destroy block if maxHits is more than timesHit.

After watching (learning outcomes)… Create a simple system of multiple damage levels for our blocks.

(Unique Video Reference: 30_BR_CUD)

Block Damage Levels
06:37

In this video (objectives)…

  1. Create an array to hold our damage sprites.
  2. Change our sprite renderer depending upon how many hits a block has taken.

After watching (learning outcomes)… Change the sprite displayed for a block based upon how many hits it has taken.

(Unique Video Reference: 31_BR_CUD)

Damage Affordance
11:46
Test Your Understanding - Block Breaker #5
5 questions

In this video (objectives)…

  1. Remove blocks and recreate our playtesting level.
  2. Add code to provide a warning if our array is missing sprites.
  3. Remove the manual process for defining maxHits and link this to the array size of our sprites.

After watching (learning outcomes)… Add warnings to catch mistakes and remove one place we could make a mistake.

(Unique Video Reference: 32_BR_CUD)

Smarter maxHits Logic
10:45

In this video (objectives)…

  1. What's our problem? Boring ball loops.
  2. How can we solve it? Adding velocity tweaks to our balls when they bounce into things.

After watching (learning outcomes)… Add velocity tweaks to our balls to stop them being boring.

(Unique Video Reference: 33_BR_CUD)

Prevent Boring Ball Loops
11:30

In this video (objectives)…

  1. Discuss the concept of extreme tuning - why use it.
  2. Audit our current project for places that we can apply some extreme tuning.
  3. Rick does some extreme tuning.

After watching (learning outcomes)… Able to audit your project and apply extreme tuning to make your project rad.

(Unique Video Reference: 34_BR_CUD)

Extreme! Tuning!
08:37

In this video (objectives)…

  1. Refer back to your player experience to determine how you tune your game.
  2. Tune all of your game variables so that you're happy with them.
  3. Ask a friend to playtest.

After watching (learning outcomes)… Tune your game so that it matches your player experience.

(Unique Video Reference: 35_BR_CUD)

Tune & Playtest
07:09

In this video (objectives)…

  1. Create an if statement to test if we have enabled autoplay.
  2. If auto play is enabled, change the paddle's x position to the same as the ball's x position.

After watching (learning outcomes)… Able to lock the paddle to the ball using an autoplay toggle.

(Unique Video Reference: 36_BR_CUD)

Autoplay for Playtesting
13:19

In this video (objectives)…

  1. Add extra levels so that you have at least 5 levels.
  2. Create a WebGL build and share to ShareMyGame.com

After watching (learning outcomes)… Finish your game and upload for the community to check out.

(Unique Video Reference: 37_BR_CUD)

Make Levels & Upload
05:52
Test Your Understanding - Block Breaker #6
5 questions

In this video (objectives)…

  1. Well done for the great creativity in this section.
  2. You can add to your project or push on to the next section.

After watching (learning outcomes)… Onwards and upwards to the next section of the course!

(Unique Video Reference: 38_BR_CUD)

Block Breaker Wrap-Up
02:23

In this video (objectives)...

  1. Discussion about the endless loop issue.
  2. Public versus [SerializeField].
  3. What are messages and how are they called.

After watching (learning outcomes)…

Ben and Rick talk about a few issues that came up in this section of the course.

(Unique Video Reference: 37b_BR_CUD)

Block Breaker Instructor Hangout #2
15:26
+ Laser Defender
35 lectures 05:57:35

In this video (objectives)… 1. Overview of this section. 2. Focus on making a fun top-down shooter. 3. Lots of creative opportunity to make your flavour of top-down shooter. After watching (learning outcomes)… Ready and raring to start this section.

(Unique Video Reference: 1_LD_CUD)

Welcome To Laser Defender
03:33

In this video (objectives)…

  1. Discuss the features, player experience and core loop in our game.

After watching (learning outcomes)… You'll know exactly what we're making and you'll need to do to get started.

(Unique Video Reference: 2_LD_CUD)

Laser Defender Game Design
03:50

In this video (objectives)…

  1. Create new Unity project.
  2. Download art assets and import them.
  3. Set up background, player, enemy, camera and aspect ratio to find something we are happy with.

After watching (learning outcomes)… Create our project and be happy with the aspect ratio, sizes and proportions.

(Unique Video Reference: 3_LD_CUD)

Set Up Project
11:26

In this video (objectives)…

  1. Move the player on horizontal axis using Input.GetAxis().
  2. Use Time.deltaTime to make our game framerate independent.
  3. Also add vertical movement for the player.

After watching (learning outcomes)… Move your player ship in a way which is frame rate independent.

(Unique Video Reference: 4_LD_CUD)

Movement & Time.deltaTime
16:27

In this video (objectives)…

  1. Construct our gameplay boundaries using the method ViewPortToWorldPoint().
  2. Clamp our horizontal and vertical movement based upon our boundaries.
  3. Add padding so that the player does not go off screen.

After watching (learning outcomes)… Limit your player's ship movement based upon relative camera space.

(Unique Video Reference: 5_LD_CUD)

ViewPortToWorldPoint()
12:09
Test Your Understanding - Laser Defender #1
5 questions

In this video (objectives)…

  1. Map out all the core and secondary features in our game and the main polish areas.
  2. Identify our options for priorities and select our next feature to work on.

After watching (learning outcomes)… Understand the thought process for identifying your priorities for development.

(Unique Video Reference: 6_LD_CUD)

What Feature Next
04:38

In this video (objectives)…

  1. Create a projectile and connect it to the player.
  2. Instantiate a the projectile using GetButtonDown().
  3. Give the projectile some velocity so that it shoots upwards.

After watching (learning outcomes)… Instantiate a project and shoot it upwards.

(Unique Video Reference: 7_LD_CUD)

Make Player Shoot
14:23

In this video (objectives)…

  1. Understand the core concept of how a coroutine works.
  2. Create a simple coroutine that prints to the console, yields for 3 seconds, then prints to the console again.

After watching (learning outcomes)… Understand the basics of how coroutines work.

(Unique Video Reference: 8_LD_CUD)

Using Coroutines
07:55

In this video (objectives)…

  1. Create a coroutine to call when firing.
  2. Loop the coroutine using a while (true) loop.
  3. Create a means in which to stop the coroutine.

After watching (learning outcomes)… Use coroutine to create repeating fire when the player is holding down the shoot button.

(Unique Video Reference: 9_LD_CUD)

Repeat Fire Coroutine
10:43

In this video (objectives)…

  1. Create Shredder object and script.
  2. Test for trigger and then destroy object which collided.

After watching (learning outcomes)… Able to destroy GameObjects which collide with our trigger volume.

(Unique Video Reference: 10_LD_CUD)

GameObject Shredder
06:18
Test Your Understanding - Laser Defender #2
5 questions

In this video (objectives)…

  1. Create empty game objects to use as waypoints.
  2. Introduce lists and how they are different to arrays.
  3. Store our path waypoints in our list.

After watching (learning outcomes)… Create a list to store enemy path waypoints.

(Unique Video Reference: 11_LD_CUD)

Create List Of Waypoints
08:18

In this video (objectives)…

  1. Write pseudocode for our enemy movement.
  2. Use the MoveTowards() method to move the enemy.

After watching (learning outcomes)… Move an enemy GameObject along a path using waypoints.

(Unique Video Reference: 12_LD_CUD)

Move Enemy On Path
10:33

In this video (objectives)…

  1. Map out what data will need to be in which of our scripts.
  2. Create our WaveConfig script and populate it with our data variables.
  3. Write public get methods to allow other classes to access our data.

After watching (learning outcomes)… Create a scriptable object for wave data with public methods that return the data values.

(Unique Video Reference: 13_LD_CUD)

WaveConfig Scriptable Object
12:41

In this video (objectives)…

  1. Create a better way to return the path waypoints from our wave config using a list rather than returning the game object.
  2. Add a new path and test.

After watching (learning outcomes)… Use A Foreach loop to return a list of waypoint transforms.

(Unique Video Reference: 14_LD_CUD)

Using A Foreach Loop
09:11

In this video (objectives)…

  1. Create EnemySpawner.cs to instantiate enemies into our scene.
  2. Craft a coroutine that spawns an enemy then waits for time.
  3. Use a for loop to continue instantiating enemies until the wave is complete.

After watching (learning outcomes)… Use a coroutine and for loop to spawn a wave of enemies.

(Unique Video Reference: 15_LD_CUD)

Spawn Multiple Enemies
14:27
Test Your Understanding - Laser Defender #3
5 questions

In this video (objectives)…

  1. Separate the movement speed and path away from the enemy prefab.
  2. Dig deeper into using paramaters on a public method to set our wave config.

After watching (learning outcomes)… Able to feed the wave config information to the enemy path.

(Unique Video Reference: 16_LD_CUD)

WaveConfig For Path & Speed
09:26

In this video (objectives)…

  1. Coroutine inception! We place a coroutine within a coroutine.
  2. Set up multiple different enemies and multiple different waves, spawning one after another.

After watching (learning outcomes)… Be able to spawn multiple waves one after another.

(Unique Video Reference: 17_LD_CUD)

Spawn Multiple Enemy Waves
10:41

In this video (objectives)…

  1. Turn our Start method into a coroutine.
  2. Create a looping bool.
  3. Create a do while loop that allows us to loop all waves over and over.

After watching (learning outcomes)… Loop all of our enemy waves using a do while loop.

(Unique Video Reference: 18_LD_CUD)

Loop All Enemy Waves
03:59

In this video (objectives)…

  1. Create a class called Damage Dealer that can be placed on whatever game objects we want to use to inflict damage.
  2. Create an enemy class that can handle enemy's health.
  3. Shoot a laser that harms enemy.

After watching (learning outcomes)… Create a class responsible for dealing damage to objects which have health.

(Unique Video Reference: 19_LD_CUD)

Create Damage Dealer Class
12:17

In this video (objectives)…

  1. Create an if statement to destroy enemy if its health goes below zero.
  2. Discuss in more detail the mechanism of creating a method which requires a parameter to be passed into it.

After watching (learning outcomes)…

Destroy our enemies when they reach zero health.

(Unique Video Reference: 20_LD_CUD)

Destroy Enemy
05:59
Test Your Understanding - Laser Defender #4
5 questions

In this video (objectives)…

  1. Instantiate laser and provide it velocity in negative y direction.
  2. Create new laser prefab for the enemy to shoot.

After watching (learning outcomes)…

Make the enemy shoot projectiles at random time intervals.

(Unique Video Reference: 21_LD_CUD)

Make Enemy Shoot
12:37

In this video (objectives)…

  1. Use [Header] attribute to tidy up our variables in the inspector.

  2. Make our enemy laser more visible.

  3. Add collision, health and death for the player.

After watching (learning outcomes)…

Able to destroy the player when its health reaches zero.

(Unique Video Reference: 22_LD_CUD)

Player Life And Death
07:47

In this video (objectives)…

  1. Create layers and apply the correct rules to the layer collision matrix.
  2. Destroy objects which are inflicting damage.
  3. Protect against null within our damage collision event.

After watching (learning outcomes)…

Apply layers and use the collision matrix to ensure only valid objects can influence each other.

(Unique Video Reference: 23_LD_CUD)

Layer Collision Matrix
09:39

In this video (objectives)…

  1. Add a quad and change our background image to default texture type.
  2. Create an apply a script which moves the texture offset each frame.

After watching (learning outcomes)…

Create a scrolling background by incrementing texture offset each frame.

(Unique Video Reference: 24_LD_CUD)

Scrolling Background
09:47

In this video (objectives)…

  1. Create our first particle system and tune it to look like a starfield.
  2. Create a second starfield to show some parallax and different effect.

After watching (learning outcomes)…

Use particle systems to create a starfield.

(Unique Video Reference: 25_LD_CUD)

Introducing Particle Effects
10:41
Test Your Understanding - Laser Defender #5
5 questions

In this video (objectives)…

  1. Use texture sheet animation to create some variation in our particles.
  2. Create a cool explosion effect.
  3. Trigger our particle effect from code when the enemy dies.

After watching (learning outcomes)…

Create an explosion effect which we trigger when enemies are killed.

(Unique Video Reference: 26_LD_CUD)

Explosion Particle Effect
14:12

In this video (objectives)…

  1. Audit our game to see where we need sound effects.
  2. Use PlayClipAtPoint() to trigger sound effects.

After watching (learning outcomes)…

Trigger sound effects for the key moments in our game.

(Unique Video Reference: 27_LD_CUD)

Trigger Sound Effects
17:34

In this video (objectives)… 1. Create all the scenes for our game including their UI and buttons. 2. Create the public methods required to load our various scenes.

After watching (learning outcomes)… Create all our scenes, buttons and loading methods.

(Unique Video Reference: 28_LD_CUD)

Load All The Scenes
19:59

In this video (objectives)…

  1. Add enemy collision damage so we can bonk into enemies and inflict grievous harm on ourselves.
  2. Implement a coroutine as part of player death so that we can delay the loading of the game over scene.

After watching (learning outcomes)…

Delay loading our game over scene by using a coroutine.

(Unique Video Reference: 29_LD_CUD)

Delay For Loading Scene
10:18

In this video (objectives)…

  1. Select some rad music for our game.
  2. Create a music player game object and script.
  3. Implement a singleton pattern so that we have just 1 music player.

After watching (learning outcomes)…

Add music to our game which behaves itself when loading new scenes.

(Unique Video Reference: 30_LD_CUD)

Music Player With Singleton
10:32
Test Your Understanding - Laser Defender #6
5 questions

In this video (objectives)…

  1. Create GameSession.cs to handle our score value and updates.
  2. Create public methods for other scripts to call to influence score.
  3. Display score on Game screen and Game Over screen.

After watching (learning outcomes)…

Display the player's score on the game screen and game over screen.

(Unique Video Reference: 31_LD_CUD)

Add & Display Score
19:57

In this video (objectives)…

  1. Create DisplayHealth.cs and follow a similar path to displaying our score.

After watching (learning outcomes)…

Display the player's health on the screen and reset it after dying.

(Unique Video Reference: 32_LD_CUD)

Display Player Health
06:47

In this video (objectives)…

  1. Go through the full process of adding a new enemy, projectile type and wave path, tuning and tweaking as we go.

After watching (learning outcomes)…

Add a new enemy, projectile and path.

(Unique Video Reference: 33_LD_CUD)

New Enemy & Projectile
10:19

In this video (objectives)…

  1. Using sorting layers to eliminate the problem where projectiles appear on top of the player and enemy.
  2. Create Spinner.cs to spin our enemy bombs as they zing through the air.

After watching (learning outcomes)…

Improve the visual look of our projectiles.

(Unique Video Reference: 34_LD_CUD)

Sorting Layer & Spinning Projectile
05:59

In this video (objectives)…

  1. We do some wrapping up so that the wrap up gets wrapped up.

After watching (learning outcomes)…

You'll be ready and raring for the next section of the course.

(Unique Video Reference: 35_LD_CUD)

Laser Defender Wrap-Up
02:33
+ Glitch Garden
56 lectures 10:18:54

In this video (objectives)… 1. Overview of this section. 2. Demo of the game prototype.

After watching (learning outcomes)… Ready and raring to start this section.

(Unique Video Reference: 1_GL_CUD)

Welcome To Glitch Garden
03:07

In this video (objectives)… 1. Discussion of game overview screen and core features. 2. Demo of the game prototype.

After watching (learning outcomes)… Super clear on the game we are making.

(Unique Video Reference: 2_GL_CUD)

Glitch Garden Game Design
06:38

In this video (objectives)… 1. Get assets from the Glitch game site. 2. Set up a Splash Screen and Start Screen. 3. Implement a level loader that waits then loads the start screen.

After watching (learning outcomes)… Create a splash screen with delayed level loading.

(Unique Video Reference: 3_GL_CUD)

Make A Splash Screen
21:43

In this video (objectives)...

  1. Set up our safe zone for a variety of aspect ratios
  2. Anchor our text to ensure that no matter what aspect ratio is used, our text is still on screen.

After watching (learning outcomes)...

Set up a mobile-friendly game that response gracefully to different shape devices.

(Unique Video Reference: 4_GL_CUD)

Scaling & Aspect Ratios
16:36

In this video (objectives)...

  1. Calculate the size of our safe zone.
  2. Create level scene.
  3. Calculate size of our grids.

After watching (learning outcomes)...

Prep our playspace so we are ready to create background art.

(Unique Video Reference: 5_GL_CUD)

Set Up Background Playspace
09:50

In this video (objectives)...

  1. Change our canvas to world space.
  2. Calculate size of canvas and character.
  3. Add nicer looking background and tree art and play with order in layer to get depth effect.

After watching (learning outcomes)...

Use World space canvas mode to match your UI size with world units.

(Unique Video Reference: 6_GL_CUD)

World Space Canvas Mode
18:36
Test Your Understanding - Glitch Garden #1
5 questions

In this video (objectives)...

  1. Discuss sprite sheet versus bone based animation.
  2. Download assets, import sprite sheet and slice up sprite sheet.

After watching (learning outcomes)...

Able to slice up sprite sheets to use for animation.

(Unique Video Reference: 7_GL_CUD)

Intro To Animation
08:07

In this video (objectives)...

  1. Create a new Game Object with sprite renderer and Animator Component.
  2. Create an animator controller.
  3. Create a new walk animation and hook everything up.

After watching (learning outcomes)...

Able to render an animation in game using Animator Controller and animations.

(Unique Video Reference: 8_GL_CUD)

Animator Controller & Animation
10:20

In this video (objectives)...

  1. Import and slice up a new animation for our character.
  2. Use Grid by Cell size to slice up.
  3. Add new animation and animation transition and fix any issues we might find.

After watching (learning outcomes)...

Transition from one animation state to another once the first animation is finished playing.

(Unique Video Reference: 9_GL_CUD)

Basic Animation Transition
14:29

In this video (objectives)...

  1. Create a new game object with 2 independently moving parts.
  2. Use keyframe animation to animation transform, scale, rotation and colour.

After watching (learning outcomes)...

Animate an object using Keyframe animation.

(Unique Video Reference: 10_GL_CUD)

Intro To Keyframe Animation
16:12

In this video (objectives)...

  1. Create attacker.cs script.
  2. Use transform.Translate and the concept of "left" to move in the -x direction.

After watching (learning outcomes)...

Move Game Objects using transform.Translate.

(Unique Video Reference: 11_GL_CUD)

Move Using transform.Translate
06:46
Test Your Understanding - Glitch Garden #2
5 questions

In this video (objectives)...

  1. Instantiate attackers at intervals within a random range.
  2. Use a coroutine to continue spawning attackers.
  3. Create a spawning bool that allows us to stop the attacker spawning when needed.

After watching (learning outcomes)...

Spawn attackers along their lanes using coroutine.

(Unique Video Reference: 12_GL_CUD)

Spawn Attackers Using Coroutine
10:43

In this video (objectives)...

  1. Add animation event to our timeline.
  2. Create a public method that is called when the timeline reaches that animation event.

After watching (learning outcomes)...

Call methods in our code by adding animation events to our animation timeline.

(Unique Video Reference: 13_GL_CUD)

Adding Animation Events
09:12

In this video (objectives)...

  1. Slice up sprite sheets, create multiple animation, create animator controller.
  2. Add an animation event and some visual flare for when we want the character to shoot.

After watching (learning outcomes)...

Set up the animation, animator controller and event for a defender.

(Unique Video Reference: 14_GL_CUD)

Set Up A Defender Prefab
11:55

In this video (objectives)...

  1. Clarify why we see different function options for animation events.
  2. Create a method for instantiating a project.
  3. Create a gun child and instantiate from the gun position.

After watching (learning outcomes)...

Instantiate a projectile from a child object such as a gun.

(Unique Video Reference: 15_GL_CUD)

Instantiate From Gun Position
12:13

In this video (objectives)...

  1. Compare animating projectile using animator versus code.

After watching (learning outcomes)...

Animate projectile using both animator and code.

(Unique Video Reference: 16_GL_CUD)

Make Projectile Move
07:34
Test Your Understanding - Glitch Garden #3
5 questions

In this video (objectives)...

  1. Create a list of requirements for our health / damage system.

After watching (learning outcomes)...

Confident in auditing your project to figure out requirements for our health system.

(Unique Video Reference: 17_GL_CUD)

Health & Hurting Attackers
04:51

In this video (objectives)...

  1. Create a trigger event with correct collider and rigid bodies.
  2. Decrease health by calling a public method of DealDamage() and passing in damage amount.
  3. Snuff out the attacker when its health reaches zero.

After watching (learning outcomes)...

Implement system where projectiles do damage and kill attackers.

(Unique Video Reference: 18_GL_CUD)

Implementing Health & Damage
10:45

In this video (objectives)...

  1. Destroy projectiles when they hit targets.
  2. Instantiate particle effect when attacker is destroyed. Then destroy the particle effect itself.

After watching (learning outcomes)...

Instantiate and then destroy particle effects.

(Unique Video Reference: 19_GL_CUD)

Tidy Up & Death FX
11:38

In this video (objectives)...

  1. Add a core game area with collider and SpawnDefender script.
  2. Instantiate a defender when the mouse is clicked.

After watching (learning outcomes)...

Instantiate a defender at the (0,0) point when the player clicks the mouse.

(Unique Video Reference: 20_GL_CUD)

Click To Spawn Defenders
07:13

In this video (objectives)...

  1. Use ScreenToWorldPoint to identify where the mouse is clicked in relation to our play space.
  2. Investigate the relationship between methods with return types and methods with arguments.

After watching (learning outcomes)...

Instantiate a defender where the mouse pointer is currently located.

(Unique Video Reference: 21_GL_CUD)

Spawn At Mouse Position
06:16
Test Your Understanding - Glitch Garden #4
5 questions

In this video (objectives)...

  1. Use RoundToInt() to round our decimal places to whole numbers.
  2. Create a SnapToGrid() method which can then be used to return our final position for defenders.

After watching (learning outcomes)...

Snap our defenders to the grid using RoundToInt().

(Unique Video Reference: 22_GL_CUD)

Snap Defenders To Grid
07:48

In this video (objectives)...

  1. Create background and icons for our buttons.
  2. Implement a mouse over event that changes a button from greyed out to white.
  3. Use a foreach loop to cycle through all other buttons to make them black.

After watching (learning outcomes)...

Implement a button selection UI.

(Unique Video Reference: 23_GL_CUD)

Create Defender Selection UI
14:42

In this video (objectives)...

  1. Assign a defender prefab to each button click.
  2. Pass in the button's defender prefab by using a public method on DefenderSpawner.

After watching (learning outcomes)...

Place the appropriate defender prefab in the world when the corresponding button is clicked.

(Unique Video Reference: 24_GL_CUD)

Set & Place Selected Defender
10:28

In this video (objectives)...

  1. Create StarDisplay.cs and create a variable to store current resources.
  2. Use ToString() to convert our integer into a string to display in our text field on screen.
  3. Create public methods for future use that will allow us to increase and decrease stars.

After watching (learning outcomes)...

Create a resource system for adding and spending resources.

(Unique Video Reference: 25_GL_CUD)

Start Our Resource System
12:40

In this video (objectives)...

  1. Explore the relationship between parent game objects, their children and how that impacts animation.
  2. Set ourselves the challenge to tidy up our animations.

After watching (learning outcomes)...

Be clear on how the parent-child relationship impacts animation.

(Unique Video Reference: 26_GL_CUD)

Parent, Child & Animation
13:49
Test Your Understanding - Glitch Garden #5
5 questions

In this video (objectives)...

  1. Set up Lizard and Cactus with proper parent-child relationship.
  2. Adding Animator, animation clips, animation events.

After watching (learning outcomes)...

Feeling confident with how the animation system works.

(Unique Video Reference: 27_GL_CUD)

Completing Animation Challenge
11:24

In this video (objectives)...

  1. Add anim event which calls a public method which also calls another public method.
  2. Create a nifty animation to visual the resource being added.

After watching (learning outcomes)...

Call a public method with our animation event which adds resources.

(Unique Video Reference: 28_GL_CUD)

Add Resources As Anim Event
10:40

In this video (objectives)...

  1. Create a method that returns a bool for whether we have enough resources to buy a defender.
  2. On mouse click, spawn a defender and also reduce our total resources by the cost of the defender.

After watching (learning outcomes)...

Tie everything together so that clicking to place defenders costs resources.

(Unique Video Reference: 29_GL_CUD)

Defenders Costing Resources
08:37

In this video (objectives)...

  1. Locate where animation events are calling specific functions using the Find and Replace tool in Visual Studio.

After watching (learning outcomes)...

Easily find where functions are being called in animation events.

(Unique Video Reference: 30_GL_CUD)

Searching For Animation Events
04:13

In this video (objectives)...

  1. Instatiate our attacker as an Attacker game object.
  2. Change the instantiated object's parent to be the object which spawned it.

After watching (learning outcomes)...

Change the parent of an instantiated object.

(Unique Video Reference: 31_GL_CUD)

Instantiate As Child
04:27
Test Your Understanding - Glitch Garden #6
5 questions

In this video (objectives)...

  1. Create an array to store each of the Attacker Spawners.
  2. Create a mechanism to shoot or not shoot based upon whether we have an attacker in our lane.

After watching (learning outcomes)...

Detect if an attacker is spawned by looking at child count of spawner in our lane.

(Unique Video Reference: 32_GL_CUD)

Attacker In My Lane
15:05

In this video (objectives)...

  1. Set up our animator controller with idle and attack animations.
  2. Create an animation parameter that we can use as a transition condition.
  3. Change the animation state in our shooter script.

After watching (learning outcomes)...

Change a character's animation state in code.

(Unique Video Reference: 33_GL_CUD)

Change Animation State
13:22

In this video (objectives)...

  1. Prevent multiple defender placement per square.
  2. Create a new projectile - the axe.

After watching (learning outcomes)...

Tidy up our project including preventing multiple defenders being placed on one square. And, you know, a few other nifty things.

(Unique Video Reference: 34_GL_CUD)

One Defender Per Square
11:55

In this video (objectives)...

  1. Go through the laundry list of steps to create a gnome character so that it animates, shoots, transitions and can be purchased and placed in the game.

After watching (learning outcomes)...

Reinforce all the steps in creating a character by creating a new shooting character.

(Unique Video Reference: 35_GL_CUD)

Creating Gnome Defender
18:10

In this video (objectives)...

  1. Create a non-shooting defender that will block attackers.

After watching (learning outcomes)...

Enjoy all the thrills of racing Rick to create a new defender type.

(Unique Video Reference: 36_GL_CUD)

Creating Gravestone Defender Race
07:13
Test Your Understanding - Glitch Garden #7
5 questions

In this video (objectives)...

  1. Create a new attack animation for our Lizard.
  2. Create attack method and collision event to change animation state.

After watching (learning outcomes)...

Transition our attacker's animation state to attacking when they collide with a defender.

(Unique Video Reference: 37_GL_CUD)

Make Our Attackers Attack
14:52

In this video (objectives)...

  1. Create StrikeCurrentTarget() method that can be called as animation event.
  2. Update animation to continue walking after target is killed.

After watching (learning outcomes)...

Make our attackers capable of harming defenders.

(Unique Video Reference: 38_GL_CUD)

Attackers Striking Target
08:16

In this video (objectives)...

  1. Add a fox with all its bits and pieces.
  2. Create a fox component which will have different behaviour to the Lizard.
  3. Create a Gravestone class to give our Gravestone some behaviour.

After watching (learning outcomes)...

Create a fox with unique Attacker behaviour.

(Unique Video Reference: 39_GL_CUD)

Fantastic Mr Fox
21:01

In this video (objectives)...

  1. Create an array for spawning attackers.

After watching (learning outcomes)...

Create, you know, an array... for spawning attackers.

(Unique Video Reference: 40_GL_CUD)

Array For Spawning Attackers
07:09

In this video (objectives)...

  1. Create player lives and a way to decrease those lives when an attack reaches our base.
  2. Create a placeholder You Lose screen which we load when lives reaches zero.

After watching (learning outcomes)...

Create a system for the player to lose and load a Lose Screen.

(Unique Video Reference: 41_GL_CUD)

How To Be A Loser
19:51
Test Your Understanding - Glitch Garden #8
5 questions

In this video (objectives)...

  1. Add a slider to represent time left in the level.
  2. Animate the handle for the slider
  3. Print a statement to console when the slider reaches its destination.

After watching (learning outcomes)...

Create an animated level timer.

(Unique Video Reference: 42_GL_CUD)

Create A Level Timer
12:30

In this video (objectives)...

  1. Create a mechanism for monitoring when all attackers are destroyed.
  2. Create functionality to take action when there are no attackers and timer has finished.

After watching (learning outcomes)...

Create a game controller that coordinates the victory conditions for a level.

(Unique Video Reference: 43_GL_CUD)

Create A Level Controller
14:55

In this video (objectives)...

  1. Create Level Complete text which we can toggle on and off.
  2. Add SFX and level loading to a coroutine that is triggered when the level is won.

After watching (learning outcomes)...

Bring joy and happiness to our player when they complete a level.

(Unique Video Reference: 44_GL_CUD)

A Nicer Win Experience
12:11

In this video (objectives)...

  1. Add a You Lose popup which gives the player options to restart the level or quit to main menu.
  2. Stop the game speed when the popup is on screen and return to normal speed when the game resumes.

After watching (learning outcomes)...

Bring joy and happiness to our player when they crash and burn.

(Unique Video Reference: 45_GL_CUD)

A Nicer Lose Experience
18:16

In this video (objectives)...

  1. Why is the null reference exception happening.
  2. Fixing our current errors by preventing code from executing if null.

After watching (learning outcomes)...

Fix our null reference exceptions.

(Unique Video Reference: 46_GL_CUD)

Handling Null Reference Exceptions
07:51
Test Your Understanding - Glitch Garden #9
5 questions

In this video (objectives)...

  1. Add the images, sliders and buttons for our Options screen.

After watching (learning outcomes)...

Add the images, sliders and buttons for our Options screen.

(Unique Video Reference: 47_GL_CUD)

Start Our Options Screen
10:28

In this video (objectives)...

  1. Create a PlayerPrefsController wrapper class to store all of our PlayerPrefs keys.
  2. Create a public setter and public getter method to set our master volume.

After watching (learning outcomes)...

Create the mechanism for setting and getting volume.

(Unique Video Reference: 48_GL_CUD)

PlayerPrefs To Save Settings
13:24

In this video (objectives)...

  1. Use our PlayerPrefs functionality to connect the volume slider level with the saved volume level.
  2. Change level on the fly, use defaults button and save on exit for volume levels.

After watching (learning outcomes)...

Use PlayerPrefs and UI sliders to alter and save music volume levels.

(Unique Video Reference: 49_GL_CUD)

Set & Save Music Volume
14:39

In this video (objectives)...

  1. Implement our PlayPrefs setting and getting for difficulty.
  2. Audit our gameplay and design a place where we can change difficulty.

After watching (learning outcomes)...

Use PlayerPrefs and UI sliders to alter the difficulty of gameplay.

(Unique Video Reference: 50_GL_CUD)

Add Difficulty Levels
14:50

In this video (objectives)...

  1. Problem - if we have our lives set to greater than 1 we have a bug where if we lose some life and then the timer runs out, the game does not finish.

After watching (learning outcomes)...

Go bug hunting and smashing!

(Unique Video Reference: 51_GL_CUD)

Quick Bug Fix - Win Condition
03:29
Test Your Understanding - Glitch Garden #10
5 questions

In this video (objectives)...

  1. Parent our defenders and projectiles to a parent object to keep our hierarchy tidy.
  2. Check if game object already exists, if not then create a new one.

After watching (learning outcomes)...

Keep our hierarchy tidy by childing game objects when instantiated.

(Unique Video Reference: 52_GL_CUD)

Tidy Hierarchy = Tidy Mind
08:21

In this video (objectives)...

  1. Create a tuning matrix for our defenders and attackers and implement the values back into our build.

After watching (learning outcomes)...

Tune our defenders and attackers.

(Unique Video Reference: 53_GL_CUD)

Tuning Our Core Gameplay
06:55

In this video (objectives)...

  1. Add a canvas to our button game object.
  2. Add text, scale it, then use GetComponentInChildren<> to access the text field and update it from the defender prefab.

After watching (learning outcomes)...

Implement dynamic UI which shows the player the cost of defenders.

(Unique Video Reference: 54_GL_CUD)

Add Star Cost To Button
05:42

In this video (objectives)...

  1. Create a blank level template that we can build our levels upon.
  2. Discuss game design for making interesting progression.
  3. Big challenge - make your game!

After watching (learning outcomes)...

Understand how to create level progression for our player.

(Unique Video Reference: 55_GL_CUD)

Creating Level Progression
12:49
Test Your Understanding - Glitch Garden #11
4 questions

In this video (objectives)...

  1. Final words for this section.
  2. Also, repo has been updated with Rick's 5 levels.

After watching (learning outcomes)...

Wrap up and update of repo with Rick's 5 levels.

(Unique Video Reference: 56_GL_CUD)

Glitch Garden Wrap Up
02:08
+ Updates And Important Messages
2 lectures 03:06

You've reached the end of the current 2018 remaster. In this video we discuss your options for continuing to push forward.

Message About New Content
02:28

This lecture explains how to get access to the original Unity 4 / Unity 5 content for this course.

Coupon For Original Course Content (Created In Unity 4 / 5)
00:38
+ TileVania - 2D Tilemap Platformer
35 lectures 05:38:30

Ben and Rick explain this section of the course, where it came from and what version of Unity you need to use.

Where This Section Came From
05:39
New Section - TileVania!
00:55

In this video (objectives)…

  1. We'll be taking on Tilemap.
  2. A note about where this section fits within the course.

After watching (learning outcomes)…

Explain to a fellow student roughly what we're building, and why this is awesome stuff to know.

(Unique Video Reference: 1_TV_CUD)

Welcome To TileVania
05:37

In this video (objectives)…

  1. Be clear on the core game design for this section.

  2. Understand the creative options that each student has for making this game their own.

After watching (learning outcomes)…

Explain to a fellow student the design of what we'll be building and to start exploring options for creativity.

(Unique Video Reference: 2_TV_CUD)

TileVania Game Design
05:37

In this video (objectives)…

  1. Import sprite sheets to be used for our platformer.
  2. Use the automatic or slice-by-grid options in Unity to slice our sprite sheet into individual sprite images for our game.

After watching (learning outcomes)…

Be capable of slicing sprite sheets to make individual assets.

(Unique Video Reference: 3_TV_CUD)

Slicing Sprite Sheets
06:21

In this video (objectives)…

  1. Create multiple tile map layers.
  2. Build multiple tile palettes.
  3. Paint a simple level.

After watching (learning outcomes)…

Able to import a sprite sheet, slice it up, create tile palettes and paint a simple level layout.

(Unique Video Reference: 4_TV_CUD)

Intro To Unity Tilemap
14:42

In this video (objectives)…

  1. Download the Unity 2D asset.
  2. Create rule tile rules.
  3. Paint additional platforms using rule tile.

After watching (learning outcomes)…

Create a rule tile and set up the logic for its rules.

(Unique Video Reference: 5_TV_CUD)

Unity Rule Tiles
12:29

In this video (objectives)…

  1. Create player idle animation clip from sprite sheet.
  2. Add animation to Animator Controller.
  3. Add Sprite Renderer and Animator to Player character.

After watching (learning outcomes)…

Created 4 frames of 2d character idle animation which plays automatically when the game plays.

(Unique Video Reference: 6_TV_CUD)

Create Player Idle Animation
10:14

In this video (objectives)…

  1. Create animation clips for run and climb.
  2. Add animation states for each animation clip type.
  3. Add bool parameters to switch between animation states.
  4. Add transitions between the animation states.

After watching (learning outcomes)…

Able to construct an animation state machine with transitions and triggers.

(Unique Video Reference: 7_TV_CUD)

Animation States & Transitions
08:21
Test Your Understanding - TileVania #1
5 questions

In this video (objectives)…

  1. Add RigidBody and collision to the player.
  2. Set up composite collision on our environment.

After watching (learning outcomes)…

Drop our player from a height and have it land on the platform.

(Unique Video Reference: 8_TV_CUD)

Implement 2D Collision
09:40

In this video (objectives)…

  1. Context for the gameplay functionality we are about to create.
  2. The best way to learn and become better at being a programmer.

After watching (learning outcomes)…

Understand how to get even more value from this course in terms of your learning and skills.

(Unique Video Reference: 9_TV_CUD)

Maximize Learning Value
02:49

In this video (objectives)…

  1. Create Player class.
  2. Import CrossPlatformInput.
  3. Move the player's RigidBody horizontally.

After watching (learning outcomes)…

Move the player horizontally using CrossPlatformInput.

(Unique Video Reference: 10_TV_CUD)

Move Player Horizontally
11:52

In this video (objectives)…

  1. Introduce Mathf.Abs and Mathf.Sign.
  2. Pseudocode for flipping character sprite.
  3. Flip character sprite based upon player having horizontal velocity.

After watching (learning outcomes)…

Flip the player character's sprite whenever the character has horizontal velocity.

(Unique Video Reference: 11_TV_CUD)

Flip Character Sprite
05:46

In this video (objectives)…

  1. We discuss the difference between caching and calculating.
  2. Why did we set up the flip sprite the way we did rather than starting with an isFacingRight bool.
  3. Ben makes a bad joke at the end of the video.

After watching (learning outcomes)…

Greater understanding of the cache versus calculate options we have.

(Unique Video Reference: 11b_TV_CUD)

Instructor Hangout 6.1
13:33

In this video (objectives)…

  1. Use code to set the animation transition bool.
  2. Make the player transition to the running animation when the running transition condition is called in our script.

After watching (learning outcomes)…

Make the player's run animation state be triggered from code.

(Unique Video Reference: 12_TV_CUD)

Animation State In Code
07:28
Test Your Understanding - TileVania #2
5 questions

In this video (objectives)…

  1. Revise how velocity is being applied to our player's RigidBody.
  2. Add a positive y velocity to cause the player to jump.
  3. Tune the global gravity and player jump speed to give the right feel for our game.

After watching (learning outcomes)…

Make your player jump and fall in a way which feels good to play.

(Unique Video Reference: 13_TV_CUD)

Jumpy Jumpy
12:14

In this video (objectives)…

  1. Review how layers work as a way to apply the same functionality to many GameObjects.
  2. Implement IsTouchingLayers for our collision check.
  3. Only allow the player to jump if he is touching the ground.

After watching (learning outcomes)…

Make the player jump only when touching the ground layer.

(Unique Video Reference: 14_TV_CUD)

Jump if IsTouchingLayers
06:26

In this video (objectives)…

  1. Create ladder tile.
  2. Set up the climb tilemap, sorting layer and collision layer.
  3. Transition to climb state if player is touching ladder.
  4. Move player's y velocity when input is received.

After watching (learning outcomes)…

Move the player up and down on a ladder with appropriate climbing animation state.

(Unique Video Reference: 15_TV_CUD)

Climb Ladder
13:50

In this video (objectives)…

  1. Fix bug where player does not transition out of climb state.
  2. Change gravity while on ladder to stop player sliding back down.

After watching (learning outcomes)…

Able to stop player sliding on ladder.

(Unique Video Reference: 16_TV_CUD)

Climb Ladder Tweaks
06:28

In this video (objectives)…

  1. Review the fundamental differences between the camera types.
  2. Explain the reasons why we might use one camera over the other.

After watching (learning outcomes)…

Understand the differences in perspective and orthographic cameras.

(Unique Video Reference: 17_TV_CUD)

Perspective Vs Orthographic Cameras
06:24

In this video (objectives)…

  1. Import and set up Cinemachine.
  2. Create a Cinemachine brain and Cinemachine virtual camera.
  3. Tune the dead zone, dampening and look ahead of our camera.

After watching (learning outcomes)…

Be skilled at setting up a 2D follow camera using Unity's Cinemachine.

(Unique Video Reference: 18_TV_CUD)

Cinemachine Follow Camera
11:10

In this video (objectives)…

  1. Create physics layers for Player and Background and alter the collision matrix so that the correct things can collide with one another.
  2. Create a bounding box for the Cinemachine confiner.
  3. Tune level and camera so that the player can only see what we want them to see.

After watching (learning outcomes)…

Implement the Cinemachine confiner extension.

(Unique Video Reference: 19_TV_CUD)

Cinemachine Confiner Extension
08:58

In this video (objectives)…

  1. Add a state-driven camera to the scene.
  2. Link the player animator states to the camera states by creating additional cameras.
  3. Adjust the blending between cameras.
  4. Experiment with camera shake.

After watching (learning outcomes)…

Implement state-driven cameras using Unity Cinemachine.

(Unique Video Reference: 20_TV_CUD)

State-Driven Cameras
13:45

In this video (objectives)…

  1. Add physics material to stop sticking to wall.
  2. Add additional collider to represent player's feet.
  3. Only allow feet to determine if player is touching the ground.

After watching (learning outcomes)…

Prevent funky wall behaviour.

(Unique Video Reference: 21_TV_CUD)

Prevent Wall Jump
08:16

In this video (objectives)…

  1. Import enemy sprite and set up required components.
  2. Script a way for the enemy to flip when it reaches the end of a platform.

After watching (learning outcomes)…

Create an enemy that moves along platforms, turning when it reaches the end.

(Unique Video Reference: 22_TV_CUD)

Making Enemies
17:50

In this video (objectives)…

  1. Trigger player death when player collides with enemy.
  2. Disable player control when player is in death state.
  3. Implement some kind of dramatic death reaction.
  4. Change player animation state when dying.

After watching (learning outcomes)…

Create vulnerability in the player by triggering a dramatic death.

(Unique Video Reference: 23_TV_CUD)

Player Death
15:19

In this video (objectives)…

  1. Import some spikes.
  2. Set up a "Hazards" tilemap.
  3. Build the behaviour of the "Hazards" tilemap so that it harms the player.

After watching (learning outcomes)…

Create hazards in your levels which harm the player.

(Unique Video Reference: 24_TV_CUD)

Adding Hazards
09:38

In this video (objectives)…

  1. Look at the method of laying out multiple scenes in the hierarchy.
  2. Discuss level flow.
  3. Create our first 3 levels for the player.

After watching (learning outcomes)…

Create the flow for the first 3 levels for the game.

(Unique Video Reference: 25_TV_CUD)

Level Flow Layout
13:29

In this video (objectives)…

  1. Create a level exit portal sprite.
  2. Create coroutine for loading next level.
  3. Set up build scene indexing.
  4. Load next scene when player enters portal.

After watching (learning outcomes)…

Load the next scene when the player enters a portal.

(Unique Video Reference: 26_TV_CUD)

Level Exit Portal
13:23

In this video (objectives)…

  1. Add a start game button.
  2. Add a success scene.
  3. Add a replay game button.

After watching (learning outcomes)…

Be able to create start and success screens with corresponding buttons.

(Unique Video Reference: 27_TV_CUD)

Start & Success Screens
11:21

In this video (objectives)…

  1. Create singleton for Game Session script.
  2. Determine whether player has any lives remaining.
  3. Reload current level or reset game to main menu if player has no lives.
  4. Call the public method that processes the player death within Game Session class.

After watching (learning outcomes)…

Elegantly process the player death, loading and reseting of game.

(Unique Video Reference: 28_TV_CUD)

Game Session Controller
12:08

In this video (objectives)…

  1. Import and animate coins.
  2. Create mechanism where the coins are picked up and destroyed.

After watching (learning outcomes)…

Start the process of creating a coin pickup which destroys when player touches it.

(Unique Video Reference: 29_TV_CUD)

Coin Pickups
07:27

In this video (objectives)…

  1. Examine the different ways to ensure SFX is not destroyed when game object is destroyed.
  2. Implement PlayClipAtPoint() and reposition so that it is next to the camera.

After watching (learning outcomes)…

Trigger a SFX that persists even when the Game Object which triggered it is destroyed.

(Unique Video Reference: 30_TV_CUD)

Persistent SFX
07:29

In this video (objectives)…

  1. Create UI text for lives and for score.
  2. Show the lives and score text based upon the starting values.
  3. Update lives and score when player dies or picks up coins.
  4. Apply the singleton pattern to lives and score so that they persist when player dies.

After watching (learning outcomes)…

Display and update score and lives on the UI and persist their values when player dies and respawns.

(Unique Video Reference: 31_TV_CUD)

Persistent Score & Lives
13:31

In this video (objectives)…

  1. Create a scene persist script that uses a singleton pattern to not destroy any children objects (such as pickups).
  2. Within our scene persist, check if the current build index differs to starting build index.
  3. Destroy scene persist object if we move on to the next level.

After watching (learning outcomes)…

Create a system to allow objects to remember their state within a scene.

(Unique Video Reference: 32_TV_CUD)

Remembering Pickups
08:21
+ Continuing Your GameDev Journey
8 lectures 27:13

Ben briefly points you in the right direction for loading level progress bars.

Show Level Load Progress Bar
02:13

Ben challenges you to make and share a health bar prefab that can be used on at least Block Breaker, Laser Defender and Glitch Garden. Practice working together guys and girls.

Thanks to Okily for the suggestion.

Challenge: Make Health Bar Prefab
04:38

An interview between Ben Tristem and musician and 3D artist Michael Bridges about creating dynamic music in your games.

About Dynamic Music
12:13
Our Facebook Group
01:34
Retired Content Archive
00:08
THE END
01:09

Thank you to all the amazing people who backed us during our Kickstarter!

Credits
04:48

Congratulations on completing the course, that's no mean feat! So what now?

  • If you'd like more Unity practice then check out the Complete Unity Developer 2.0 course.

  • Build on your knowledge with more intermediate content, then head over to our Unity RPG course (now being remastered in the latest Unity version).

  • Or, if you're looking to learn a new C family language then our Unreal Engine Developer course in C++ could be for you.

Look forward to seeing you there soon.

BONUS LECTURE: Our Other Courses
00:30
Requirements
  • Mac or PC capable of running Unity 2018.
  • Optional: A free download of Unity 5 to review the original content of the course.
  • A passion and willingness to learn how to code.
Description

November 2018 - We have completely updated the first 6 projects to Unity 2018! The remaining projects are in the process of being replaced with new videos on a daily basis.

This course started as a runaway success on Kickstarter and has gone on to become the most popular and most watched Unity game development course on Udemy. The course has full English closed-captions throughout.

Learn how to create video games using Unity, the world-leading free-to-use game development tool. We start super simple so you need no prior experience of Unity or coding! With our online tutorials, you'll be amazed what you can achieve right from the first moment you start the course. 

Benefit from our world-class support from both other students, and the GameDevtv team who are regularly engaged in the forums and Q&A section. Go on to build several games including:

  • Laser Defender: A Top-Down Space Shooter with enemies to shoot and dodge;

  • Glitch Garden: A Tower Defense game with different tower types and enemy types, and a basic resources system;

  • TileVania: A fast-paced classic Side-Scrolling Platformer using Unity's Tilemap tool;

  • Block Breaker: A basic "Breakout" style game which introduces Unity's built in physics engine.

Prefer to start with 3D games? Check-out our sister course, the Complete C# Unity Developer 3D. Already have some Unity knowledge, and want something more challenging? Check-out our epic RPG Core Combat Creator. More interested in creating 3D models from scratch? Start with our Complete Blender Creator course. Our green leaf logo is a symbol of passion and quality.

You will have access to a course forum where you can discuss topics on a course-wide basis, or down to the individual video. Our thriving discussion forum will help you learn and share ideas with other students. Check out our reviews to see how people love this feature. 

Unity 2018 Remaster: This well-loved and highly-tuned course is taught initially in Unity 4 and then in following sections in Unity 5. This content is still incredibly valuable and relevant. As part of our ongoing commitment to our students, we are remastering the entire course in Unity 2018 to show you the newer tools that Unity has to offer.

The course is project-based as we believe this is the best way to learn Unity and C#. You will not just be learning dry programming concepts, but applying them immediately to real indie games as you go. All the project files will be included, as well as additional references and resources - you'll never get stuck. There are talking-head videos, powerful diagrams, quality screencasts and more. 

Oh, and it's just bigger and better than other Unity courses you will find online. See the course length and the reviews. 

For each demo game you build you will follow this process... 

  • Be challenged to build the entire game yourself.

  • Be shown step-by step how to build it.

  • Be challenged to apply, and re-apply your knowledge regularly.

You will get full lifetime access for a single one-off fee. The creators are qualified and experienced coders and avid gamers, so are able to explain complex concepts clearly, as well as entertain along the way. 

You will learn C#, and in turn build a solid foundation for Object Oriented Programming. By the end of the course you'll be very confident in the basics of coding and game development, and hungry to learn more. 

What this course DOESN'T cover... 

Whereas this course is already huge, we can't possibly cover everything in that time. Here are some things we will not be covering... 

  • Performance optimization.

  • Editor plugins or modifications.

  • Physics engine modification*

* Separate mini-course to cover these this now available. 

Anyone who wants to learn to create games: Unity is a fantastic platform which enables you to make production-quality games. Furthermore these games can be created for Windows, MacOS, iOS, Android and Web from a single source!

If you're a complete beginner, we'll teach you all the coding and game design principles you'll need. If you're an artist, we'll teach you to bring your assets to life. If you're a coder, we'll teach you game design principles. 

Note: access to this course comes with an optional, free community site where you can share games and art assets, as well as connect with other students.

Dive in and learn Unity now, you won't be disappointed!

Who this course is for:
  • Competent and confident with using a computer.
  • Artists who want to learn to bring their assets into games.
  • Some programming experience helpful, but not required.
  • Complete beginners who are willing to work hard.
  • Developers who want to re-skill across to game development.