We may earn an affiliate commission when you visit our partners.
Course image
Udemy logo

Complete C# Unity Game Developer 3D

Ben Tristem, Rick Davidson, GameDev.tv Team, and Gary Pettie

This is the long-awaited sequel to the Complete Unity Developer - one of the most popular e-learning courses on the internet.  Completely re-worked from scratch with brand-new projects and our latest teaching techniques. You will benefit from the fact we have already taught over a million students programming and game development, many shipping commercial games as a result.

Read more

This is the long-awaited sequel to the Complete Unity Developer - one of the most popular e-learning courses on the internet.  Completely re-worked from scratch with brand-new projects and our latest teaching techniques. You will benefit from the fact we have already taught over a million students programming and game development, many shipping commercial games as a result.

Unity is an incredible 3D package used for making video games, architectural and medical imaging and more. The challenge is that it's big and complicated to use, especially for complete beginners to coding and game development. We make learning to code easy and fun by leading you step-by-step through the process of creating exciting games.

Get plugged into our communities of amazing developers on Facebook (nearly 20k), in our own Teaching Assistant-curated Community, and our student Discord chat channel.

This course has full professional-produced English closed-captions.

If you're reading this you probably already have everything you need to get started. Unity is a free download. With regular access to an internet connection you'll be able to engage in our thriving community. Even if you have no experience with coding, or with 3D packages, we will guide you through everything from first principles. Starting slow, then building on what you learn, you'll soon have a very solid working knowledge of Unity.

Don't take our word for it, please see the amazing reviews students have taken the time to write. We are proud to be transforming lives, and equipping 1000s of people with valuable new skills. We would love you to become one of them now.

The course is project-based, so 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 heads", powerful diagrams, quality screencasts and more.

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.

Prefer to focus on 2D? Check-out our Complete Unity Developer 2D course. Want something a little more advanced? Check-out our epic Unity RPG course. Want to get certified, get a job, or learn environment art - we've got you covered. The green leaf logo is your sign of quality.

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.

What this course DOESN'T cover...

Here are some things we will not be covering in detail...

  • Art asset creation (assets provided but not made on-screen).

  • Advanced performance optimization.

  • Editor plugins or modifications.

  • Physics engine modification.

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

Dive in now, you won't be disappointed.

Enroll now

What's inside

Learning objectives

  • Learn c# from scratch. a powerful modern language.
  • Get experience using unity 2020 - a very versatile 3d tool.
  • Gain an excellent general knowledge of video game design.
  • Make 2.5d and 3d games in unity.
  • Transfer your knowledge to .net, other languages, and more.
  • Learn how object oriented programming works in practice.
  • Develop a positive attitude to problem solving.
  • Practical exercises every video to build actual skills.
  • Learn good coding and design patterns.
  • Learn to use source control, a valuable tool for working in small teams.

Syllabus

Introduction & Setup

In this video (objectives)…

  1. Welcome to this Unity 3D course. The course starts off gentle and builds in difficulty. First section is set up and exploring, then we get into our first code, then more detailed game projects.

Read more
Download Unity & VS Code

In this video (objectives)…

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

Introducing Unity

In this video (objectives)…

  1. Prefabs are an important part of Unity so its useful to understand how they work.

In this video (objectives)…

  1. Its important to test that our environment works and that we can use code to drive our game. We print out a simple statement to the console to test that everything works fine.

In this video (objectives)…

  1. We introduce the ways that you can get help, support and contribute to the community.

Obstacle Course (New Unity 2020.1 Content)

In this video (objectives)…

  1. First look at this section's project - a simple sandbox where we make obstacles for the player to avoid and in the process learn C# and some basic Unity.

In this video (objectives)…

  1. This game might seem simple but there are many small elements that will make it a fun sandbox experience for players.

In this video (objectives)…

  1. We start the process of making our player move by using transform.Translate() to move on the x axis. We illustrate the difference between Start() and Update().

In this video (objectives)…

  1. We discuss the concept of variables and look at the structure of creating a new variable.

In this video (objectives)…

  1. SerializeField allows us to modify variables in the inspector. We add SerializeField to our variables in this lecture. We also create some new materials so we can change the colour of our player and ground plane.

In this video (objectives)…

  1. We use Input.GetAxis to create a basic movement system for our player.

In this video (objectives)…

  1. We use Time.deltaTime to make our player framerate independent. We also create a member variable to control the speed of our player.

