We may earn an affiliate commission when you visit our partners.
GameDev.tv Team and Nathan Farrer (aka Dapper Dino)

Ever wanted to make your very own multiplayer games? The free Unity Game Engine is making the process easier than it has been with its new Netcode For GameObjects (NGO) framework.

In this course we'll create a multiplayer top-down shooter that you can modify and turn into your own fun creation and play against 20 or more people simultaneously online. In the process you'll learn how to create and deploy a dedicated server with matchmaking.

Read more

Ever wanted to make your very own multiplayer games? The free Unity Game Engine is making the process easier than it has been with its new Netcode For GameObjects (NGO) framework.

In this course we'll create a multiplayer top-down shooter that you can modify and turn into your own fun creation and play against 20 or more people simultaneously online. In the process you'll learn how to create and deploy a dedicated server with matchmaking.

We’ll be making a .io style game (like slither .io and agar .io), that can accommodate dozens of players. Through that process you’ll build the skills to make your own competitive or cooperative multiplayer game in any genre that interests you.

You’ll learn about networking and how to make the game a multiplayer. You’ll start building the core gameplay, making your tanks move, shoot, collect coins etc. Later you’ll add polish and more advanced features like leaderboards, mini maps and bounties.

You’ll take your game online using UGS (Unity Gaming Services) so players can connect over the internet without the need to port forward.

Finally you’ll learn how to make your game deployable as a dedicated server, so none of the players have to host the game. And you’ll learn to integrate matchmaking, so players can queue up, be matched together and a server spun up for them to play on.

You’ll get full lifetime access for a single one-off fee. The creators are qualified and experienced with modelling and coding, so are able to explain complex concepts clearly, as well as entertain along the way.

All students have access to the Q&A where our Instructors, Teaching Assistants and Community are ready to help answer your questions and cheer on your success.

Jump in and start creating your own multiplayer game now. You’ll be playing it with your friends in no time.

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Syllabus

Introduction & Setup

In this video (objectives)…

  1. Rick and Nathan welcome you to the course.

In this video (objectives)…

  1. Download Unity Hub and Visual Studio Code, including the extensions for C# and Unity Code Snippets.

Read more

In this video (objectives)…

  1. We learn about how online multiplayer games work behind the scenes and discuss how we are going to structure our project.

In this video (objectives)…

  1. We download and install the packages that we will need for our NGO project.

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.

In this video (objectives)…

  1. Nathan introduces you to the section of the course where you’ll be creating the Core Gameplay features.

In this video (objectives)…

  1. We import graphical assets for our game that we can use for the player, pickups, and terrain.

In this video (objectives)…

  1. We create a script to handle reading input that we can then use to control our tank’s movement and firing.

In this video (objectives)…

  1. We give clients authority over their movement as lag compensation and client-side prediction for movement is beyond the scope of this course. Everything else will be server authoritative.

In this video (objectives)…

  1. We create the tank’s movement script that we drive via a rigidbody to handle physics collisions for us as well as adding the ability to turn with the A and D keys.

In this video (objectives)…

  1. We create the tank’s aiming script that will rotate the barrel to face the mouse cursor ready for firing.

In this video (objectives)…

  1. We create networked and dummy projectiles ready to be fired in the next lecture.

In this video (objectives)…

  1. We create a script to handle firing dummy projectiles for the clients and real projectiles for the server.

In this video (objectives)…

  1. We re-visit our projectile firing script and make some improvements to fire rate and collisions.

In this video (objectives)…

  1. We create the health script that we can use for our players as well as any non-player objects that need to be able to take damage.

In this video (objectives)…

  1. We create a script to display health above our players that updates whenever the health script’s event is invoked.

In this video (objectives)…

  1. We create a script for the server-side projectile that deals damage if it collides with a gameobject that as the health script.

In this video (objectives)…

  1. We create the base coin script that we can then inherit for respawning and bounty coins.

In this video (objectives)…

  1. We create the Coin Wallet component to handle storing and collecting coins for our players.

In this video (objectives)…

  1. We create a Coin Spawner script that spawns all the initial coins in when the game starts and also handles re-spawning them when they are picked up.

In this video (objectives)…

  1. We take time this lecture to start creating our gameplay map and highly encourage you to create your own assets/design your own map.

In this video (objectives)…

  1. We add a cost to firing, some particle effects, and improve our fire-rate logic to be more robust.

In this video (objectives)…

  1. Nathan introduces you to the section of the course where you’ll be getting connected to other players online.

In this video (objectives)…

  1. We create the main menu scene and UI for our game.

