
Join the learning community and access feedback and Discord support. Review a completed game project for reference as you learn to set up in Unity.
Download the latest free Unity personal version, sign in with a Unity ID, and create a new 2D top-down RPG project named Udemy RPG, then set the 2x3 layout.
Explore Unity's layout: scene view, game view, hierarchy, inspector, and project panel. Drop a sphere and manipulate it with move, rotate, and scale tools; review transform and camera components.
Create and save a new scene, import background and character assets, and configure sprite settings to support pixel art: multiple sprites, 16 pixels per unit, points filtering, and no compression.
Chop a character sheet into individual sprites using the sprite editor, slice grid by cell size to fit 16×32 and 32×32 blocks, apply changes, and fix visibility with sorting layers.
Create sorting layers named background and player, assign the background to the background layer and the player to the player layer, adjust their orders so the player renders in front.
Apply Unity physics to the player by adding a circle collider and a Rigidbody 2D, tune the radius and offset, and set gravity scale to zero to enable movement.
Create a player controller script in Unity to move the player with a 2D rigidbody. Learn public versus private variables, attaching scripts, and managing references in the inspector.
Move the player in Unity using a Rigidbody 2D velocity driven by GetAxisRaw for horizontal and vertical input, with a configurable public float moveSpeed.
Learn to animate a player in Unity by creating idle and walking animations from sprite frames, adjusting timing and sample rate, and wiring them with an animation controller for movement.
Set up Unity's animator to control player movement with a 2D blend tree driven by move y and move x, using zero-duration transitions and a default idle down state.
Link the player script to the animator, expose the animator reference, and drive facing direction with a 2D blend tree using last move X and last move Y.
Learn to use Unity physics to prevent player spinning by freezing rotation on the rigidbody, and add circle and box colliders to create objects. Use trigger colliders for area transitions.
Switch between Unity scenes using a trigger box, an area exit script, and loading by name, while preserving the player across scenes with dont destroy on load.
Learn to prevent duplicate players by using a singleton-like instancing approach: declare a public static player controller instance, assign on first load, and destroy duplicates on subsequent scene loads.
Learn to position the player correctly when switching areas by using area exit and entrance with the area transition name, controlled by scripts and prefabs.
Link area exit and area entrance by referencing the entrance script, synchronize the transition name, update prefabs, and set script execution order so loading occurs in the correct order.
Create a Unity player loader that automatically spawns a player from a prefab when no player exists in a scene, ensuring the player persists between scenes.
Create a camera controller in Unity that makes the main camera follow the player's transform using a public target and late update for smoothness.
Create and organize a Unity tile map workflow by building an overworld tileset, setting up a tile palette, and painting tiles into a new countryside scene.
Create a tile map in Unity by drawing tiles on a ground layer, add solid object tiles with tile map collider 2D and composite collider 2D for player interaction.
Create a town scene for the RPG in Unity as the first challenge, with a left entrance, a right exit, a path, and a tile map on three layers.
Keep the camera inside map bounds by computing bottom left and top right limits from the tile map's local bounds and clamping the camera's x and y positions with Mathf.Clamp.
Configure a Unity camera boundary to keep the orthographic camera inside tile map by computing half height and half width from the camera size and aspect (16:9) and clamping limits.
Clamp the player inside the tile map by using a set bounds function driven from the camera, passing map local bounds min and max to keep the player within edges.
Implement a smooth fade between scenes in Unity by overlaying a fullscreen black image, using a canvas scaler with screen size to 1920 by 1080 and stretch anchors.
Create a Unity UI fade by attaching a C# script to the canvas to fade a fade screen image’s alpha for fading to black and back, using time.deltaTime for consistency.
Learn to implement scene transitions in Unity by fading to and from black, delaying scene loads with a wait timer, and keeping the UI canvas across scenes.
Create an essentials loader to auto instantiate the ui canvas and player, adjust script execution order for reliable camera targeting, and use find-by-type to resolve start-order issues.
Build a dialogue manager by adding a reusable dialog box and name box on the UI canvas with an NPC, plus a sliced panel and pixel knots font for dialogue.
Create a dialogue manager in Unity to control dialogue and the name box, using a C# script, UI text components, and a string array of lines that cycles through lines.
Move through multiple dialogue lines by advancing the current line only when the dialog box is active, updating the text from the lines array, and hiding the box at end.
Activate and switch dialogue lines in Unity using a trigger area, a dialogue activator, and a dialogue manager with a lines array, advancing with input.
Learn to stop the player from moving when a dialog box opens by toggling a can move flag in the player controller and syncing it with the dialogue manager.
Learn to implement dynamic name boxes in a Unity RPG dialog system by checking lines for n dash prefixes, updating the displayed name, and replacing markers.
Set up a sign in Unity's dialogue system and distinguish signs from characters using an is person flag to toggle the name box. Attach a dialogue activator and show dialogue.
Learn to implement player stats in Unity by building a character stats script that tracks level, exp, hp, mp, strength, defense, weapon power, armor power, and a character image.
Learn to build a Unity leveling system by computing experience per level with an exp to next level array, max level, base exp, and a for loop.
Test a unity RPG level system by adding experience and checking the next level threshold. Observe level progression, xp carryover, and player level updates via the k key.
Learn level-up mechanics in Unity: toggle strength or defense by level parity, grow max HP by 1.05, and expand max MP using an MP level bonus array.
Create a Unity game manager to hold player stats across scenes with a public static instance and don't destroy on load, using an array of character stat scripts.
Create a game menu in Unity by building a UI canvas panel, adding items, stats, save, close, and quit buttons, and align them with a vertical layout group.
Create a character info panel in Unity by adding an image, name, hp, mp, and level texts, plus an exp slider, arranged with vertical layout group and managed by script.
Implement a toggleable in-game menu in Unity with a Game Menu script on the canvas, opening on right-click and closing on left-click, while disabling player movement when active.
Learn to centralize movement control in Unity using a game manager with booleans for menu open, dialogue active, and fading between areas; use OR logic to toggle movement.
Cache game manager stats, expose update main stats, and refresh ui elements for name, hp, mp, level, experience, exp slider, and images, toggling stat holders.
Update the UI by setting name, hp, mp, level, and exp text from player stats, configure the exp slider's max value, and assign character sprites to the UI.
Create an items and a stats window in a Unity RPG menu, enabling toggle and close functions via buttons. Learn to set up UI panels, activate windows, and manage navigation.
Implement a status window for your RPG in Unity, laying out labels and values for name and stats, with an image and left-side buttons, following the shown structure.
Open the status window by activating status buttons and showing each character's name (Tim, Woody) using get component in children, with a function to refresh main stats when opened.
Learn to implement a status menu in Unity by building a status character function that updates name, HP/MP, stats, equipment, experience, and an image for the selected character.
Create a reusable item script for items, weapons, and armor, with name, description, value, amount change, and sprites; then build six items as prefabs for the items window.
Layout the items window with action and info panels, add item name and description, and build a grid of item buttons using a grid layout for up to forty items.
Learn to display collected items by tracking inventory in the game manager, using items held, the number of items, and reference items to show item details and images.
Create item buttons in Unity to show inventory items from a game manager, display sprites and amounts, and automate a 40-item grid in a Unity RPG.
Learn to implement an inventory sort in Unity RPG by adding a sort items function to the game manager that moves empty slots forward using for and while loops.
Learn to implement item selection in a Unity RPG by updating a game menu, setting the active item, and switching the use button to equip or use.
Learn to manage an RPG inventory in Unity by adding and removing items through a game manager, updating the on-screen inventory, and debugging item existence.
Enable a discard button in the game menu to delete the active item from the scene by calling the game manager’s remove item, wired to the UI canvas.
Implement an item-use flow by adding a character selection panel, updating button labels with character names from the game manager, and wiring open/close methods and use button actions in Unity.
Learn to implement item usage in Unity by selecting an active item and applying HP, MP, or strength to a chosen character, and manage weapons and armor.
Learn to pick up items in the world and add them to the inventory using a circle collider 2d trigger, on trigger enter/exit, and game manager item sorting.
Create a dedicated shop scene in Unity using a new inner tileset, featuring an entrance at the bottom and a space for a character to act as a shopkeeper.
Create a shop UI in Unity for an RPG game using the UI canvas. Track current gold in the game manager and update a gold text display across scenes.
Duplicate the existing menu to build a shop with buy, sell, and exit buttons. Bind buy and sell windows to a shop script that opens, closes, and shows gold.
Create a shopkeeper NPC in Unity to open a shop on player interaction, using sprite edits, a 2D trigger collider, and an items for sale array.
Create a Unity RPG shop that displays items for sale and items the player can sell, using buy and sell button arrays, unlimited buys, and a 40-slot sale list.
Wire item buttons to the shop and game menus to enable buying and selling, update item details, and display name, description, and gold value for transactions.
Implement a buy and sell system in the shop that checks current gold against item value, updates the game manager inventory, adjusts current gold, and refreshes the UI.
Learn how to create and program your very own classic RPG game using Unity, an industry-standard game development program used by many large gaming studios and indie developers across the world.
In this course you won’t just be learning programming concepts, but tying these concepts to real game development uses. You will have access to a course forum where you can discuss the topics covered in the course as well as the next steps to take once the course is complete.
This course has been designed to be easily understandable to everyone, so whether you’re a complete beginner, an artist looking to expand their game development range or a programmer interested in understanding game design, this course will help you gain a greater understanding of development.
At the end of this course you will have developed the ability to create such game elements as:
Full top-down character movement
Creating tile-based maps in Unity
A full dialog system
Inventory creation & management
Stat-tracking & leveling up
Shop system
Turn-based battles with enemies
Boss Battles
Quest Management
Start learning today and let me help you become a game developer!