
Learn to maximize this course through Q&A usage, research, and the Discord community, then build an RPG in Unity with dialogue, inventory, quests, save/load, and a battle system.
Download Unity Hub, install Unity, and set up Visual Studio Community 2019 or newer for this course. Choose official releases, add modules for Android, iOS, WebGL, and view Unity documentation.
Discover how Unity and Visual Studio work together as a cross platform game engine and IDE, and learn how mono behavior scripts use start and update to control game objects.
Create your first Unity project, add an empty game object, and write a C# script to print 'Hello World' to the Unity console using Start and Update.
Design and implement a turn-based RPG world with tile maps, quests, dialogue, inventory, and shop systems, plus a progression of experience and upgrades, framed by a demon-driven story.
Master version control using source tree and Git to create a Unity project repository, commit changes, revert edits, and apply a dot gitignore to exclude library files.
Create a new 2D Unity project for Legends of Conquest to the RPG, import a background and demon sprite, and slice a sprite sheet for a sprite renderer.
Master dynamic sprite rendering with sorting layers in Unity, creating background and player layers and configuring order in layer. Set up a repository and ignore library files.
Learn to add physics to your Unity 2D game by attaching a collider and a rigid body to the player, and explore dynamic, kinematic, and static modes for gravity-driven interactions.
Learn to create a Unity player script, attach it to the demon, manage variables with public, private, and serialized field concepts, and obtain a rigidbody reference to move the demon.
Move Jimmy the demon by applying the rigid body velocity with horizontal and vertical inputs in Unity 2D, using the input manager and Vector2 to drive movement.
Learn to build and manage Unity animations with the animator controller and component, creating walking right, left, up, and down clips from sprite frames.
Create idle and walking animations, set default states and transitions, and implement a 2d directional blend tree using movement X and Y to blend directions, while aligning and slicing sprites.
Learn to drive a Unity character’s movement with blend trees by linking movement X and Y to the animator, and implement idling states using last X and last Y.
Remember the last direction the player was facing to keep the demon oriented as you switch from idling to walking using movement X and Y with zero duration.
Adjust the player's move speed with a serialized field and multiply velocity, then implement solid colliders and dynamic rigidbody settings to prevent walking through water, cabbages, and stands.
Learn to use the scene manager to load scenes by name, fix build settings for mountains and town, and preserve the player across scenes, with prefabs to reuse area exits.
Build a singleton pattern by using a public static instance to keep a single player across scenes, destroying duplicates and preserving the original with don't destroy on load.
Keep the player positioned precisely when moving between scenes by using area exit and area enter objects with a shared transition name in Unity.
Master the order of execution for Unity scripts to optimize area transitions with area exit and area enter references, and prevent null reference errors by adjusting script execution order.
Learn to implement a following camera with Cinemachine by installing the package, adding a brain to the main camera, and using a 2D virtual camera to follow the player.
Implement Cinemachine confiner extension to keep the player within map bounds using a polygon collider, and use layer interactions to prevent background colliders from affecting the follow camera.
Paint and assemble a 2D tile map using a tile palette, painting roads, grass, and objects, then add tile map colliders and a composite collider to enable solid interactions.
Learn to bound the camera and clamp the player's position within the tile map in Unity 2D using a polygon collider and local bounds.
Create a second level by making tile assets from sprites, unpacking the grid, and painting the map in a new scene with adjusted tile map bounds and colliders.
Create a level manager to delegate scripts, determine bottom left edge and top right edge from tile maps, and communicate them to the player via a public set limit method.
Create a black image on a canvas, fade it in and out with a canvas group alpha and Unity animations, using animator transitions and a fade start trigger.
Learn to implement smooth scene transitions using coroutines, fading a UI image with an animator, and delaying the next scene load with yield and wait commands.
Create a dialog UI with a dialogue panel and name panel, add an NPC healer, and use Text Mesh Pro with a medieval font to anchor text inside.
Use arrays to manage multiple dialogue lines in a Unity dialog controller, wire text mesh pro UI elements for the dialogue and name boxes, and implement 0-based indexing.
Control text dialogue in Unity with the left mouse button and manage the current sentence using an array, guarding against out-of-bounds errors by turning off the dialog box.
Activate the dialog system by passing sentence arrays to the dialogue handler, guard against repeat openings, and track started state to show the first line.
Hold player movement during NPC conversations by toggling a movement boolean and setting the rigidbody velocity to Vector2.zero, then re-enable movement after dialogue.
Learn to display who speaks in dialogue by prefixing lines with a symbol, parsing with starts with and replace in C#, and updating the dialogue controller.
Create a serialized player stats script tracking name, level, xp, hp, mana, dexterity, and defense; initialize Jimmy the Demon with level one, 36 xp, 100 hp, dex 10, defense 30.
Apply for loops in Unity to auto-generate level experience thresholds, with a max level of 50 and an xp per level array based on a base xp of 100.
Explore a dynamic experience progression for RPG levels using the equation Y = 0.2 X^3, where X represents progression steps, replacing fixed increments.
Test a leveling system by adding xp, updating current xp, and advancing the player when xp reaches next level. Use AddExp and a key input like L to trigger leveling.
level up your RPG character in Unity with a dynamic stat system that alternates dexterity and defense and scales max hp and mana per level using modulo checks.
Create a Unity menu panel with a background and five buttons (items, stats, save, clothes, quit), styling with Text Mesh Pro for a polished in-game user interface.
Build a dynamic character info panel in Unity showing hp, mana, current level, current xp, and xp to the next level with a styled slider and sprite.
Toggle the game menu with a single key using a menu manager in Unity. Learn to check the menu's active state, assign the canvas object, and flip visibility in update.
Implement centralized control in the game manager to stop player movement when the menu or dialog opens, using game menu opened and dialog box opened booleans to toggle activate movement.
Bind the player stats to UI elements in the menu manager, updating hp, xp, level, and the character images, and enable the character panels for active players via a loop.
Update the RPG UI by wiring the player's name, hp, mana, level, current xp, and the xp to next level slider using public fields.
Learn to wire UI buttons in Unity to open and close panels, toggle character info, items, and stats, using a menu manager and on-click events.
Build a Unity stats window by arranging a reusable stats panel with player buttons, an image, and labeled HP, mana, dexterity, defense, equipped weapon and armor.
Set up a Unity status panel, wire buttons to player stats, and use get components and children to display name, hp, mana, dexterity, defense, and character image for selected player.
Build an items window featuring an items panel, a dedicated items description with item name and description, and use and discard buttons, organized by a 120 by 120 grid layout.
Learn to build a dynamic inventory in C# by using a list of item managers, store it in a game manager, and add items with a public add items method.
Implement circle colliders and trigger-based pickups to detect the player, destroy collected items, and add them to an inventory while updating the item count.
Instantiate item slots from a prefab and attach them to the item display panel as items are picked up, using a get items list method from inventory.
Update the inventory display by iterating through items to show each item’s sprite and count, instantiate item slots under the display panel, and clear old slots to prevent duplicates.
Learn to implement stackable items in an inventory system, enabling health potions and mana potions to stack while armor remains non-stackable, with an amount display updating the item counts.
Wire up the Unity items menu with an item button script using TextMesh Pro, linking to the items manager to display name and description on click.
Discard items by tracking the active item in the menu manager, printing and removing it from the inventory, and toggling item game objects to support non-destructive discard.
Implement an item usage flow that adds hp or mana via potions, with guarded max values, using a singleton player stats instance and an item manager, and discard after use.
open a character choice panel when using an item, letting you pick from three players via a grid of name buttons, updating active status and names.
Select a character by passing a character index to the items and menu managers. Test hp and mana on Jimmy and Sarah using the chosen character.
Learn to implement an inventory system that equips weapons and armor, updates equipped item names, power and defense stats, and handles swapping items through an item manager in Unity.
Apply changes to the canvas and game manager prefabs, and create a shop scene. Build a tile layout with indoor tiles, set up a grid, tile palette, and add walls.
Design the shop scene UI in Unity, including a shop menu with buy and sell buttons, a value display, and a bitcoin label.
Implement buy and sell flows in a Unity RPG by visualizing shop items and using a reusable update items in shop method with item slot container parent and items.
Build a buy and sell shop system in Unity, updating bitcoins and inventory while refreshing the shop and items user interface through a shop manager.
Develop a Unity-based quest system by implementing a quest manager, quest markers, and an auto-sized boolean array to track completed quests across multiple scenes.
Implement quest number lookup, determine completion, and toggle quest markers with the q key in a Unity RPG, showcasing complete and incomplete states.
Create a quest manager that automatically checks quest completion, toggles quest objects, and makes gems appear or disappear as quests finish, with the Q button.
Learn to activate quests dynamically by entering a quest zone or after talking to an NPC, using triggers, mark-on-enter logic, and quest deactivation to reveal rewards.
Activate and mark quests at the end of dialogue with NPCs by updating the quest manager from the dialogue handler, enabling dynamic questing after healer conversations.
The best way to learn anything is by doing it in a really fun way and this is where this course comes from. If you want to learn how all these incredible games you see are made there is no better place to start than this course. We made sure that this course has everything you need to take you from a beginner (even with zero codding experience) and slowly take you to intermediate level
I chose the main project in this course to be a 2D RPG because it not only has a vast library of game development concepts that we can implement and learn, but also because it's very simple (especially if you are a beginner) to delve in and get started on your game development journey.
Everything in this course has been meticulously crafted, review and recrafted to provide you with the best experience possible and maximize your learning as much as possible. So not only will you have a great time learning you'll also get the MOST BANG FOR YOUR BUCK by going away from this course with a lot of tools in your arsenal to continue you journey in the wild west of game development.
Section 1: Introduction
We'll start off by downloading Unity and Visual studio. Installing them and making sure they work. We will then create our first code in C# and get used to Unity interface. Finally we'll talk about the game design of our game and what it takes to start creating a game from scratch
Section 2: Setting Up Player
In this section we are going to start learning what sprite sheets are and how to set them up. We'll learn what sorting layers are in Unity. We'll look into colliders and RigidBodies and add them to our game objects and see how it starts getting affected by physics. we'll learn how to animate our sprites. We'll even understand what blending trees that will greatly help us reduce difficulty of animating
Section 3: Scene Management
In this section we will learn about the scene manager in Unity that will allow us to create multiple levels in our game and transition between them. Plus we'll learn a very tricky way to making sure we always arrive in the right position when moving through our worlds
Section 4: Tilemaps & Cinemachine
This section is the evolution of the previous one. Where we move from just adding maps as images to painting them using tile sets that you can download and customize yourself. We also learn about Cinemachine which is a very powerful and modern tool in Unity
Section 5: Dialog In Game
What game doesn't have a dialog system. This is where we add new NPC's to our game. Create UI learn about arrays and add more life to our game by introducing a way to interact with the world around us that we created in the previous section
Section 6: Player Stats
Again what game, especially a RPG doesn't have stats for every character? WE have strength, Mana, health etc.. and we introduce a leveling system and XP. We learn about loops in C# which is a very powerful tool in and programming language and will really build your foundations
Section 7: Menu System
This section is full of artistic creating which means you have the full liberty of creating your own. This is were we don't create anything NEW but we put all the information that we've taking into account so far in front of our player and making sure he can access that info easily
Section 8: Inventory System
This is also a section that could have been called ADVANCED C# because we take our coding to the next level. We learn about Lists another powerful tool in C#. We learn how to pick up items. Add them to our inventory using the advanced C# tools and make sure that all of this works smoothly especially when we also discard those items. Finally we use those items on our characters
Section 9: Shop & Money Systems
Now that we pick up items, we want to sell them... for MONEY! who doesn't like money? we will introduce a monetary system so basically create an economy. We create a shop with a shop keeper inside and we'll be able to transact with him using the money we have to buy and the items we have to sell
Section 10: Questing System
This is my favorite part of the game. Because we start adding quests. And this turns our game from a normal game to and RPG. We can get quests, complete them, get rewarded with items. Some objects will only appear on after we complete some kind of quest. This one is really fun
Section 11: Save & Load
It's imperative that we do not lose our progress in an RPG that's why we introduce a Save and Load system. We will keep track of our player position and the world he was in. We will keep track of the items we have in a very sophisticated way. And every else also that needs to be saved and loaded
Section 12: Music & SFX
Time to breath some life into this game adding sound effects and Music. Now our game goes from static to dynamic. We will add background Music and SFX. To each level and each interaction respectively
Section 13: Main Menu
Every game HAS to have a main menu. But it also needs a dynamic main menu. We create a simple menu with a background. But the exiting part of this is the way we give the ability to our player to either continue from his last save or start a new game
Section 14: Setting Up Battle System
Until this point we've had a pretty decent game I would say. But now it's time for the real deal. We are no longer walking around and talking to NPC's it's time for WAR. We are creating a battle system. This is the first step of one the biggest scripts that you and I will ever create. So strap your thinking caps on and hold down to your seats this is going to be an exhilarating ride
Section 15: Enemy Attack System
Now that we've started a battle with enemies. Time to give them the ability to attack us. We will choose which enemy is attacking. How much damage he's giving and we'll even display it on screen and see what happens when our players don't have any health left
Section 16: Player Attack System
Now it's our players turn to defend themselves. We will give the ability to fight back. And also the ability to run away from the battle. We'll use various attacks such as normal slashing, using different types of magic and on top of that using items during battle
Section 17: Battle System Ending
This is where our journey ends unfortunately my fellow game developers. We handle the dead players. We handle the dead battlers. We create a victory screen. A game over screen. We give our rewards. And we end this section and this course with a BANG!! by creating a BOSS fight
What You Will Learn In This Course:
Use Visual Studio with Unity in a simple way
How to set a good Game Development environment
Unity Engine are in a simple and comprehensive way
The Basics of C# in the most fun ways possible by creating a game
Use player input to control the behavior of our game
Add different component to game objects
Add gravity and other forces to game objects
Make game objects interact with each other in our game
Add sprite sheets and slice them up
Create Tile assets
How to create levels from our tile assets
Become a ninja problem solver and learn how to go step by step to solve any problem in Game Development and coding
Create animations