In this video (objectives)…

  1. We create an entry point for our networking logic that creates the necessary managers depending on whether we are a client, server, or host.

In this video (objectives)…

  1. We create a script to handle authenticating our players with UGS before letting them move to the main main scene.

In this video (objectives)…

  1. We revisit out authentication wrapper and implement error handling as well as making the script more robust.

In this video (objectives)…

  1. We set up our project to be able to use Unity’s Relay service so that people can connect to our game without the need to port-forward to allow external connections.

In this video (objectives)…

  1. We allocate a Relay when a player starts hosting a game.

In this video (objectives)…

  1. We implement the ability to join a Relay created server by entering a join code that lets us connect.

In this video (objectives)…

  1. We create the UI to display all active lobbies that we can then use to join a selected lobby.

In this video (objectives)…

  1. We write the logic to create a lobby when allocating a relay.

In this video (objectives)…

  1. We query active lobbies to display in a list that players can click to connect to.

In this video (objectives)…

  1. We add a screen for players to enter their display name before changing to the main menu scene.

In this video (objectives)…

  1. We create a method that handles receiving data from clients when they try connecting to the server.

In this video (objectives)…

  1. We create methods to handle network events that are triggered when clients connect/disconnect to the server.

In this video (objectives)…

  1. We make some networking improvements including being able to enter play mode from any scene and it will automatically switch to the bootstrap scene.

In this video (objectives)…

  1. We properly handle what happens when the the application shuts down so everything can be cleaned up.

In this video (objectives)…

  1. Nathan introduces you to the section of the course where you’ll be returning to implement more gameplay features such as a leaderboard and minimap.

In this video (objectives)…

  1. We give each player prefab their own camera that follows their tank around the map.

In this video (objectives)…

  1. We create a script to read each player's name on the server and sync that to clients to display on their UI.

In this video (objectives)…

  1. We create spawn points that we can place in our gameplay scene and the server will assign players to these spawn points when they join the game.

In this video (objectives)…

  1. We handle the event that is triggered when a player is killed to then respawn them at a random spawn point in the scene.

In this video (objectives)…

  1. We create the leaderboard UI and start writing the script that will populate and manage it.

In this video (objectives)…

  1. We create our own custom data type that can be synced over the network.

In this video (objectives)…

  1. We listen for when players are spawned/despawned and add/remove them from the leaderboard.

In this video (objectives)…

  1. We update the leaderboard entities to display the names of each player in the match.

In this video (objectives)…

  1. We listen for when players gain/lose coins and update the leaderboard accordingly.

In this video (objectives)…

  1. We make the final adjustments to the leaderboard by adding sorting and showing/hiding based on how many players are in the match.

In this video (objectives)…

  1. We make players lose a portion of their coins on death.

In this video (objectives)…

  1. We drop a portion of your coins on the floor as bounty coins when defeated.

In this video (objectives)…

  1. We start creating healing zones in the scene where players can go to and spend coins to restore health.

In this video (objectives)…

  1. We finish creating healing zones which will heal players until they run out of charge, after which they will start a cooldown before being able to heal again.

In this video (objectives)…

  1. We create a minimap that will help players navigate the game a lot easier as they can see where other players are as well as healing zones.

In this video (objectives)…

  1. We wrap up the section by making some small improvements to various features that we’ve worked on over the recent lectures.

In this video (objectives)…

  1. Nathan introduces you to the section of the course where you’ll be setting up your project to be deployed as a dedicated server on UGS along with integrating matchmaking.

In this video (objectives)…

  1. We learn about dedicated servers and plan how we’re going to set up our project to be deployed to UGS Game Server Hosting.

In this video (objectives)…

  1. We import a few wrapper classes that will make our lives much easier when trying to interact with the UGS API’s.

In this video (objectives)…

  1. We get our project ready for UGS hosting by creating our own dedicate Linux server build.

In this video (objectives)…

  1. We use the online UGS dashboard to deploy our server build to their “Game Server Hosting”.

In this video (objectives)…

  1. We create the UI that will display a player’s time in queue, their queue status, and buttons to start/stop queuing.

In this video (objectives)…

  1. We use the matchmaking UI we created to put a player into the matchmaking queue when they hit the button on the main menu.

In this video (objectives)…

  1. We handle what happens when UGS returns a matchmaking ticket to for either joining a match or rejecting if there was an issue.

In this video (objectives)…

  1. We set up our game server to handling backfilling players when there is room for more players to join.

In this video (objectives)…

  1. We are finally able to test our matchmaking system using our deployed dedicated server build on UGS.

In this video (objectives)…

  1. We make a few changes to our matchmaking system to make it display the time in queue and to make it more robust.