In this video (objectives)…

  1. We need a way to see our player as it moves around and Unity's Cinemachine is the perfect way to do so.

In this video (objectives)…

  1. Collision is a fundamental aspect of most games. We look at box colliders and add a RigidBody to our player object.

In this video (objectives)…

  1. Methods are how we make our code do specific things. This lecture looks at the concepts that are important for methods such as how to declare, how to call, syntax, what does return mean and what are parameters.

In this video (objectives)…

  1. We create a new method and call it to print instructions to the console. We also refactor our movement code and create a new method for it.

In this video (objectives)…

  1. We implement OnCollisionEnter() to print out information to the console when the player bumps into a wall.

In this video (objectives)…

  1. We use GetComponent to access the wall's material and change the color when we bump into the wall with the player.

In this video (objectives)…

  1. When we bump into a wall we want to penalise the player by increasing their score. We do this by creating a hits variable and using hits++ to increment the score.

In this video (objectives)…

  1. For our new mechanic of dropping an object from the sky we need a timer. For this we are going to use Time.time.

In this video (objectives)…

  1. To add a delay for our object falling we want to tell it to only fall if a certain amount of time has passed. For this we'll implement an if statement.

In this video (objectives)…

  1. Caching is an important process to start practicing. In this lecture we cache the rigidbody and meshrenderer components.

In this video (objectives)…

  1. Tags help us create more useful conditional statements. In this lecture we use tags to limit when behaviour will occur such as obstacles turning another colour upon collision.

In this video (objectives)…

  1. Let's create some additional obstacles which spin using transform.Rotate().

In this video (objectives)…

  1. Its time to get everything organised so that we're ready to make our level. We will organise our folders, add some extra obstacles and prefab everything that we can.

In this video (objectives)…

  1. We bring it all together and use our obstacles to build an obstacle course level.

In this video (objectives)…

  1. We've covered a lot in this section. Please do share your creation with the community

Project Boost (New Unity 2020.1 Content)

In this video (objectives)…

  1. Project Boost is one of our community's favourite projects. We'll be increasing our C# and Unity knowledge and building a fun, highly customisable rocket game.

In this video (objectives)…

  1. We lay out our gameplay screen and talk about the player experience for this project.

In this video (objectives)…

  1. Onion Design is a great technique to use in order to prioritise our development.

In this video (objectives)…

  1. We start our project and discuss our units of measurement.

In this video (objectives)…

  1. Classes are an important organisational tool in C# programming. We talk about classes that we make ourselves and classes that Unity has already made for us.

In this video (objectives)…

  1. We use the Input class to bind a key press to a log printed to the console.

In this video (objectives)…

  1. Its time to make our rocket move. We're going to do this by adding force using the AddRelativeForce() method.

In this video (objectives)…

  1. We need a way to run our rocket thrust that doesn't require fiddling with the mass of the rocket. To do this we add a tuning variable. And while we're at it, we may as well make our rocket thrust framerate independent, right?

In this video (objectives)…

  1. To fly our rocket we need a way to rotate it, and to do that we'll use transform.Rotate().

In this video (objectives)…

  1. We play with the rigidbody of our rocket, modifying the drag and gravity. We also fix some movement bugs that come from a conflict between our manual controls and Unity's physics.

In this video (objectives)…

  1. We talk about what source control is and why use it. We also look at how you can access the repo used in this course so you can check your progress against what you see in the lecture, or clone the entire project.

In this video (objectives)…

  1. We introduce how audio works in Unity. We also look at places where you can get or make sound effects and add our first sound effect (SFX) for our rocket.

In this video (objectives)…

  1. We control our audio through code, allowing us to play the rocket boost when we push thrust and to stop it when we stop thrusting.

In this video (objectives)…

  1. Switch Statements are a different sort of conditional and in this lecture we'll be using a switch statement to log out different messages based upon what the player has collided with.

In this video (objectives)…

  1. When we crash our rocket we want to restart our journey. To do this we reload the Unity scene that is currently loaded using SceneManager.LoadScene().

In this video (objectives)…

  1. In order to progress to the next level we'll need to be able to load the next level.

In this video (objectives)…

  1. We want a slight time delay after we crash or make it to the end of our level. To do this we use Invoke(). We are also going to take away control from the player after the collision event has happened.

In this video (objectives)…

  1. Our previous implementation of playing audio SFX was quite simple and not overly flexible. Now we'll trigger different audio clips to play from code based upon what event has taken place.

In this video (objectives)…

  1. We need to stop our collision code from working during the time between colliding with something and loading the new level.

