We may earn an affiliate commission when you visit our partners.
Course image
Rick Davidson, GameDev.tv Team, and Gary Pettie

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.

Read more

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:

  • Snow Boarder: A simple Side-Scrolling jumping game using Unity's sprite shape tool

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

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

  • Quiz Master: A Quiz Game that focuses on learning how to set up user interface in Unity.

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. Get plugged into our communities of amazing developers on Facebook (nearly 20k), in our own TA-curated Community (17k views/day), and our student chat group (10k live at any one time). 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

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. 

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

Enroll now

What's inside

Learning objectives

  • 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.

Syllabus

Introduction & Setup

In this video (objectives)…

  1. Welcome to the course, lets get started.

In this video (objectives)…

  1. We're using Unity 2021.1 and Visual Studio Code in this course. Let's download and install them.

Read more

If you're experiencing issues with intelliSense not working, this guide will walk you through several steps to hopefully get things working.

In this video (objectives)…

  1. For those new to Unity we'll take a quick tour around the interface and create a fun little pretend platformer scene.

In this video (objectives)…

  1. We need tell Unity to use our preferred code editor and for those of us using VS Code, we'll be adding the required extensions. We'll write our first code using Debug.Log() to print to the console.

In this video (objectives)…

  1. Lucy invites you to join us in our various community support forums in order to ask questions, connect with other students and share your progress.

In this video (objectives)…

  1. Any time we change our project during a lecture we will commit that change to a public source control repository for students to access. In this video we show you how to access that content.

Delivery Driver (New Unity 2021.1 Content)

In this video (objectives)…

  1. We overview what we'll be covering in this section of the course.

In this video (objectives)…

  1. Let's look at the specific game mechanics and design we'll be implementing for this game.

In this video (objectives)…

  1. In this lecture we introduce methods and take some time to understand the difference between the Start() and Update() callbacks.

In this video (objectives)…

  1. In addition to rotating our object we want to move it forwards. We'll do this by using Tranform.Translate().

In this video (objectives)…

  1. Variables are a critical aspect to any code so in this lecture we'll discuss how to use variables and specifically how to type them in C#.

In this video (objectives)…

  1. To make our game easier to tweak and tune we can add SerializeField as an attribute to make our variables visible in the Unity Inspector.

In this video (objectives)…

  1. Its time to make our vehicle respond to player input. We'll quickly set up the inputs using the "old" input system.

In this video (objectives)…

  1. Currently our game will work differently on everyone's computer because its not framerate independent. We use Time.deltaTime to make our car drive in the same manner on all computers.

In this video (objectives)…

  1. To change our game from basic images moving around to objects which can bump into each other we need to understand Colliders and Rigid Bodies.

In this video (objectives)…

  1. When we bump into things we can make other things happen in our code using OnCollisionEnter2D().

In this video (objectives)…

  1. If we want to make things happen in our game when we pass through an area or through another object we can use OnTriggerEnter2D().

In this video (objectives)…

  1. We bring in some simple car game images into our game and play around with the pixels per unit settings to make sure our objects are the right size.

In this video (objectives)…

  1. Let's make our level a bit more interesting by creating a simple level layout using our assets.

In this video (objectives)…

  1. In this lecture we create a simple follow camera by telling the camera to use the same position as the player's car. We also need to add an offset so that camera is not right on top of the car by creating a new Vector3 value.

In this video (objectives)…

  1. We need a way of doing something only if we collide with our package trigger and only if we collide with our customer trigger. The tools we'll be using will be if statements and tags and also take a first look at the == operator.

In this video (objectives)…

  1. Bools are very helpful, especially when combined with if statements. We create our first bools to make sure we can only deliver a package if we've first picked on up.

In this video (objectives)…

  1. After we pick up a package we want it to disappear, so we're going to use the Destroy() method to remove our package game objects after we've collided with them.

In this video (objectives)…

  1. To give the player feedback regarding whether they have the package or not we'll change the color of our vehicle by modifying the Sprite Renderer component. To do this we'll learn how to use GetComponent.

In this video (objectives)…

  1. In this lecture we wrap up our functionality by adding a boost pad we can drive over and a condition where bumping into obstacles will slow the vehicle.

