Complete C# Unity Developer 2D: Learn to Code Making Games
- Allemand [Générés automatiquement]
- Espagnol [Générés automatiquement]
- Indonésien [Générés automatiquement]
- Italien [Générés automatiquement]
- Portugais [Générés automatiquement]
- Thaï [Générés automatiquement]
- Turc [Générés automatiquement]
- Vidéo à la demande de 35 heures
- 3Â articles
- 27 ressources téléchargeables
- Accès illimité
- Accès sur mobiles et TV
- Certificat de fin de formation
Offrez aux membres de votre équipe un accès à plus de 3 500 des meilleurs cours Udemy, à tout moment, où qu'ils soient.
Essayez Udemy for Business- 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 from this course 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.
In this video (objectives)…
- We make learning Unity & C# easy
- Introducing Ben & Rick
- What the course covers
- 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)
In this video (objectives)…
Navigate to Unity's download page
Download Unity Hub
Select the latest version of Unity to download
Select your download options from the list
After watching (learning outcomes)… Get Unity and Visual Studio downloading.
(Unique Video Reference: 2_IN_CUD)
In this video (objectives)…
- Create a new Unity project
- Create a .cs script
- Add a simple print statement
- Attach script to camera game object
- 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)
In this video (objectives)…
- We use PC mostly throughout the course
- General differences you'll see on Mac versus PC
- 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)
In this video (objectives)…
- Options for getting help & support
- Using the Udemy Q&A section
- GameDev.tv community forum
- Discord chat server
- Facebook community group
- Google slides and close captions.
After watching (learning outcomes)… Exactly how and where to get help and support.
(Unique Video Reference: 5_IN_CUD)
In this video (objectives)…
- Understand the game flow for the simple game we are making.
- Use Debug.Log() to print our welcome to the player
- 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)
In this video (objectives)…
- Discuss that variables are like boxes which store data.
- Create an integer variable to store our maximum guess value.
- 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)
In this video (objectives)…
- Problem solving discussion using Unity docs.
- Use Input.GetKeyDown() to recognise when a key is pressed.
- Use the KeyCode keyword to determine which key is pressed.
- Discuss white space, code blocks and bracketing.
- Introduce commenting.
After watching (learning outcomes)… Understand how to recognise player input using Input.GetKeyDown().
(Unique Video Reference: 4_NC_CUD)
In this video (objectives)…
- Consider the problem we have of multiple key presses being possible.
- Discuss the difference between if, else if & else conditional statements.
- 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)
In this video (objectives)…
- Discuss how C# is organised / grouped.
- Address the problem of scope and with our variables not being accessible.
- 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)
In this video (objectives)…
- Implement the simple calculation to guess the midpoint of our min and max.
- Fix an issue with the maximum guess not reaching 1000.
- Tidy up our text.
- 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)
In this video (objectives)…
- Create a new function for StartGame().
- Create a new function for NextGuess().
- Discussion encapsulating as it relates to C#.
- Finish our game.
After watching (learning outcomes)…
Create your first functions and finish off our simple game.
(Unique Video Reference: 8_NC_CUD)
In this video (objectives)…
- Great work for completing this section.
- You're not supposed to understand everything yet.
- 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)
In this video (objectives)…
- Overview of this section
- Flex your designer muscles if you're interested
- We'll be using Scriptable Objects to make a Text Adventure Game
- Let's get started!
After watching (learning outcomes)… Ready and raring to start this section.
(Unique Video Reference: 1_TX_CUD)
In this video (objectives)…
- Overview of our game design, core mechanic and theme
- Some high level design insight on how we are creating a game for other people
- 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)
In this video (objectives)…
- Introduction to Unity's main windows - Hierarchy, Scene, Game, Project, Inspector.
- Create simple square and circle sprites.
- Compare the difference between 2D and 3D scene view.
- 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)
In this video (objectives)…
- Introduction to Unity canvas for UI.
- Initial discussion of parent-child relationship for Game Objects in hierarchy.
- Add text elements.
- Edit text, resize elements.
- 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)
In this video (objectives)…
- Deeper understanding of how Unity Game Objects, Components and Properties relate to one another.
- Introduction to [SerializeField].
- Creating a reference to a text field.
- 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)
In this video (objectives)…
- What are states and what is a state machine.
- Creating decision points for the player.
- 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)
In this video (objectives)…
- What is a scriptable object and why use it?
- Use CreateAssetMenu so that we have a context menu to add scriptable objects.
- Create our first scriptable object.
After watching (learning outcomes)…
Create our first scriptable object.
(Unique Video Reference: 7_TX_CUD)
In this video (objectives)…
Reminder of how we are using state as a variable.
Reminder of what methods are.
Example of return types in methods.
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)
In this video (objectives)…
- Public versus private access modifier.
- What are return types for methods.
- 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)
In this video (objectives)…
- What is an array and how are arrays created.
- Returning an array type variable from within a public method.
- Assigning array elements in Unity by dragging and dropping into the inspector.
- 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)
In this video (objectives)…
- Create a small game loop by having each state lead to another state.
- Create a method to respond to player's key input.
- 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)
In this video (objectives)…
- Using Unity's Package Manager to install TextMesh Pro.
- Font a font online to bring into your project.
- Create font atlas using the font you found and TextMesh Pro.
- Create a TextMesh Pro text for your title.
- 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)
In this video (objectives)…
- Further discussion regarding state as a class and state as a variable.
- Further discussion on how scriptable objects work, where they are saving and what is required.
- Code formating - where it matters and where it doesn't.
- 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)
In this video (objectives)…
- Find a bug in our game which causes our standalone PC build to break.
- Figure out why the game is breaking because of the bug.
- 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)
In this video (objectives)…
- Adjust our screen aspect ratio and scaling.
- Create a WebGL build.
- Zip our build foler and upload to sharemygame.com.
- Celebrate, you've published a game!
After watching (learning outcomes)…
Create a WebGL build and publish online.
(Unique Video Reference: 15_TX_CUD)
In this video (objectives)…
- Overview of this section.
- Focus on UI - adding buttons, text, images.
- Linking our button functionality with our code.
- Creating scenes and loading scenes.
After watching (learning outcomes)… Ready and raring to start this section.
(Unique Video Reference: 1_UI_CUD)
In this video (objectives)…
- Reminder of the core guessing game mechanic.
- Presentation of our game flow through the main scenes.
- 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)
In this video (objectives)…
- Add a button to our canvas.
- Add an image to our canvas.
- 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)
In this video (objectives)…
- Add mouse over and click effect to our button.
- Improve font quality using TextMesh Pro text for the button.
- 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)
In this video (objectives)…
- Create public method to load the next scene.
- Add build index to scenes.
- 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)
In this video (objectives)…
- Examine our "spec" for the game screen.
- Implement all the buttons, text, images required for the game screen.
- 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)
In this video (objectives)…
- Import our NumberWizard.cs code from previous section of the course.
- Assess what needs to be refactored / changed in order to have our code work with our user interface.
- 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)
In this video (objectives)…
- Hook up our buttons to the previously created methods.
- Link our UI text field to our code.
- 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)
In this video (objectives)…
- Use Random.Range() for our guess to introduce randomness.
- Refactor our code to only have 1 place of calculating guess.
- 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)
In this video (objectives)…
- Use Application.Quit() to create a quit button for our game.
- Add final text, colours and tweaks to the game.
- Build to PC, Mac, Linux Standalone.
After watching (learning outcomes)… Create a final PC / Mac / Linux Standalone build.
(Unique Video Reference: 11_UI_CUD)
In this video (objectives)…
- Overview of this section.
- Focus on Unity's physics engine and collisions.
- 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)
In this video (objectives)…
- Export scenes and SceneLoader.cs from previous project.
- Import package into our new project.
- 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)
In this video (objectives)…
- Add a Rigidbody2D to the ball so that it has gravity influencing it.
- 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)
In this video (objectives)…
- Stop our ball rotating by freezing Z axis rotation on our Rigidbody.
- Create a lose collider.
- Discuss difference between trigger and collider and examine the event matrix for collision events.
- 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)
In this video (objectives)…
- Find the position of the mouse on the screen.
- Convert the mouse position into a relative proportion of our screen represented as game units.
- 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)
In this video (objectives)…
- Figure out the range we want to allow the paddle to move on x axis.
- 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)
In this video (objectives)…
- Create a method to give the ball an upwards velocity.
- 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)
In this video (objectives)…
- Add Block.cs script to our block.
- Use the Destroy() method to destroy the block once its hit.
- 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)
In this video (objectives)…
- Identify the issue - the ball slows down after hitting the side of the paddle.
- 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)
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)
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)
In this video (objectives)…
- Examine our problem with destroying our GameObject and therefore destroying the ability to play our destroyed SFX.
- 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)
In this video (objectives)…
Map out our workflow for determining how many blocks are in a scene so that we can know when we reach zero.
Create level GameObject and script.
Increment our number of blocks for each block in our scene.
Introduction to FindObjectOfType.
After watching (learning outcomes)… Tally up the total number of blocks in our scene.
(Unique Video Reference: 21_BR_CUD)
In this video (objectives)…
- Create a public method for decreasing total number of blocks when a block is destroyed.
- 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)
In this video (objectives)…
- Use [Range] to create a constrained slider in our inspector.
- Add Time.timeScale to adjust the speed of our entire game instead of needing to play around with gravity and velocity.
- 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)
In this video (objectives)…
- Create currentScore and pointsPerBlockDestroyed variables.
- Create a public method that adds to our score when called.
- 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)
In this video (objectives)…
- Create TextMeshPro text, import font, tweak till we're happy.
- 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)
In this video (objectives)…
- Introduce the Singleton Pattern.
- Use DontDestroyOnLoad().
- 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)
In this video (objectives)…
- Inserted a simple fix for bugs we are seeing with the Singleton.
- 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)
In this video (objectives)…
- Reinforce the public method paradigm we've been using.
- Fix the issue with our score persisting from game session to game session.
- 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)
In this video (objectives)…
- Review how Instantiate() works, discussing method overloads and signatures.
- 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)
In this video (objectives)…
- Getting schwifty with tags - understanding the what and why of using them.
- 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)
In this video (objectives)…
- Create 2 variables we can compare - maxHits and timesHit.
- 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)
In this video (objectives)…
- Create an array to hold our damage sprites.
- 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)
In this video (objectives)…
- Remove blocks and recreate our playtesting level.
- Add code to provide a warning if our array is missing sprites.
- 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)
In this video (objectives)…
- What's our problem? Boring ball loops.
- 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)
In this video (objectives)…
- Discuss the concept of extreme tuning - why use it.
- Audit our current project for places that we can apply some extreme tuning.
- 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)
In this video (objectives)…
- Refer back to your player experience to determine how you tune your game.
- Tune all of your game variables so that you're happy with them.
- 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)
In this video (objectives)…
- Create an if statement to test if we have enabled autoplay.
- 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)
In this video (objectives)...
- Discussion about the endless loop issue.
- Public versus [SerializeField].
- 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)
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)
In this video (objectives)…
- Create new Unity project.
- Download art assets and import them.
- 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)
In this video (objectives)…
- Move the player on horizontal axis using Input.GetAxis().
- Use Time.deltaTime to make our game framerate independent.
- 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)
In this video (objectives)…
- Construct our gameplay boundaries using the method ViewPortToWorldPoint().
- Clamp our horizontal and vertical movement based upon our boundaries.
- 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)
In this video (objectives)…
- Map out all the core and secondary features in our game and the main polish areas.
- 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)
In this video (objectives)…
- Create a projectile and connect it to the player.
- Instantiate a the projectile using GetButtonDown().
- 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)
In this video (objectives)…
- Understand the core concept of how a coroutine works.
- 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)
In this video (objectives)…
- Create a coroutine to call when firing.
- Loop the coroutine using a while (true) loop.
- 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)
In this video (objectives)…
- Create empty game objects to use as waypoints.
- Introduce lists and how they are different to arrays.
- 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)
In this video (objectives)…
- Map out what data will need to be in which of our scripts.
- Create our WaveConfig script and populate it with our data variables.
- 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)
In this video (objectives)…
- Create a better way to return the path waypoints from our wave config using a list rather than returning the game object.
- 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)
In this video (objectives)…
- Create EnemySpawner.cs to instantiate enemies into our scene.
- Craft a coroutine that spawns an enemy then waits for time.
- 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)
In this video (objectives)…
- Separate the movement speed and path away from the enemy prefab.
- 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)
In this video (objectives)…
- Coroutine inception! We place a coroutine within a coroutine.
- 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)
In this video (objectives)…
- Turn our Start method into a coroutine.
- Create a looping bool.
- 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)
In this video (objectives)…
- Create a class called Damage Dealer that can be placed on whatever game objects we want to use to inflict damage.
- Create an enemy class that can handle enemy's health.
- 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)
In this video (objectives)…
- Create an if statement to destroy enemy if its health goes below zero.
- 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)
In this video (objectives)…
-
Use [Header] attribute to tidy up our variables in the inspector.
-
Make our enemy laser more visible.
- 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)
In this video (objectives)…
- Create layers and apply the correct rules to the layer collision matrix.
- Destroy objects which are inflicting damage.
- 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)
In this video (objectives)…
- Add a quad and change our background image to default texture type.
- 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)
In this video (objectives)…
- Create our first particle system and tune it to look like a starfield.
- 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)
In this video (objectives)…
- Use texture sheet animation to create some variation in our particles.
- Create a cool explosion effect.
- 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)
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)
In this video (objectives)…
- Add enemy collision damage so we can bonk into enemies and inflict grievous harm on ourselves.
- 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)
In this video (objectives)…
- Select some rad music for our game.
- Create a music player game object and script.
- 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)
In this video (objectives)…
- Create GameSession.cs to handle our score value and updates.
- Create public methods for other scripts to call to influence score.
- 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)
In this video (objectives)…
- Using sorting layers to eliminate the problem where projectiles appear on top of the player and enemy.
- 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)
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)
In this video (objectives)...
- Set up our safe zone for a variety of aspect ratios
- 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)
In this video (objectives)...
- Change our canvas to world space.
- Calculate size of canvas and character.
- 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)
In this video (objectives)...
- Create a new Game Object with sprite renderer and Animator Component.
- Create an animator controller.
- 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)
In this video (objectives)...
- Import and slice up a new animation for our character.
- Use Grid by Cell size to slice up.
- 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)
In this video (objectives)...
- Create a new game object with 2 independently moving parts.
- 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)
In this video (objectives)...
- Instantiate attackers at intervals within a random range.
- Use a coroutine to continue spawning attackers.
- 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)
In this video (objectives)...
- Add animation event to our timeline.
- 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)
In this video (objectives)...
- Slice up sprite sheets, create multiple animation, create animator controller.
- 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)
In this video (objectives)...
- Clarify why we see different function options for animation events.
- Create a method for instantiating a project.
- 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)
In this video (objectives)...
- Create a trigger event with correct collider and rigid bodies.
- Decrease health by calling a public method of DealDamage() and passing in damage amount.
- 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)
In this video (objectives)...
- Destroy projectiles when they hit targets.
- 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)
In this video (objectives)...
- Add a core game area with collider and SpawnDefender script.
- 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)
In this video (objectives)...
- Use ScreenToWorldPoint to identify where the mouse is clicked in relation to our play space.
- 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)
In this video (objectives)...
- Use RoundToInt() to round our decimal places to whole numbers.
- 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)
In this video (objectives)...
- Create background and icons for our buttons.
- Implement a mouse over event that changes a button from greyed out to white.
- 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)
In this video (objectives)...
- Assign a defender prefab to each button click.
- 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)
In this video (objectives)...
- Create StarDisplay.cs and create a variable to store current resources.
- Use ToString() to convert our integer into a string to display in our text field on screen.
- 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)
In this video (objectives)...
- Explore the relationship between parent game objects, their children and how that impacts animation.
- 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)
In this video (objectives)...
- Set up Lizard and Cactus with proper parent-child relationship.
- Adding Animator, animation clips, animation events.
After watching (learning outcomes)...
Feeling confident with how the animation system works.
(Unique Video Reference: 27_GL_CUD)
In this video (objectives)...
- Add anim event which calls a public method which also calls another public method.
- 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)
In this video (objectives)...
- Create a method that returns a bool for whether we have enough resources to buy a defender.
- 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)
In this video (objectives)...
- 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)
In this video (objectives)...
- Create an array to store each of the Attacker Spawners.
- 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)
In this video (objectives)...
- Set up our animator controller with idle and attack animations.
- Create an animation parameter that we can use as a transition condition.
- 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)
In this video (objectives)...
- Prevent multiple defender placement per square.
- 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)
In this video (objectives)...
- 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)
In this video (objectives)...
- Create a new attack animation for our Lizard.
- 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)
In this video (objectives)...
- Create StrikeCurrentTarget() method that can be called as animation event.
- 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)
In this video (objectives)...
- Add a fox with all its bits and pieces.
- Create a fox component which will have different behaviour to the Lizard.
- 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)
In this video (objectives)...
- Create player lives and a way to decrease those lives when an attack reaches our base.
- 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)
In this video (objectives)...
- Add a slider to represent time left in the level.
- Animate the handle for the slider
- 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)
In this video (objectives)...
- Create a mechanism for monitoring when all attackers are destroyed.
- 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)
In this video (objectives)...
- Create Level Complete text which we can toggle on and off.
- 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)
In this video (objectives)...
- Add a You Lose popup which gives the player options to restart the level or quit to main menu.
- 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)
In this video (objectives)...
- Create a PlayerPrefsController wrapper class to store all of our PlayerPrefs keys.
- 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)
In this video (objectives)...
- Use our PlayerPrefs functionality to connect the volume slider level with the saved volume level.
- 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)
In this video (objectives)...
- Implement our PlayPrefs setting and getting for difficulty.
- 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)
In this video (objectives)...
- 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)
In this video (objectives)...
- Parent our defenders and projectiles to a parent object to keep our hierarchy tidy.
- 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)
In this video (objectives)...
- Add a canvas to our button game object.
- 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)
In this video (objectives)...
- Create a blank level template that we can build our levels upon.
- Discuss game design for making interesting progression.
- Big challenge - make your game!
After watching (learning outcomes)...
Understand how to create level progression for our player.
(Unique Video Reference: 55_GL_CUD)
In this video (objectives)…
- We'll be taking on Tilemap.
- 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)
In this video (objectives)…
Be clear on the core game design for this section.
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)
In this video (objectives)…
- Import sprite sheets to be used for our platformer.
- 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)
In this video (objectives)…
- Create multiple tile map layers.
- Build multiple tile palettes.
- 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)
In this video (objectives)…
- Create player idle animation clip from sprite sheet.
- Add animation to Animator Controller.
- 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)
In this video (objectives)…
- Create animation clips for run and climb.
- Add animation states for each animation clip type.
- Add bool parameters to switch between animation states.
- 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)
In this video (objectives)…
- Context for the gameplay functionality we are about to create.
- 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)
In this video (objectives)…
- Introduce Mathf.Abs and Mathf.Sign.
- Pseudocode for flipping character sprite.
- 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)
In this video (objectives)…
- We discuss the difference between caching and calculating.
- Why did we set up the flip sprite the way we did rather than starting with an isFacingRight bool.
- 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)
In this video (objectives)…
- Use code to set the animation transition bool.
- 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)
In this video (objectives)…
- Revise how velocity is being applied to our player's RigidBody.
- Add a positive y velocity to cause the player to jump.
- 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)
In this video (objectives)…
- Review how layers work as a way to apply the same functionality to many GameObjects.
- Implement IsTouchingLayers for our collision check.
- 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)
In this video (objectives)…
- Create ladder tile.
- Set up the climb tilemap, sorting layer and collision layer.
- Transition to climb state if player is touching ladder.
- 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)
In this video (objectives)…
- Review the fundamental differences between the camera types.
- 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)
In this video (objectives)…
- Import and set up Cinemachine.
- Create a Cinemachine brain and Cinemachine virtual camera.
- 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)
In this video (objectives)…
- Create physics layers for Player and Background and alter the collision matrix so that the correct things can collide with one another.
- Create a bounding box for the Cinemachine confiner.
- 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)
In this video (objectives)…
- Add a state-driven camera to the scene.
- Link the player animator states to the camera states by creating additional cameras.
- Adjust the blending between cameras.
- Experiment with camera shake.
After watching (learning outcomes)…
Implement state-driven cameras using Unity Cinemachine.
(Unique Video Reference: 20_TV_CUD)
In this video (objectives)…
- Add physics material to stop sticking to wall.
- Add additional collider to represent player's feet.
- 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)
In this video (objectives)…
- Import enemy sprite and set up required components.
- 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)
In this video (objectives)…
- Trigger player death when player collides with enemy.
- Disable player control when player is in death state.
- Implement some kind of dramatic death reaction.
- 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)
In this video (objectives)…
- Look at the method of laying out multiple scenes in the hierarchy.
- Discuss level flow.
- 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)
In this video (objectives)…
- Create a level exit portal sprite.
- Create coroutine for loading next level.
- Set up build scene indexing.
- 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)
In this video (objectives)…
- Create singleton for Game Session script.
- Determine whether player has any lives remaining.
- Reload current level or reset game to main menu if player has no lives.
- 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)
In this video (objectives)…
- Examine the different ways to ensure SFX is not destroyed when game object is destroyed.
- 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)
In this video (objectives)…
- Create UI text for lives and for score.
- Show the lives and score text based upon the starting values.
- Update lives and score when player dies or picks up coins.
- 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)
In this video (objectives)…
- Create a scene persist script that uses a singleton pattern to not destroy any children objects (such as pickups).
- Within our scene persist, check if the current build index differs to starting build index.
- 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)
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.
- 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.
The course has been remastered in Unity 2018!
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.
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!
- 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.