In this video (objectives)…

  1. In this lecture we make our rocket look more interesting and learn a bit more about prefabs in the process.

In this video (objectives)…

  1. When we bump into something in the world we want to give the players some feedback and a great way to do that is with particle effects.

In this video (objectives)…

  1. In this lecture we link particles systems to our rocket booster.

In this video (objectives)…

  1. In this lecture we clean up our code by using the extract method approach and make our Movement.cs script more readable.

In this video (objectives)…

  1. It helps to be able to play your game quickly and easily. In this lecture we create debug keys for loading levels and stopping collision events.

In this video (objectives)…

  1. Our level is pretty empty, let's add some geometry to give it some personality.

In this video (objectives)…

  1. Lighting helps make our game world look more interesting, so in this lecture we add point lights, spotlights and alter our directional light to create a more interesting look.

In this video (objectives)…

  1. We start the process of moving an obstacle back and forth. This will become an interesting tool for us to create challenges for the player.

In this video (objectives)…

  1. Using the Mathf.Sin() function allows us to create a nice smooth animation for our moving objects. We can then tune the speed and vector that it travels back and forth.

In this video (objectives)…

  1. We have a "not a number" error when we attempt to set period to 0 so in this lecture we will protect against that.

In this video (objectives)…

  1. In this lecture we create a handful of levels and use the "moments" technique to come up with ideas.

In this video (objectives)…

  1. When we play a build of our game we need a way to exit the game gracefully and we do that with Application.Quit().

In this video (objectives)…

  1. To publish our game online or share it with a friend we fist need to build it. In this lecture we build a standalone build and a WebGL build and publish the WebGL build to sharemygame.com.

In this video (objectives)…

  1. We've learned a lot in this section, culminating in building and publishing our game.

Argon Assault (New Unity 2020.1 Content)

In this video (objectives)…

  1. A quick introduction and overview of the Argon Assault Rail Shooter we'll be making.

In this video (objectives)…

  1. This game will be a rail shooter using Timeline to drive the player around the maps.

In this video (objectives)…

  1. We add a terrain to our project and use the basic terrain manipulation tools to create some shape to our terrain

In this video (objectives)…

  1. In Unity 2020.1 the Terrain Tools package is a separate package to instal, so we'll be setting it up and giving ourselves more terrain options.

In this video (objectives)…

  1. The asset store is a great place for finding assets for a Unity project. In Unity 2020.1 the workflow changed, so we learn how to use the package manage to import our assets.

In this video (objectives)…

  1. Let's bring our terrain to life with some colours by adding textures.

In this video (objectives)…

  1. Trees will make our terrain feel more organic and lively. In this lecture we import and add trees to our world.

In this video (objectives)…

  1. The key mechanism we use to drive around our player on the rail is Timeline. In this video we get that structure set up.

In this video (objectives)…

  1. To create interesting moments in our rail shooter we place enemies that will fly in front of the player.

In this video (objectives)…

  1. We need to have a nicer player ship to be flying around so lets import a great free asset to use.

In this video (objectives)…

  1. The foundation for Unity's "old" input system is GetAxis(). We'll be using this to set up the basics for our player movement.

In this video (objectives)…

  1. We look at a very basic implementation of Unity's new input system.

In this video (objectives)…

  1. The first steps in moving our player is to programmatically have it move gently from left to right across the screen.

In this video (objectives)…

  1. We need to use the xThrow and yThrow that we are accessing from player input to move the player's ship up/down/left/right.

In this video (objectives)…

  1. Our ship can go off the screen at the moment, we want to restrict its movement so that its only possible to go to the edge of the screen. We use Mathf.Clamp() to do that.

In this video (objectives)…

  1. There is a lot going on when we rotate a game object. We start the process of implementing Quaternion.Euler() to accurately rotate our player ship.

In this video (objectives)…

  1. We link our player's screen position and their control throw to the rotation of our ship.

In this video (objectives)…

  1. We need more rail and need to improve the feel of our controls. Now is a good time to do some tuning.

In this video (objectives)…

  1. We start the process of setting up our laser bullets by using Unity's particle system to create our lasers.

In this video (objectives)…

  1. Nested prefabs give us a lot of flexibility but also create some challenges. In this lecture we understand nested prefabs by working through some examples.

In this video (objectives)…

  1. We need to set up the mechanics for firing so that when we push a button, our ship is ready to shoot. We'll implement the old system and also touch on how to do this in the new system.