In this video (objectives)…

  1. We're done with this section - we've created a fun little driving game and learned some of the fundamentals of C# programming.

Snow Boarder (New Unity 2021.1 Content)

In this video (objectives)…

  1. In this section we'll be using sprite shapes, effectors, particle effects and more.

In this video (objectives)…

  1. Its good to start with the design and technical requirements for a project and that is precisely what we'll do in this lecture.

In this video (objectives)…

  1. To create a free-flowing organic level in our game we can use Unity Sprite Shapes. In this lecture we create a Closed Sprite Shape and Sprite Shape profile as well as import a basic set of assets we can use in our project.

In this video (objectives)…

  1. Edge Colliders are intended to follow a shape exactly which makes them the perfect way for us to keep objects on our track.

In this video (objectives)…

  1. Cinemachine is a powerful package that allows us to create virtual cameras. In this lecture we'll create a follow camera using Cinemachine.

In this video (objectives)…

  1. Instead of a ball rolling around we want a snow boarder to be sliding around our level, so in this lecture we'll set our 'Barry' our brave snow boarder.

In this video (objectives)…

  1. Surface Effectors act like a conveyor belt and are a quick an easy way to move our character along the path.

In this video (objectives)…

  1. We can spin our character in a few different ways, but the best is going to be by using the AddTorque() method to apply rotational force to the game object.

In this video (objectives)…

  1. We need a win condition and lose condition so in this lecture we'll create a finish line and crash detection.

In this video (objectives)…

  1. To restart the game we'll use SceneManager.LoadScene(). To access this we need to use the SceneManagement name space, so we'll be discussing how namespaces work.

In this video (objectives)…

  1. Our level loads immediately upon the collision event, however we want a short delay. To do that we'll use Invoke().

In this video (objectives)…

  1. Particle systems can add a lot of polish to our game, so we're going to experiment with creating a couple of cool particle effects.

In this video (objectives)…

  1. We'll add code to our scripts so that we can play our particle effects at the right time.

In this video (objectives)…

  1. It's time to tweak our game to make it more playable and look a bit better.

In this video (objectives)…

  1. FindObjetOfType is another approach we can use to set a reference to a component or object.

In this video (objectives)…

  1. We add some dust particles to our snow board and turn them on and off depending on whether or not we are touching the ground.

In this video (objectives)…

  1. We add 2 sound effects to our game and look at 2 slightly different ways of playing clips.

In this video (objectives)…

  1. Public methods can be accessed from other classes. In this lecture we use a public method to stop the player being able to control their character.

In this video (objectives)…

  1. We have a minor issue that the player can bounce and trigger multiple SFX and particle effects when crashing. We'll set ourselves a challenge to stop that.

In this video (objectives)…

  1. We wrap up this section and get ready for the next one.

Quiz Master (New Unity 2021.1 Content)

In this video (objectives)…

  1. Check out what we'll be making in this section of the course!

In this video (objectives)…

  1. Lets begin where every game should - with the game design document - and understand the features and mechanics that we'll need for our quiz game.

In this video (objectives)…

  1. The first step towards building our game is to add a UI canvas and background image.

In this video (objectives)…

  1. UI text comes in many different styles. Let's add the game title and make a home for the question text.

In this video (objectives)…

  1. Buttons will allow the player to interact with our game. Let's add some to our canvas and organize them with using a layout group

In this video (objectives)…

  1. Scriptable object are a great way to store data, so let's use them to store our question data.

In this video (objectives)…

  1. Give your private variables read-only access using a getter method.

In this video (objectives)…

  1. A question is nothing without an answer, so let's look at how to store our quiz answers efficiently by using an array.

In this video (objectives)…

  1. It's time connect our scriptable objects to our UI. Let's start by learning how to set the text field of the TextMeshPro component in code, using TextMeshProUGUI.

In this video (objectives)…

  1. It's time connect our scriptable objects to our UI. However, before we can connect our answers to the buttons, we're going to need to learn about for loops.

In this video (objectives)…

  1. Once the player has selected an answer, it would be nice to tell them if they got it right. To do this, we're going to swap the sprite for the button holding the correct answer and replace the question text with a confirmation message.