In this video (objectives)…

  1. We add some VFX to our tank so it will leave behind a trail of track marks on the ground as well as smoke coming out from behind.

In this video (objectives)…

  1. We make sure our dedicated server is running healthily on UGS so that it can stay up for prolonged periods of time without crashing.

In this video (objectives)…

  1. We revisit some of our code that can cause errors in certain edge cases and make sure to handle them correctly.

In this video (objectives)…

  1. Nathan introduces you to the section of the course where you’ll be creating a second matchmaking queue with teams so that players can work together to achieve victory.

In this video (objectives)…

  1. We add the ability for players to queue up for either solo or team queue and allow them to make their hosted lobbies either public or private.

In this video (objectives)…

  1. We adjust the code that the server executes when players join/leave a matchmade game to properly handle team assignment.

In this video (objectives)…

  1. We assign different colours to each team and change the renderer colour for the tanks to match the team colour.

In this video (objectives)…

  1. We allow projectiles to pass through players that are on the same team as us.

In this video (objectives)…

  1. We add a second leaderboard to display the team scores when playing a matchmade team game.

In this video (objectives)…

  1. We're finished with the course - good luck with your online multiplayer projects, and please share what you come up with!

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Uses Unity's Netcode for GameObjects (NGO) framework, which simplifies the creation of multiplayer games within the Unity engine, making it more accessible to developers
Covers the creation and deployment of dedicated servers with matchmaking, which is essential for creating scalable and engaging online multiplayer experiences for a large number of players
Explores Unity Gaming Services (UGS) for connecting players over the internet, which removes the need for port forwarding and simplifies the process of getting players into the game
Focuses on server authoritative gameplay, which is a common practice in multiplayer game development to prevent cheating and ensure fair gameplay for all players involved
Requires downloading Unity Hub and Visual Studio Code, which are standard tools in the game development industry, but may require some initial setup for new users
Client-side prediction for movement is beyond the scope, which may result in a less responsive feel for player movement compared to games that implement client-side prediction

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Unity multiplayer game development with ngo & ugs

According to learners, this course offers a solid introduction to building online multiplayer games using Unity's Netcode For GameObjects (NGO) and Unity Gaming Services (UGS). Students appreciate the practical, hands-on project that guides them through creating an .io-style game. The course covers essential topics like core gameplay networking, connecting players via Relay and Lobby services, and even setting up dedicated servers and matchmaking. While the topic is inherently complex and the technologies used are relatively new, many find the instructors' explanations clear. Some students note that the course provides a strong foundation but may require further study or troubleshooting due to the evolving nature of NGO/UGS, which can lead to occasional outdated sections or technical challenges.
Some topics are noted as out of scope.
"Noted that client-side prediction for movement is beyond the scope, which is important for smoothing."
"Covers the core but you'll need to explore optimization and advanced techniques elsewhere."
"While comprehensive, some advanced networking concepts are not covered in depth."
"The focus is on getting the game running, not necessarily deep dives into every network challenge."
Best with existing Unity/C# skills.
"Definitely recommended to have some prior Unity and C# experience before tackling this."
"While it explains networking, you need basic game dev skills to keep up with the project."
"This isn't a beginner course for Unity; it assumes you know the basics."
"Having a good grasp of C# and Unity fundamentals is essential."
NGO/UGS are new and can change.
"Since NGO and UGS are relatively new, expect things to change and potentially need troubleshooting."
"Some parts were slightly outdated due to updates in the Unity services since the course was made."
"Using a new framework means there might be bugs or documentation changes to deal with."
"Keep in mind the tech is still developing, so some things might behave differently now."
Instructors explain complex topics well.
"Rick and Nathan do a great job explaining complex networking concepts clearly."
"The instructors break down difficult subjects into manageable steps."
"Explanations are easy to follow, even for someone relatively new to networking."
"I found the instructors very knowledgeable and good at teaching."
Includes dedicated servers & matchmaking.
"Getting into dedicated servers and matchmaking was a huge plus, not many courses cover this."
"I was impressed that it goes beyond basic P2P and shows how to deploy a dedicated server."
"The sections on UGS, Relay, and Lobby were particularly valuable for real-world deployment."
"Setting up matchmaking is a complex topic, and the course handles it well."
Hands-on approach building a full game.
"The practical project of building an .io game is a great way to learn networking concepts by doing."
"I loved the hands-on approach; it helped solidify my understanding of NGO."
"Creating a complete game from scratch was challenging but incredibly rewarding and practical."
"The course guides you step-by-step in making a real, playable multiplayer game."

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 Make Online Games Using Unity's NEW Multiplayer Framework with these activities:
Review C# Fundamentals
Solidify your understanding of C# syntax and programming concepts before diving into Unity's multiplayer framework.
Browse courses on C# Scripting
Show steps
  • Review C# tutorials and documentation.
  • Practice writing basic C# scripts.
  • Experiment with variables, loops, and functions.