In this video (objectives)…

  1. We want to access all of our ship's lasers and to do this we set up an array and use a foreach loop to cycle through all of the lasers in our array.

In this video (objectives)…

  1. Instead of turning on and off our game object we instead need to stop the particle system component's emission.

In this video (objectives)…

  1. To organise our code better and make life easier for our designer-brains, we can use tooltips and headers.

In this video (objectives)…

  1. We explore the collision matrix and understand the difference between triggers and collisions and how to use them properly.

In this video (objectives)…

  1. In this lecture we make our lasers bounce all over the place and also shoot and destroy our placeholder enemies.

In this video (objectives)…

  1. Now that we are registering the crash, lets restart the game when the player is triggered by an object in the world.

In this video (objectives)…

  1. The player needs visual feedback that they have collided with something, so we need to create an explosion particle effect.

In this video (objectives)…

  1. In this lecture we trigger the particle effect explosion and make the player ship disappear.

In this video (objectives)…

  1. To create our enemy explosions we'll use Instantiate() to create them at runtime.

In this video (objectives)…

  1. When we want one class to influence another class we can create a public method to allow the 2 classes to communicate.

In this video (objectives)…

  1. As a starting point to displaying our player's score on the screen we'll be creating a Text Mesh Pro UI text and adding some spiffy font to it.

In this video (objectives)…

  1. To display our integer in the text box we first need to use ToString() to convert it to a string.

In this video (objectives)…

  1. So that our enemies aren't just one-hit to destroy, we'll be implementing a simple hit point system.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Taught by Ben Tristem, Rick Davidson, GameDev.tv Team, and Gary Pettie, all experienced coders and avid gamers who are able to explain complex concepts clearly, as well as entertain along the way
Develops an excellent general knowledge of video game design
Delves into C# scripting, making learners employ a powerful, modern language
Offers a generous amount of hands-on exercises to hone learners' coding and design patterns
Utilizes the versatile 3D tool, Unity, to create impressive video games
Emphasizes practical, real-world applications of video game design principles by guiding learners through actual indie game projects

Save this course

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

Reviews summary

Unity game development 3d

According to students, this course is a "great way to get back into some development" and is well received. Learners have found the course to be well-paced and are thankful for the work of the instructors, Ben and Rick.
The instructors are praised for their work.
"Many thanks to Ben and Rick for their excellent course."
The lessons are engaging and well-paced.
"Like a good book I didn't want this course to end."

Career center