In this video (objectives)…

  1. After the player has selected an answer, they can continue to click on the other answer buttons. Let's put a stop to that by changing the interactable state of the button.

In this video (objectives)…

  1. To move the player on to the next question, we're going to implement a turn-based style timer - giving the player a fixed amount of time to answer the question and a fixed amount of time to review the answers.

In this video (objectives)…

  1. Let’s finish up our timer by calculating the fill amount for our timer image component and add some additional functionality that our Quiz.cs script will use later on.

In this video (objectives)…

  1. With our timer logic set up, let's connect it to our game and finally see it in action!

In this video (objectives)…

  1. It's finally time to add some more questions to the game! We could use an array to store them, but let's use the more flexible 'List' instead.

In this video (objectives)…

  1. There are many different types of scoring system in games but they all serve a similar purpose - to show the player how well they're doing. For our game, let's look at showing the player how many questions they got right as a percentage.

In this video (objectives)…

  1. We use a UI slider to act as a progress bar, to show the player how far they are through the quiz.

In this video (objectives)…

  1. Test your knowledge by creating a new canvas that will display the player's final score once the quiz is complete.

In this video (objectives)…

  1. Our game is almost finished! We just need a way to; transition between our quiz and end screens, and reload the game if the player wants to play again. We will also fix a few minor bugs by learning about the Awake() method.

In this video (objectives)…

  1. Our UI focused quiz game is now complete! Along the way, we learn how to; store data using scriptable objects, loop through lists and arrays using a for-loop, and reload our scenes so the player can try again without having to reload the game.

TileVania (New Unity 2021.1 Content)

In this video (objectives)…

  1. In this section we'll be using Tilemap to create a 2D sidescrolling platformer.

In this video (objectives)…

  1. We look at the core design for this project and outline what features we need for our minimum viable product.

In this video (objectives)…

  1. We've brought some sprite sheets into Unity, we now need to slice them up for our use.

In this video (objectives)…

  1. Tilemap is a powerful tool for creating 2D games. In this lecture we understand the main aspects of Tilemap and get started using it.

In this video (objectives)…

  1. Our level is going to have many layers to it - platforms, background, water, pickups, etc. In this lecture we look at how to create multiplayer layers using Tilemap and sorting layers.

In this video (objectives)…

  1. Unity Rule tiles are a powerful way for us to paint a tileset and have them automatically recognise edges, corners, and other elements and display the correct art asset. This involves setting up the logic, or rules, for our rule tile.

In this video (objectives)…

  1. We use 4 of the sprites from our spritesheet to create an idle animation for our player. This involves setting up an animator controller and creating an anim file.

In this video (objectives)…

  1. We implement our running and climbing states and add the appropriate animations for each. We set up parameters that can be used as conditions to transition from one state to another.

In this video (objectives)…

  1. We play around with prefabs and learn the basics of how they work.

In this video (objectives)…

  1. We add collision for our player and for our platforms. To do this we'll need to use a composite collider and a tilemap collider.

In this video (objectives)…

  1. We'll set up our input system using the Messages option and add an additional input action with key bindings.

In this video (objectives)…

  1. Now that we have the basic input system being received we need to turn that into player movement by adding velocity to the player's Rigidbody.

In this video (objectives)…

  1. We flip our player sprite by looking at our velocity and seeing what direction we are running in. This will involve using Mathf.Abs, Mathf.Sign and Mathf.Epsilon

In this video (objectives)…

  1. We change the state of our animation with the animator control based upon whether the player is moving the player and it therefore has velocity.

In this video (objectives)…

  1. We'll create our OnJump() method which can be called when our Jump action button is pressed, resulting in our player jumping. We'll also play with gravity and movement speed to get the tuning as we'd like.

In this video (objectives)…

  1. To remove the issue of our player being able to spam the jump button and fly way off the screen we need to check if they are touching the ground by using Collider2D.IsTouchingLayers().

In this video (objectives)…

  1. We need to check if the player is touching a ladder and create code to allow vertical movement in that moment.

In this video (objectives)…

  1. Our player slowly drifts down to earth while on the ladder. Instead of this behaviour we want the player to stay where they are and not slide.

In this video (objectives)…

  1. When our player is running up or down the ladder we want to play our climb animation.

