
Explore building a VR RPG in Unity using the XR Toolkit for Oculus Quest 2, covering enemies, inventory and equip systems, player selection, testing, and maintainable, scalable practices.
Explore building a VR RPG with inverse kinematics animation, a modular character with appearance changes, item management UI, enemy patrols and attacks, and a state-based damage system with experience upgrades.
Set up Unity project for Quest by switching to Android, installing XR Interaction Toolkit and Input System, configuring left and right controller actions, enabling Oculus plugin, and building to Quest.
Switch the right hand controller to a direct interactor, remove ray components, and add a super collider set as trigger with an interactable component to enable grabbing.
Learn to interact with the VR UI in Unity by resizing the UI canvas to match the plane and then click the button inside the scene.
Import a paid VR asset, attach the head and hands to the main camera and controllers, then adjust rotations and head position to fix alignment before building.
Debug a Unity VR game on Oculus Quest 2 by viewing logs, creating a hello function, attaching it to a button, and filtering Unity logs via command prompt.
Learn to handle controller input in Unity VR RPG by binding primary and secondary button presses for left and right hands, generating actions, implementing interfaces, and logging debug output.
Configure a locomotion system with a left-controller continuous movement and a right-controller continuous turn, then add a character controller to enable movement and turning.
Master the Unity XR Toolkit teleport feature by adding the teleport provider and teleport area components, configuring the ray interactor for blue valid targets, then teleport by gripping.
Explore dependency resolution in Unity using separation of concerns and techniques like get component, get components and children, serialisation, scriptural objects, events, and singletons.
Learn to implement an inventory system in Unity using the Game Foundation package, adding items, defining item definitions, and picking up items with controller input and physics overlaps.
Create a VR inventory UI in Unity by building inventory slots and a base UI with canvas group, and update it via Game Foundation events for item adds and removals.
Create a singleton event manager with on show UI and unhide UI actions, exposing functions to control UI from other classes, positioning UI three units in front of the camera.
Switch between left-hand direct interactor and right-hand ray interactor, enabling one at a time. Use on show and on hide events to disable movement while the UI is open.
Build an equipment system by integrating inventory with equipment slots and game foundation events to equip and unequip items through UI and events.
Equip and fire a pistol in a Unity VR RPG with xr toolkit, managing primary weapons, enabling and disabling gear, and firing bullets via instantiation on Oculus Quest 2.
Implement a Unity stat system: a stat class with base and current values, change events, and derived stats like health and mana, with a dynamic UI.
Implement stat modifiers in a Unity VR RPG by creating a stat modifier class with flat and percentage types, managing a modifiers list, and recalculating stat values on equipment changes.
Create a Unity vr rpg scene with a plane and a player prefab, configure a Cinemachine free-look camera, install snowmachine for the new input system, and set up idle animations.
Learn to create and run Unity unit tests by organizing test assemblies, adding script references, and implementing edit mode and play mode tests to validate stat calculations with Game Foundation.
Learn to implement a Unity VR enemy state machine with wandering, chasing, and attacking states, using animation controllers and a state machine behavior subclass for state enter, update, and exit.
Implement enemy AI in Unity VR RPG with patrols, vision radius, and attack range using a NavMesh agent and an animator-driven state machine.
Learn how scriptable objects save memory by sharing data assets across entities, enable dependency resolution, and manage runtime values and events that persist in play mode but not in builds.
Learn to implement enemy combat in Unity by defining an enemy definition with base stats, handling damage, aggro, cooldowns, and death animations, plus UI health and billboarding.
Learn to display floating damage text and floating experience text in Unity using do tween and UI text, with on take damage and on die events awarding 10 experience.
Create a serializable skill system to track the player's combat level and experience, with current and required experience, a skill type, and an on level up event.
Learn how object pooling in Unity reduces processing by reusing deactivated game objects instead of creating and destroying them, with preloaded bullets, arrows, enemies, text, and items.
Create an enemy wave spawner in Unity by spawning three foes from an enemy prefab at random spawn points, using a queue and a 30-second delay.
Implement a sword as a primary weapon item with attack, set up inventory and enemy spawn points, and test interactions and level-up effects in VR.
Implement bullet pooling by using a bullet queue, instantiating when empty, and returning bullets to the pool after impact or timeout, with visuals, audio, and player stats for damage.
Fixes a bug where the enemy health bar stays visible after respawn by listening to the take damage event, updating refresh logic, and using a delay coroutine to hide it.
Create a modular character system in Unity by importing a package, defining serializable gender and part types, and implementing an editor setup to manage gender-specific and gender-neutral parts.
Create and assemble armor pieces by building game objects, coupling with character prefabs, adjusting transform and scale, and defining equipment types and armor parts in Unity.
Learn to pick up and equip boots in a VR inventory system, wire up Game Foundation events, map actions for opening inventory and equipment, and manage pickup and equip interactions.
Design and wire a character selection screen that lets players choose hairstyle, facial hair, gender, face, hair color, and skin color, plus random starting stats via a modular character controller.
Set up a vr character selection by creating a mirror with render texture and aligning the ui. Bind the character controller and stats to enable hair and skin color customization.
Develop a weapon controller system to equip primary and off-hand weapons, manage weapon state, and respond to on-equip and on-unequip events with abstract base and derived primary/secondary controllers in Unity.
Fix a shield equipment bug by aligning inventory and equipment model events, updating on item added to inventory and on removed from inventory events, and ensuring proper equip and unequip behavior in Unity XR Toolkit.
Refactor the equipment system to stop using the old equip event, expose public equip functions, and wire the modular character controller and inventory to respond to equip and unequipped events.
Fix a bug in stat modifiers by updating the stats UI and removal logic, ensuring shield and weapon modifiers apply and remove correctly via item IDs and UI actions.
Implement post-leveling point spending to boost base stats by linking stat and skill scripts, listening for the on level up event, and refreshing points and combat level in the UI.
Split the game into four scenes—kissy face, base, character selection, and Tutorial—load them additively, and manage transitions with a level manager that shows and hides UI.
Learn to implement a radial menu for limited controller buttons with a centralized UI manager and show/hide events. Wire elements for equipment, inventory, stats, and menu in Unity XR Toolkit.
Learn to implement a Unity VR save system that records the player's position and rotation, using a saveable interface, saveable entities, a save manager, and Vector3 and Quaternion surrogates.
Implement saveable interfaces to persist inventory and equipment data with Game Foundation, initialize the framework, and wire the inventory and equipment UI to reflect initialization.
Create serializable save data and implement saveable interfaces to persist modular character parts, weapon ids, color data, and player stats and level across sessions.
Implement and test a VR save system by configuring save and saveable entities, wiring the level and character managers, and persisting equipment and stats across unload.
Import the Cynthy studio adventure pack, create level one with a nav mesh, add a viking enemy prefab with colliders, and prepare quest 2 VR with build and rig settings.
This course is targeted to those that want to take their video game development journey to the next level. In this course, we'll be building a virtual reality role playing game from scratch.
In this course, you will learn:
How to build and test games for the Oculus Quest 2
How to use Unity’s new Input System
How to write code that’s efficient & modular
How to build games with Unity’s XR Toolkit
How to create inventory, stats, and equipment systems
How to make and work with user interfaces in Unity
How to implement enemy AI
How to modify the player’s appearance in VR
How to write unit and integration tests in Unity
How to import and use assets from the Asset Store
How to implement a save system
And more…
Why this course?
Unlike other courses which focus on teaching you the basics of Unity & C#, this course uses the latter to build a complex game on the assumption that you will learn from seeing how it’s done. This is the only course that teaches you how to make a RPG for Virtual Reality headsets (specifically the Oculus Quest 2).
This course is under active development. I plan on continually updating this course with new content as quickly as my time allows.
If all this sounds appealing to you, please join me, and I’ll see you inside the course.