Learners who complete Complete C# Unity Game Developer 3D will develop knowledge and skills that may be useful to these careers:
Unity Developer
This course is a great starting point for those who aspire to become a Unity Developer, who specializes in developing games using the Unity game engine. The course provides a comprehensive overview of Unity 3D, covering topics such as scripting, animation, and physics. Additionally, it includes practical exercises and projects that allow students to gain hands-on experience with Unity 3D.
Indie Game Developer
This course is a great starting point for those who aspire to become Indie Game Developers, who create and publish their own independent video games. The course provides a comprehensive overview of Unity 3D, covering topics such as scripting, art creation, and publishing. Additionally, it includes practical exercises and projects that allow students to gain hands-on experience with Unity 3D and the game development process.
Game Programmer
The course provides a solid foundation in C#, a popular programming language for game development. It also covers Unity 3D, a widely used game development engine. With this foundation, students can pursue a career as a Game Programmer, who designs, develops, and tests video games. This course provides practical exercises in C# and Unity 3D, which can help students build a portfolio to showcase their skills to potential employers.
Game Designer
This course may be useful for aspiring Game Designers, who are responsible for creating the overall concept, design, and mechanics of a game. The course provides a good understanding of game design principles and Unity 3D, which can help students create prototypes and demonstrate their design skills. Additionally, the course covers source control, a valuable tool for collaborating on game development projects.
Game Artist
This course may be helpful for those interested in a career as a Game Artist, who creates the visual assets for video games. The course provides an introduction to Unity 3D, which is commonly used for creating game art. Additionally, it covers topics such as 3D modeling, texturing, and lighting, which are essential for creating realistic and immersive game environments.
Technical Artist
Students interested in a career as a Technical Artist, who combines artistic skills with technical knowledge to create game assets, may find this course helpful. It provides an introduction to Unity 3D, which is widely used for creating 3D game assets. Additionally, the course covers topics such as materials, lighting, and particle effects, which are essential for creating realistic and immersive game environments.
Mobile Game Developer
This course may be useful for those interested in a career as a Mobile Game Developer, who creates games for mobile devices. The course provides an overview of Unity 3D, which is commonly used for mobile game development. Additionally, it covers topics such as mobile optimization, touch controls, and in-app purchases, which are essential for creating successful mobile games.
3D Animator
This course may be helpful for aspiring 3D Animators, who create 3D models and animations for games, movies, and other media. The course provides an introduction to Unity 3D, which is commonly used for creating 3D animations. Additionally, it covers topics such as rigging, animation, and motion capture, which are essential for creating realistic and engaging animations.
Software Engineer (XR)
This course may be useful for those interested in a career as a Software Engineer (XR), who develops software for extended reality (XR) applications, including virtual reality (VR) and augmented reality (AR). The course provides a foundation in C# programming and Unity 3D, which are commonly used in XR development. Additionally, it covers topics such as XR input, spatial audio, and physics, which are essential for creating immersive and engaging XR experiences.
Game Producer
This course may be helpful for those interested in a career as a Game Producer, who oversees the development and production of video games. The course provides a general overview of game development principles and Unity 3D, which can help students understand the technical and creative aspects of game development. Additionally, it covers topics such as project management and budgeting, which are essential for successful game production.
Game Tester
This course may be useful for aspiring Game Testers, who play and test video games to identify and report bugs. The course provides a good understanding of game development principles and Unity 3D, which can help students understand the technical aspects of game development and identify potential issues.
Game Writer
This course may be helpful for aspiring Game Writers, who create the stories, characters, and dialogue for video games. The course provides a good understanding of game design principles and Unity 3D, which can help students understand the technical aspects of game development and create compelling narratives.
Level Designer
This course may be useful for those interested in a career as a Level Designer, who creates the environments and levels for video games. The course provides an overview of Unity 3D, which is widely used for level design. Additionally, it covers topics such as level layout, lighting, and optimization, which are essential for creating immersive and engaging game environments.
Game Director
This course may be helpful for aspiring Game Directors, who oversee the creative and technical aspects of game development. The course provides a general overview of game development principles and Unity 3D, which can help students understand the technical and creative aspects of game development. Additionally, it covers topics such as project management and leadership, which are essential for successful game direction.
Software Engineer (Games)
This course may be useful for those interested in a career as a Software Engineer (Games), who develops and maintains software for video games. The course provides a foundation in C# programming and Unity 3D, which are commonly used in game development. Additionally, it covers topics such as source control and debugging, which are essential for working in a software development environment.

Reading list

We've selected ten 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 3D.
Provides a comprehensive overview of Unity game development, covering everything from the basics to advanced techniques. It great resource for beginners who want to learn more about Unity, as well as for experienced developers who want to brush up on their skills.
Provides a comprehensive overview of design patterns that are commonly used in game development. It good choice for experienced game developers who want to learn more about design patterns and how to use them in their own games.
Provides a comprehensive overview of Unity, covering everything from the basics to advanced techniques. It great resource for beginners who want to learn more about Unity, as well as for experienced developers who want to brush up on their skills.
Provides a comprehensive overview of the Unity game engine and how to use it to create 2D and 3D games. It good choice for beginners who want to learn the basics of game development with Unity.
Provides a practical guide to using the Game Maker Studio 2 game engine to create 2D games. It good choice for beginners who want to learn the basics of game development with Game Maker Studio 2.
Provides a comprehensive overview of the C# programming language and the .NET 4.6 Framework. It good choice for beginners and experienced developers alike who want to learn more about C# and .NET.
Provides a comprehensive overview of the C# programming language and the Unity game engine. It is particularly useful for beginners who want to learn the basics of game development.
Great resource for absolute beginners who want to learn how to use Unity. It covers the basics of Unity, including how to create and manage scenes, objects, and scripts.
Provides a unique and engaging way to learn the C# programming language. It good choice for beginners who want to learn the basics of C# in a fun and interactive way.

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 3D.
Complete C# Unity Game Developer 2D
Most relevant
The Ultimate Guide to Game Development with Unity...
Most relevant
Unity Game Development: Create 2D And 3D Games With C#
Most relevant
Game Design and Development 3: 3D Shooter
Most relevant
Game Design and Development 4: 3D Platformer
Most relevant
RPG Core Combat Creator: Learn Intermediate Unity C#...
Most relevant
Introduction to C# Programming and Unity
Most relevant
Unity and C# basics
Most relevant
Creating Virtual Reality (VR) Apps
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