In this video (objectives)…

  1. Let's set up a follow camera with some dampening to soften our jump. We'll use a Cinemachine virtual camera to do this.

In this video (objectives)…

  1. We set up a way to limit how far a camera can travel using the Cinemachine Confiner Extension.

In this video (objectives)…

  1. Cinemachine makes life super easy for us to transition between different cameras based upon our animation state. We set up a few cameras that will blend from one to another based upon our actions.

In this video (objectives)…

  1. We'll change the friction and bounciness of two Physics Material 2D materials so that we can create bouncy mushrooms and so we can stop the player sticking to the wall.

In this video (objectives)…

  1. We set up a feet collider and use that to check if the player is able to jump.

In this video (objectives)…

  1. We add all of the components and base animation to get our enemy ready for movement.

In this video (objectives)…

  1. We give our character a reverse periscope(TM) and use OnTriggerExit2D() to let it know that its time to turn around and move the other direction.

In this video (objectives)…

  1. We start our player death functionality by stopping the player from being able to move after the collide with an enemy.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Teaches C#, a powerful modern language, from scratch - no prior programming experience is necessary
Develops solid foundation for game design and game development that will help you build your own games
Teaches object oriented programming works in practice
Features a variety of projects, including SnowBoarder, Laser Defender, TileVania, and Quiz Master
Taught by qualified and experienced coders and avid gamers, who are able to explain complex concepts clearly, as well as entertain along the way
Provides full lifetime access for a single one-off fee

Save this course

Save Complete C# Unity Game Developer 2D to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Complete C# Unity Game Developer 2D with these activities:
Review Core Concepts of Object-Oriented Programming
Review the fundamental principles of object-oriented programming (OOP) to strengthen your foundation for this course.
Show steps
  • Revisit the key concepts of OOP, such as classes, objects, methods, and inheritance.
  • Practice writing simple Java or C++ programs to implement OOP concepts.
Solve Coding Challenges in C#
Engage in targeted practice by solving coding challenges in C# to hone your problem-solving skills.
Show steps
  • Identify online coding platforms like LeetCode or HackerRank.
  • Choose beginner-level challenges and attempt to solve them independently.
  • Review solutions and explanations to enhance your understanding.
  • Gradually progress to more complex challenges to expand your capabilities.
Host a Study Group or Code Review Session
Collaborate with classmates to reinforce concepts, provide feedback, and enhance your learning experience.
Show steps
  • Organize a study group with fellow students.
  • Set regular meeting times to discuss course materials.
  • Take turns presenting topics and facilitating discussions.
Two other activities
Expand to see all activities and additional details
Show all five activities
Create a Simple 2D Game Prototype
Apply your acquired knowledge by embarking on a small-scale game development project to solidify your understanding.
Browse courses on 2D Game Development
Show steps
  • Design a simple game concept, such as a platformer or a shooter.
  • Implement core gameplay mechanics using Unity's tools.
  • Test and iterate on your prototype to improve its functionality and user experience.
Develop a Comprehensive Game Design Document
Demonstrate your understanding of game design principles by creating a detailed game design document.
Browse courses on Game Design Document
Show steps
  • Define the game's concept, target audience, and core gameplay mechanics.
  • Outline the game's story, characters, and levels.
  • Create mockups and prototypes to illustrate the game's visual and interactive elements.
  • Include sections on game balance, monetization, and marketing strategy.

Career center