Read 'Unity Game Development Cookbook'
Use this book as a reference for solving specific problems encountered during the course.
Show steps
  • Browse the table of contents.
  • Identify relevant recipes.
  • Implement the solutions in your project.
Review 'Game Programming Patterns'
Learn about common game programming patterns to improve your code structure and design.
Show steps
  • Read chapters relevant to game architecture.
  • Identify patterns applicable to the course project.
  • Consider how to implement these patterns.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Simple Multiplayer Pong
Build a simple multiplayer Pong game to practice the concepts learned in the course.
Show steps
  • Create a basic Pong game in Unity.
  • Implement networking using Unity's Netcode.
  • Add basic player movement and ball synchronization.
  • Test the game with two players.
Document Your Learning Journey
Create a blog or video series documenting your progress and challenges while taking the course.
Show steps
  • Choose a platform for your content.
  • Document your learning process.
  • Share your insights and challenges.
  • Engage with other learners.
Contribute to a Unity Netcode Project
Contribute to an open-source project that uses Unity's Netcode for GameObjects to deepen your understanding.
Show steps
  • Find an open-source Netcode project.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.
Optimize Tank Movement
Improve the tank movement script to reduce latency and improve responsiveness.
Show steps
  • Profile the tank movement code.
  • Identify areas for optimization.
  • Implement client-side prediction.
  • Test the improved movement.

Career center

Learners who complete Make Online Games Using Unity's NEW Multiplayer Framework will develop knowledge and skills that may be useful to these careers:
Game Developer
A game developer designs and codes video games for various platforms. This course helps build a foundation for creating multiplayer games using Unity's Netcode For GameObjects framework, which is directly applicable to a game developer's role. You will learn to implement core gameplay mechanics, networking, and online matchmaking. The course specifically focuses on creating a multiplayer top-down shooter, providing hands-on experience in developing features like tank movement, shooting, collecting coins, leaderboards, and mini maps. Furthermore the course teaches server deployment and the use of Unity Gaming Services. If you are interested in becoming a game developer, this course is a great starting point.
Multiplayer Programmer
The multiplayer programmer specializes in developing the networked aspects of video games. This course provides targeted skills in creating multiplayer functionality within Unity. It covers essential topics such as networking, server deployment, and matchmaking using Unity Gaming Services. The course's hands-on project of building a multiplayer top-down shooter will provide you experience with client-server communication, handling player connections, and implementing real-time gameplay features. The course also allows you to learn how to create and deploy a dedicated server. Aspiring multiplayer programmers should consider that this course offers practical experience building and deploying networked games.
Unity Developer
A Unity developer uses the Unity engine to create games and interactive experiences. This course centers around using Unity's Netcode For GameObjects framework to build a multiplayer game, which helps solidify your Unity development skills. It covers core concepts such as scripting, asset integration, UI design, and networking. The course project involves creating a complete .io style multiplayer game, giving you hands-on experience with game mechanics, online connectivity, and server deployment. This practical, project-based approach is valuable for anyone looking to become a Unity developer, and the course's focus on multiplayer functionality will set you apart.
Network Programmer
A network programmer focuses on the backend systems that allow games to function online. This course dives into networking concepts using Unity's Netcode For GameObjects framework. It covers how to implement client-server communication, manage player connections, and handle data synchronization. The course also teaches you how to deploy a dedicated server using Unity Gaming Services and integrate matchmaking functionality. The skills taught in this course, such as handling network events and optimizing network performance, are directly relevant to a network programmer's role. This course may be particularly helpful for those who want to gain practical experience with building and deploying networked game systems.
Game Server Developer
A game server developer specializes in creating and maintaining the backend servers that power online games. This course teaches you how to deploy a dedicated server for a Unity game using Unity Gaming Services. You will learn how to configure the server, handle player connections, and manage game state. The course also covers integrating matchmaking functionality, which is essential for creating a smooth online gaming experience. Furthermore, you will be able to build a .io style multiplayer game. Game server developers should consider this course to build a solid understanding of game server architecture and deployment.
Gameplay Programmer
A gameplay programmer focuses on implementing the rules, mechanics, and interactions within a game. This course helps solidify your skills in implementing core gameplay features in Unity. The course project involves creating a multiplayer top-down shooter, where you will implement tank movement, shooting mechanics, coin collection, and health systems. You will also learn how to add polish to the game with features like leaderboards, mini maps, and bounties. Aspiring gameplay programmers can benefit from this course by gaining hands-on experience with creating and implementing a variety of gameplay mechanics in a multiplayer context.
Software Engineer
A software engineer designs, develops, and tests software applications. This course offers a practical application of software engineering principles within the context of game development. The course project involves building a complete multiplayer game using Unity and C#, which helps solidify your programming skills. You will learn how to structure a project, implement algorithms, manage data, and debug code. The focus on networking and server deployment also introduces you to distributed systems concepts. Aspiring software engineers should consider this course to apply their skills to a specific project and gain experience with a popular game development framework.
Backend Developer
A backend developer focuses on the server-side logic and infrastructure that powers applications. This course teaches you how to deploy a dedicated server for a Unity game using Unity Gaming Services. You will learn how to configure the server, handle player connections, and manage game state. The course also covers integrating matchmaking functionality, which is essential for creating a smooth online gaming experience. Aspiring backend developers can use this course to gain hands-on experience with server deployment and management in a gaming context. You may find this helpful in bolstering your skills.
Tools Programmer
A tools programmer develops software that helps other developers create games more efficiently. While this course doesn't directly focus on tool development, it does provide insights into the game development process and the challenges that developers face. By building a complete multiplayer game from scratch, you will gain a better understanding of the tools and workflows that developers use. This understanding can inform your approach to creating tools that address specific needs and improve productivity. Those wanting to become tools programmer may find that this course helps you emphasize with the needs of game developers.
Simulation Engineer
A simulation engineer develops and maintains simulations for various applications. The course's focus on creating networked gameplay may be useful. By building a multiplayer game, you gain experience in simulating real-time interactions between multiple entities. This could be relevant to simulating complex systems in other domains, such as robotics or finance. Those looking to become simulation engineers may find value in applying game development techniques to simulate complex systems.
Web Developer
Web developers create and maintain websites and web applications. While this course primarily focuses on game development using Unity, some of the skills learned may be transferable to web development. For example, the course covers networking concepts, which are also relevant to building web applications. Also helpful is experience in building user interfaces and handling user input, skills applicable to the web. Those who seek to become web developers may find that this course helps to broaden their technical skill set.
Mobile App Developer
Mobile app developers create applications for smartphones and tablets. This course focuses on game development using Unity, which can be used to create mobile games. The skills you learn in this course, such as scripting, asset integration, and UI design, are all directly applicable to mobile game development. You may find mobile development to be enjoyable after a deep understanding of the content of this course. If you are already working on mobile apps, this gives you a chance to pivot to mobile games.
Quality Assurance Tester
A Quality Assurance Tester identifies and documents defects in software. The course helps you understand the game development process, including the different stages of development and the types of issues that can arise. By building a complete multiplayer game, you will gain insights into the complexities of game development, which can inform your approach to testing and identifying defects in your job as a tester. A Quality Assurance Tester may find this course helpful in providing a holistic view of game development.
Project Manager
A project manager plans, organizes, and oversees the completion of specific projects. This course covers the entire game development lifecycle, from initial concept to deployment and ongoing maintenance. By building a complete multiplayer game, you will gain experience with managing tasks, coordinating team members, and meeting deadlines. Those aspiring to become project managers in the tech field, or seasoned project managers in other fields, may find this course to be useful.
Technical Writer
A technical writer creates documentation for software and hardware products. While this course doesn't directly focus on technical writing, you learn about the process of creating a multiplayer game and the various technologies involved, such as Unity, C#, and networking protocols. The course also provides you with a deep understanding of the technical aspects of game development. You may find this course useful in providing a solid foundation for writing technical documentation for game development tools and technologies.

Featured in The Course Notes

This course is mentioned in our blog, The Course Notes. Read one article that features Make Online Games Using Unity's NEW Multiplayer Framework:

Reading list

We've selected two 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 Make Online Games Using Unity's NEW Multiplayer Framework.
Provides a catalog of useful design patterns specifically tailored for game development. It offers solutions to common problems encountered when building games, such as object management, state handling, and AI implementation. While not directly focused on multiplayer, the patterns described are highly applicable to structuring and organizing code in a networked game environment. This book is valuable as additional reading to improve code quality and maintainability.
This cookbook provides practical solutions to common game development problems in Unity. It covers a wide range of topics, including scripting, physics, UI, and networking. While it may not delve deeply into the specifics of Netcode for GameObjects, it offers valuable insights into general Unity development practices. is useful as a reference tool for solving specific problems encountered during the course.

Share

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

Similar courses

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser