Unity 2D Dungeon Gunner Roguelike Development Course
- Descrição
- Currículo
- FAQ
- Revisões
Have you ever wanted to build a 2D Roguelike game using the Unity game engine like ‘Enter The Gungeon’ or ‘The Binding of Isaac’?
Well with this course you can!
The course and underlying project have taken several thousand hours to develop, but all that knowledge will be transferred to you step by step, lecture by lecture. The course is massive with over 50 hours of detailed video tutorials spread over more than 160 lectures. This has to be one of the most complete and sophisticated Unity 2D development courses available.
We’ll take you through every line of code and every configuration step, from a blank Unity project to a fully functional and complete game. The game is built in a modular and expandable way, and uses best practice coding techniques like events to decouple the interdependencies in the code. The project has been built under GIT source control, so you can easily load the supplied completed course at a save point for every lecture.
The game is sophisticated, and goes far beyond what most Unity courses will ever attempt to teach you. The course covers :
-
Creating a node editor tool to build dungeon level layouts
-
Procedural random dungeon generation
-
Multiple game levels
-
2D lighting using the Unity Universal Render Pipeline
-
A UI minimap
-
A dungeon overview map with player teleporting
-
Multiple player characters
-
A range of weapons and ammunition types
-
Multiple enemy characters
-
Particle system special effects
-
Shader graph material effects
-
AStar enemy pathfinding
-
Enemy weapon firing AI
-
Enemy ammo patterns
-
Lootable Chests
-
Flippable tables for cover
-
Sound effects
-
and Game music
This is just a selection of what you’ll learn, and all the assets you’ll need to complete the course and produce a fully functional and polished game are included. The concepts you’ll learn will help you create your own game that you can tailor to match your game development vision.
So fasten your seatbelts and prepare yourself for a Unity game development journey like no other, and at the end of this course I’m confident that your Unity game development skills will be levelled up, and that you’ll be able to create better and more sophisticated games on your own.
So why not join me in this course, and build your own Dungeon Gunner 2D Roguelike in Unity. I really hope you do, and I look forward to seeing you in the course.
-
2Unity And Visual Studio InstallationVídeo Aula
In this lecture we'll cover Unity installation, and ensure that the correct version of Unity is installed for the course. We'll also cover how to install the Microsoft Visual Studio IDE for code editing. We'll also download the completed Unity project for the course that you can use as your reference for every lecture.
-
3Course Project And GIT ClientVídeo Aula
In this lecture we'll cover how you can install a GIT client called Sourcetree. We'll show you how you can use Sourcetree to load the 'GIT' branches that correspond to every lecture. Every GIT branch corresponds to the Unity project saved at the end of the lecture - so you can review the completed course lecture by lecture. We'll also suggest how you can use the supplied completed project alongside your project that you create for the course, including using file comparison tools such as DiffMerge.
-
5Initial Project Creation & SetupVídeo Aula
The objective for this lecture is to create an empty Unity project from scratch to use in the course, make sure we have the required Unity packages installed, and also to import the CourseAssets into the project ready for use throughout the course.
-
6Course Assets WalkthroughVídeo Aula
The purpose of this lecture is to walk through and review the CourseAssets that you imported in the previous lecture.
-
7Dungeon Creation Design OverviewVídeo Aula
The purpose of this lecture is to explain at a high level how dungeons will be constructed in the game, and how we'll implement a room node editor to support this.
-
8Create A Simple Editor WindowVídeo Aula
In this lecture we are going to start by creating a simple editor window. The editor won’t do anything at this stage apart from display 2 ‘dummy’ nodes drawn by the editor. Once we are comfortable with the basics, we’ll start extending the editor step by step until we get the functionality for a complete room node editor.
-
9Room Node Graphs and Room Nodes OverviewVídeo Aula
In this lecture we are going to create the scriptable object classes that will be used to store Room Node Graphs and Room Nodes. We’ll also create a scriptable object class to store the room node types in, and a class to store a list of these room node types.
In addition we’ll create a helper class that we’ll start adding validation checking methods to, to help us make sure that serialised data, like in scriptable objects, is populated correctly. As we add more scriptable object assets to hold data, having some validation to alert us of missing data becomes more and more important. If we don’t do this, and forget to populate required data then our code is likely to error. This results in time wasted trying to track down why.
-
10Creating A Room Node With The EditorVídeo Aula
In this lecture we are going to continue building our room node editor, step by step. We’ll also create a central repository for game resources so that different classes that need to access these resources can do so easily.
-
11Dragging Room Nodes In The EditorVídeo Aula
The purpose of this lecture is to allow the room nodes to be repositioned by dragging them in our new room node editor.
-
12Connecting Lines Between Room NodesVídeo Aula
In this lecture we are going to add connecting lines between the room nodes in our room node editor. We’ll start by adding the ability to drag connections between one node and another, we’ll create parent and child relationships between room nodes, and we’ll draw connection lines between room nodes that have already been connected.
-
13Entrance Node and Selected Node StyleVídeo Aula
In this lecture we are going to automatically create the entrance room node when the first node is created on the room node graph. Nodes that have been connected will be ‘locked’ so they can’t be changed. We are also going to create another GuiStyle to use when a room node is selected.
-
14Room Node Connections ValidationVídeo Aula
In this lecture we are going to add validation when we connect together room nodes. This validation will prevent invalid connections – like connecting the same child node to a parent more than once. We’ll also add validation that supports our dungeon room layout design constraint of only having one parent for every child.
-
15Selecting All Room NodesVídeo Aula
The purpose of this lecture is to allow all room nodes to be selected on the graph using the right click context menu.
-
16Deleting Rooms and ConnectionsVídeo Aula
In this lecture we are going to add the functionality to allow the connections between selected room nodes to be deleted, and to allow selected room nodes themselves to be deleted. This will allow us to better maintain and amend the dungeon room node graphs that we create.
-
17Drag Canvas & Draw Canvas GridVídeo Aula
The purpose of this lecture is to add functionality to allow the canvas to be repositioned by dragging it. This is needed if we have a large dungeon room node graph that won’t easily fit on one screen. We’ll also add a grid background to the canvas to give some visual context when we drag the graph.
-
18Create Dungeon Layout Room GraphsVídeo Aula
In this lecture we are going to put the room node graph editor to good use. The game will have 6 levels, so we are going to create multiple room node graphs for each level. In the future the dungeon algorithm will randomly select a room node graph for the level, and then use it to layout the dungeon rooms.
-
19Cinemachine And Pixel PerfectVídeo Aula
In this lecture we are going to talk about some components and concepts that we’ll come across during setting up the main game scene, namely, the cinemachine component, the pixel perfect component, and orthographic size.
-
20Create The Main Game SceneVídeo Aula
So up until now we have been working on our dungeon room node graph editor, which is an essential part of our dungeon building, and we have also created room node graphs for our 6 game levels.
In this lecture we are going to move onto setting up the empty main game scene and change some of the project settings in preparation for the next steps in developing the game.
-
21Layers And Sorting LayersVídeo Aula
The purpose of this lecture in to look at layers and sorting layers and using them in 2D games.
-
22Create Base Dungeon Room TemplateVídeo Aula
In this lecture we are going to create a base dungeon room template, using the tilemap layers that we talked about in the previous lecture. We’ll then use this template to make it easier to create our dungeon rooms.
-
23Tilemaps, Tiles, Palettes, and BrushesVídeo Aula
The purpose of this lecture is look in more detail at tilemaps and the tools Unity provides to work with tilemaps. We’ll look at how to create tilemap palettes and tiles, and how tiles are painted onto tilemaps. We’ll take a look at the co-ordinate brush and the random brush that’s supplied as part of the tilemap extras package we installed. We’ll then explore the tiles and palettes that are supplied with the course assets.
-
24Creating Our First Dungeon RoomVídeo Aula
In this lecture we are going to create our first dungeon room using the prefab room template that we created in a previous lecture.
As we create the room I’m going to describe how you should use the different tilemap layers that we have created, and also point out some of the constraints that you should follow when creating dungeon rooms to ensure they will work with the dungeon building algorithm that we are going to create.
-
25Creating Our First CorridorsVídeo Aula
In this lecture we are going to create some corridors to connect together dungeon rooms, using the same principles we used to create dungeon rooms.
-
26Store Details About Room TilemapsVídeo Aula
In this lecture we are going to create a scriptable object class and corresponding scriptable object assets to store information about the dungeon rooms and corridors that we have created.
-
27Import Dungeon Room AssetsVídeo Aula
In this lecture we are going to import some new assets. There are 68 dungeon rooms and corridors supplied in the resources for the lecture that we are going to use in the course to build our game. We’ll import these dungeon room assets in this lecture and review them.
-
28Create Scriptable Objects For RoomsVídeo Aula
In this lecture we are going to create the RoomTemplateSO scriptable object assets for the rooms that we previously created and review the dungeon room assets that we imported in the previous lecture.
-
29Tilemap Tidy UpVídeo Aula
In this lecture we are going to tidy-up a few of the dungeon room tilemaps and assets that we imported in the previous lecture.
-
30Dungeon Builder DemoVídeo Aula
In this lecture we are going to demonstrate the working dungeon builder
-
31Dungeon Builder ConceptsVídeo Aula
In this lecture we are going to discuss the main concepts for the dungeon builder and the algorithm that will be used.
-
32Dungeon LevelsVídeo Aula
In this lecture we are going to create the DungeonLevelSO scriptable object class to enable us to define what room node graphs and what room templates should be available when generating a particular dungeon level.
-
33Create Singleton Abstract ClassVídeo Aula
The purpose of this lecture is to create a Singleton Abstract class that can be used to easily create singleton instances that we can use for our game managers.
-
34Create The Game ManagerVídeo Aula
In this lecture we are going to create our game manager and we’ll initially set up the game manager to call the dungeon builder that will build the dungeon.
-
35Create The Room ClassesVídeo Aula
In this lecture we are going to create the Room class, and create an empty InstantiatedRoom class to populate in a later lecture.
-
36Shader Graph Dungeon Light ShaderVídeo Aula
In this lecture we are going to explore how you can use Unity shader graph to create shaders.
-
37Dungeon Builder Placing RoomsVídeo Aula
In this lecture we are going to create the dungeon builder class. The dungeon builder will select a random room node graph, and process each of the room nodes. For each room node it will select a random room template, and then it will create a room object which it will try and place without overlapping any other rooms to build our complete dungeon level.
-
38Instantiate Dungeon Room TilemapsVídeo Aula
In this lecture we’re going to pull together all of the hard work that we’ve done in the previous lectures. We are going to take the dungeon room objects that we laid out in the previous lecture and for each one we are going to instantiate the corresponding dungeon room tilemap prefab. By doing this we will create the complete dungeon level in our scene of connected dungeon rooms.
-
39Block Off Unused DoorwaysVídeo Aula
In this lecture we are going to add some new methods to the InstantiatedRoom class to block off doorways that are not connected.
-
40Initial Player ClassesVídeo Aula
In this lecture we'll create the initial player classes.
-
41The Player PrefabVídeo Aula
In this lecture we are going to create the base player prefab. The player prefab will be structured to allow the player to use a weapon and to support the various animations that we will implement for the player. As we develop the player capabilities in this course we’ll add more components to the player prefab to provide the required functionality.
-
42The Thief Player Prefab VariantVídeo Aula
In this lecture we are going to create a prefab variant for a new player character, which we are going to call The Thief. We’ll import the sprites that we need for the thief character and we’ll set up the animator controller for the character from scratch, ready to create the character animations.
-
43Set Up The Thief AnimationsVídeo Aula
In this lecture we’re going to create the animations for the thief player character, using the Sprite sheets that we imported in a previous lecture and the empty animation clips that we created and added to the animator controller. By the end of this lecture will have all the animations set up for the thief player character.
-
44Set Up The General Character PrefabVídeo Aula
In the previous lectures we set-up the animator controller and animations from scratch for The Thief character. We have another two playable characters for this game which we will set-up in the next two lectures. Rather than set-up these characters from scratch we are going to use the animator controllers and animations supplied with the course assets, so the set-up process is going to be very quick. In this lecture we are going to focus on setting up The General character prefab variant.
-
45Set Up The Scientist PrefabVídeo Aula
In the previous lecture we set-up The General character prefab variant. In this lecture we are going to follow exactly the same process and set-up The Scientist character prefab variant using the animator controller and animation clips supplied with the course assets.
-
46Disable Weapon During Thief RollVídeo Aula
In this lecture we are going to make sure that the weapon isn’t active during The Thief roll animations.
-
47Instantiate Player In DungeonVídeo Aula
In this lecture we are going to create the player details scriptable object assets for the Thief, the General, and the Scientist, and we are also going to create the current player scriptable object asset to reference the active player character.
We’ll also create a script to populate the cinemachine target group with the player position so that the camera follows the player. We’ll instantiate the current player prefab in the dungeon entrance room, and then check the cinemachine camera now follows the player.
-
48Publishers, Subscribers, And EventsVídeo Aula
In this lecture we explain the Publisher Subscriber Design Pattern and how we are going to use it in the game.
-
49Player Idle And Aim WeaponVídeo Aula
The purpose of this lecture is to enable the player to aim a weapon while idle in the direction of the mouse cursor.
-
50Custom Screen CursorVídeo Aula
The purpose of this lecture is to implement a custom screen cursor to replace the default mouse cursor.
-
51Player MovementVídeo Aula
The purpose of this lecture is to add up, down, left and right movement for the player using the keyboard.
-
52Player Dodge RollVídeo Aula
In this lecture we are going to add the player dodge roll move and animation when the right mouse button is held down while one of the movement keys is pressed.
-
53Cinemachine Target GroupVídeo Aula
In this lecture we are going to improve the way that Cinemachine tracks our gameplay. At the moment Cinemachine only tracks the player – when we move the player on the screen, the cinemachine camera will follow. But this isn’t ideal for a dungeon shooter game – we want to be able to look around the dungeon surrounding the player to see if any enemies are approaching. So we are going to do this by extending the cinemachine target group that we created in a previous lecture to include the screen cursor as well as the player.
-
54Create Door PrefabsVídeo Aula
The dungeon doors will be added to the room doorways, and they will start off closed and will open when the player approaches them, allowing them to enter a room.
In future sections of the course, when we add enemies to the game, the doors will lock the player in a room until all the enemies in that room are defeated. Doors to Boss Rooms will stay locked until all the other rooms in the level have been cleared of enemies.
In this lecture we are going to create the door prefabs that can be instantiated in the dungeon rooms. The Door prefabs will have animations for the doors opening and closing. We’ll have 2 door prefabs – one for north / south doorways, and one for east / west doorways.
-
55Instantiate Doors In DungeonVídeo Aula
In this lecture we are going to use the door prefabs that we created in the previous lecture. We are going to automatically instantiate the doors in the dungeon rooms when we generate the dungeon.
-
56Open, Lock, And Unlock DoorsVídeo Aula
In this lecture we’ll create a new door class that will control the opening, locking and unlocking of the dungeon doors.
-
57Fade In Doors And RoomsVídeo Aula
In this lecture we are going to implement functionality to fade in the dungeon doors and rooms. Apart from the entrance room where the player starts, all other dungeon rooms and their dungeon doors will start off by not being visible to the player. Instead the doors and rooms will fade in to become visible as the player approaches them. By doing this we give the sense that rooms are initially unexplored, and only allow the player to see dungeon rooms once they have been visited.
-
58Collision Matrix & Animator SpeedVídeo Aula
In this lecture we are going to start setting up the 2D collision matrix in the project settings, and we are also going to update the player animator to vary the player animation speed based on the player movement speed.
-
59Object Pooling ConceptsVídeo Aula
In this lecture we are going to look at the concepts behind Object Pooling, and explain why it's a useful technique to help improve performance for some games.
-
60Object Pool Manager ApproachVídeo Aula
In this lecture we are going to take the concepts of Object pooling and talk about how we are going to implement an object pool manager in the game using queues for the object pools, and a dictionary to hold all the object pool queues that we define so that they can be accessed easily.
-
61Object Pool Manager ImplementationVídeo Aula
In this lecture we are going to implement the Pool Manager functionality in our game, so that we can use it to manage any prefabs that we want to create an object pool for in the rest of the course.
-
62Object Pooling DemoVídeo Aula
In this lecture we are going to demo the Pool Manager by creating some test code that places enemy prefabs that are created in the object pool in the dungeon.
-
63Weapon And Ammo ClassesVídeo Aula
In this lecture we are going to talk about Weapon and Ammo Classes we'll be using to support the player shooting functionality, and how they fit together.
-
64Emission Shader & Ammo MaterialsVídeo Aula
In this lecture we are going to review the emission shader that has been provided in the course assets and look at how it is being used to create materials used for the ammo that enable the HDR intensity to be increased to cause the ammo to glow.
-
65Create PistolVídeo Aula
In this lecture we are going to create weapon details for the Pistol which is the starter weapon for the General.
-
66Create Pistol AmmoVídeo Aula
In this lecture we are going to create ammo details for the Pistol which is the starter weapon for the General.
-
67Dungeon Room AmendmentsVídeo Aula
In this lecture we are going to update some incorrect values in the Dungeon Room scriptable object assets.
-
68Set Player Starting WeaponVídeo Aula
In this lecture we are going to set the pistol as the starting weapon for the General and the Thief characters.
-
69Player Shoot PistolVídeo Aula
In this lecture we are going to implement the core functionality to allow the player to actually fire the Pistol starter weapon.
-
70Weapon ReloadingVídeo Aula
In this lecture we are going to implement the functionality to allow the player to reload weapons.
-
71Create Revolver Weapon and AmmoVídeo Aula
In this lecture we are going to create a new revolver weapon and ammo for the player.
-
72Weapon PrechargingVídeo Aula
So for some weapons – like the plasma blaster and laser blaster we are going to have the weapons ‘precharge’ before firing – this means there will be a small delay between the fire button being held down and the weapon firing.
So in this lecture we are going to implement this precharge functionality.
-
73Create Plasma Blaster and AmmoVídeo Aula
The purpose of this lecture is to create the Plasma Blaster Weapon And Ammo for the Scientist to use as their starter weapon. We will also implement an ammo trail to give the plasma ammo a laser like effect.
-
74Weapon Status UIVídeo Aula
The purpose of this lecture is to create a weapon status UI that displays the current weapon sprite and name, the total remaining ammo, the ammo remaining in the ammo clip, and the weapon reload status including a weapon reload progress bar.
-
75Switching Player WeaponsVídeo Aula
The purpose of this lecture is to add the functionality to allow the player to switch between the weapons that are in their weapons list. They can do this by either using the mouse scroll wheel, or by pressing a number key on the keyboard. The player will also be able to move the selected weapon to the front of the weapons list.
-
76Create Sniper Rifle and AmmoVídeo Aula
The purpose of this lecture is to create the Sniper Rifle and Sniper Rifle ammo.
-
77Create MP7 Weapon and AmmoVídeo Aula
The purpose of this lecture is to create the MP7 sub machine gun weapon and amoo.
-
78Create Laser Blaster Weapon and AmmoVídeo Aula
The purpose of this lecture is to create the Laser Blaster weapon and ammo.
-
79Create SMG Weapon and AmmoVídeo Aula
The purpose of this lecture is to create the SMG weapon and ammo.
-
80Review Shader Graph Flame ShaderVídeo Aula
The purpose of this lecture is to review the Shader Graph Flame Shader provided in the course assets to understand how it works and is created. This will be used in the next lecture to create a flame trail for the rocket propelled grenade ammo.
-
81Create Rocket Launcher and AmmoVídeo Aula
The purpose of this lecture is to create the rocket launcher and the rocket launcher ammo. For the rocket ammo we'll use the flame shader material to give the rocket a flame trail.
-
82Multiple Shot Weapon FunctionalityVídeo Aula
The purpose of this lecture is to add the functionality to be able to spawn multiple ammo simultaneously - to use with weapons such as a shotgun.
-
83Create Shotgun and AmmoVídeo Aula
The purpose of this lecture is to create the shotgun and the shotgun ammo which will use the multiple shot functionality created in the previous lecture.