Learners who complete Complete C# Unity Game Developer 2D will develop knowledge and skills that may be useful to these careers:
Game Developer
Game Developers are responsible for designing, developing, and implementing the gameplay, story, and programming for video games. A course like this one would be a great way to learn the basics of game development, including programming, design, and art. This course can help you build a strong foundation for a career as a Game Developer.
Software Engineer
Software Engineers are responsible for designing, developing, and implementing software applications. A course like this one would be a great way to learn the basics of programming, including C#, which is a popular programming language used in software development. This course can help you build a strong foundation for a career as a Software Engineer.
Mobile Developer
Mobile Developers are responsible for designing, developing, and implementing mobile applications. A course like this one would be a great way to learn the basics of mobile development, including Android and iOS development. This course can help you build a strong foundation for a career as a Mobile Developer.
Web Developer
Web Developers are responsible for designing, developing, and implementing websites. A course like this one would be a great way to learn the basics of web development, including HTML, CSS, and JavaScript. This course can help you build a strong foundation for a career as a Web Developer.
Game Designer
Game Designers are responsible for designing the gameplay, story, and characters for video games. A course like this one would be a great way to learn the basics of game design, including level design, storytelling, and character development. This course can help you build a strong foundation for a career as a Game Designer.
Level Designer
Level Designers are responsible for designing the levels for video games. A course like this one would be a great way to learn the basics of level design, including level layout, enemy placement, and power-up placement. This course can help you build a strong foundation for a career as a Level Designer.
Animator
Animators are responsible for creating the animations for video games. A course like this one would be a great way to learn the basics of animation, including 2D and 3D animation. This course can help you build a strong foundation for a career as an Animator.
3D Modeler
3D Modelers are responsible for creating the 3D models for video games. A course like this one would be a great way to learn the basics of 3D modeling, including polygon modeling, texturing, and lighting. This course can help you build a strong foundation for a career as a 3D Modeler.
Quality Assurance Tester
Quality Assurance Testers are responsible for testing video games to find bugs. A course like this one would be a great way to learn the basics of quality assurance testing including bug reporting, test case writing, and regression testing. This course can help you build a strong foundation for a career as a Quality Assurance Tester.
User Experience Designer
User Experience Designers are responsible for designing the user interface and user experience for video games. A course like this one would be a great way to learn the basics of user experience design, including user research, prototyping, and iterating. This course can help you build a strong foundation for a career as a User Experience Designer.
Technical Artist
Technical Artists are responsible for creating the 3D models, textures, and animations for video games. A course like this one would be a great way to learn the basics of 3D modeling, texturing, and animation. This course can help you build a strong foundation for a career as a Technical Artist.
Producer
Producers are responsible for managing the development of video games. A course like this one could be helpful for learning the basics of project management, including budgeting, scheduling, and resource allocation. This course can help you build a foundation for a career as a Producer.
Data Scientist
Data Scientists are responsible for collecting, analyzing, and interpreting data to find patterns and trends. A course like this one may be helpful for learning the basics of data science, including data collection, data analysis, and data visualization. This course can help you build a foundation for a career as a Data Scientist.
Business Analyst
Business Analysts are responsible for analyzing business needs and developing solutions to improve business processes. A course like this one may be helpful for learning the basics of business analysis, including requirements gathering, process modeling, and solution design. This course can help you build a foundation for a career as a Business Analyst.
Project Manager
Project Managers are responsible for planning, executing, and closing projects. A course like this one may be helpful for learning the basics of project management, including project planning, risk management, and stakeholder management. This course can help you build a foundation for a career as a Project Manager.

Reading list

We've selected 14 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Complete C# Unity Game Developer 2D.
Practical guide to using Unity. It covers the basics of game development, from creating a new project to publishing your game. It also includes chapters on specific topics, such as physics, AI, and multiplayer networking.
A more academic approach to C#, this text covers not only syntax, but the fundamentals of the language, and can serve as a reference later.
Provides a detailed overview of game engine architecture. It good reference for anyone who wants to learn more about how game engines work.
Focuses on the newest version of C#, and provides insights into how to apply the newest features to real world projects.
Focuses on game design theory for both video games and tabletop games, this text would be valuable to 2D game designers.
Provides a mix of game design theory, inspiration, and business advice useful to the aspiring game designer.
Great resource for learning about design patterns in game programming. It covers a wide range of topics, from basic to advanced.
Provides a great introduction to design patterns. It good starting point to complement the learning of the course.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Complete C# Unity Game Developer 2D.
Complete C# Unity Game Developer 3D
Most relevant
The Ultimate Guide to Game Development with Unity...
Most relevant
Intermediate Object-Oriented Programming for Unity Games
Most relevant
Introduction to C# Programming and Unity
Most relevant
Game Design and Development 1: 2D Shooter
Most relevant
Unity & 100+ Asset Store Kits - The Complete Game...
Most relevant
RPG Core Combat Creator: Learn Intermediate Unity C#...
Most relevant
More C# Programming and Unity
Most relevant
C# Class Development
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser