
build an intermediate 3d survival game in unity 2019, starting with a state-pattern driven player movement system. design an inventory system with UI, crafting, health, stamina, and a simple enemy.
Preview the game you will create via the on-screen link or resource section, and decide if you want to build it together in this Unity 2019 intermediate 3d survival course.
Install Unity 2019.3.10f1 via Unity Hub, access resource files, and engage through Q&A, overview, and video resolution settings for this intermediate course.
Create a new Unity project with Unity 2019.3 and the Universal Render Pipeline, import 3-D models, delete example assets, and install cinema camera via package manager for a survival game.
Download and unpack resources package, then import the project in Unity Hub with a 2019 Unity version. Re-import assets for purple textures, and ask questions in the Q&A if needed.
Implement an avatar with a third-person camera, use arrows for movement, the mouse to look around, and spacebar to jump, including air behavior, landing animations, and restricted movement during jumps.
Start a new scene, create a ground plane, apply a grass material, import avatars, and adjust their scale and rigging to test player movement.
Set up a Cinemachine free-look camera in Unity 2019, attach it to the player, and tweak orbit, y-axis, and inversion for precise third-person control.
Set up a character controller to move the avatar with a new player input script. Capture horizontal and vertical input and derive camera-forward movement on the xz plane.
Implement an agent movement system with a character controller, using movement speed, rotational speed, gravity, and camera-based rotation; map vertical input to forward and backward motion and trigger animations.
Learn to rotate the player to face the camera direction using the desired rotation angle, cross product direction, and smooth y-axis rotation with speed and threshold.
Create a humanoid avatar and import free basic motion animations from the asset store, then configure an animator with a blend tree for idle, walk, and run.
Learn to integrate humanoid movement animations in Unity 2019 by wiring a dedicated animation script to control the move parameter, rotation thresholds, and speed multipliers for walking and running.
Implement the jump mechanic in Unity using a character controller, action-based input, and a jump event to manage vertical movement, gravity, and animations.
Refactor the hero's control with the state pattern to replace boolean flags, implementing movement and jump states with entering, updating, and transitions via an agent controller.
Apply the state pattern to control movement and jumping in Unity, with movement and jump states handling input, updating the agent controller, and transitioning to restore functionality.
Set up Unity animator with jump and land triggers, linking transitions from move to jump, jump to midair, and midair to end jump for a smooth, state-driven jump.
Explore how to trigger jump, mid air, and landing animations in Unity 2019, using animator triggers and grounding checks, with animation events to stop movement and signal finished jumping.
Develop a falling state in Unity 2019 to properly trigger landing animations when jumping off ramps, using a delay and animation triggers via the agent controller, with tested transitions.
Set the minimum move distance of the character controller to zero to stop jitter and the repeated falling when the character moves less than the set distance.
Learn to implement footstep sounds in a Unity 2019 intermediate 3D survival game by setting up a footstep audio source, importing sounds, and triggering via animation events.
Test and refine a Unity 2019 intermediate 3d survival game on a prototypical terrain by importing resources, adjusting movement delays, and stabilizing jumping and landing animations.
Implement sideways movement by rotating the character to face left or right while keeping the camera fixed, using horizontal input, quaternion rotation, and a rotation angle to drive animation speed.
Create a simple inventory system with a visible hot bar, drag items between the bar and inventory, and use, drop, or pick items, while pausing and unpausing with a toggle.
Explore how to structure a robust inventory system for a survival game using model–view–controller architecture, enabling item storage, UI panels, and crafting from raw materials.
Create the inventory UI panel for the backpack using Kennie Asset sprites, slice the sprite, and anchor the panel in the top-right to show what the player carries.
Explore how the canvas and inventory panel render the user interface in Unity, adjust the canvas scaler for consistent scaling, and configure the event system for joystick input.
Add and arrange inventory and battle spaces in a Unity 2019 UI by creating item and button panels with vertical and horizontal layout groups, padding, and alignment.
Explore creating a functional inventory UI in Unity by building a storage item panel with image, name text, and count, using a grid layout group and layered groups.
Learn to implement a scrollable inventory UI in Unity by creating a UI prefabs panel, adding a vertical scrollbar, using a content size filter and a viewport to mask overflow.
Create a bottom-centered hotbar panel and arrange storage items with a horizontal layout group, enabling a selectable outline for items. Use prefabs and prepare two UI scripts to toggle the bar.
Create a UI storage button helper in Unity that wires use and drop buttons to inventory actions, enabling use for food or equipment items and updating button interactability.
Build a reusable item panel helper script in unity to manage the storage item window, display the item image, name, and count, and indicate selection with an outline. Expose and configure inspector fields, public and private data, and methods to clear and update the UI, handle item clicks, and switch sprites and backgrounds.
Implement the item panel helper in Unity to set item name, count, image, and empty state, add swap with data for drag-and-drop, wire it to prefabs, and adjust scrollbar sensitivity.
Finish the inventory UI by refining the scrollbar visuals, item viewport masking, and grid layout spacing, and implement a script to toggle the inventory window on and off.
Develop a UI module to toggle the inventory with a key, freezing time in an inventory state for browsing and future crafting, and manage hotbar inputs (0–9).
Implement an inventory UI state in Unity 2019 by wiring inventory input in the agent controller, open the inventory window, freeze time, lock the cursor, and return to movement state.
Create a Unity inventory system by wiring inventory and inventory system scripts to a general panel. Learn when to use awake versus start for component references and toggling the inventory.
Learn to implement an abstract item system using scriptable objects in Unity, storing item data like name, sprite, model, id, and type for runtime inventory.
Generate and assign unique IDs for items via the before serialization callback, and extend items into a food item with editor parameters and inventory integration in Unity.
Create weapon items with damage and critical chance in Unity, then introduce a storage system with storage items, ID-based data, counts, stack limits, and save/load capabilities.
Learn to implement an inventory system data class in Unity that links the user interface to storage models, supports saving data, and maps elements to inventory and Hadba storage identifiers.
Extend the inventory system data to connect storage with UI elements, add and populate inventory UI elements from storage, and manage selection and storage limit for the inventory panel.
Bind the inventory data to the UI by wiring the panel and item panel helpers, and map hotbar items to unique IDs for immediate use.
Discover how to implement a Unity 2019 inventory system by preparing the UI, populating it with data, and leveraging a model-view-controller architecture with callbacks.
Integrate the UI inventory by wiring the inventory system with storage and item panels, implement pointer click handlers, and debug callbacks to reveal and select inventory items during play.
Design an item data manager in Unity 2019 that uses a public item data list to build a dictionary, with getters for name, sprite, data, and prefab.
Test the inventory UI by adding a dummy item to storage in a Unity 2019 survival game, validating item data flow, storage updates, and debug workflows.
Explore how the inventory system fetches storage items, uses the data manager to obtain item data, and populates UI elements with names and sprites via a for loop, preparing drag-and-drop.
Recaps building a Unity inventory system that drives the ui from item data via the inventory system data manager, using loosely coupled components and a toggle that freezes time.
Learn to enable dragging items between inventory slots by wiring up Unity's event system, implementing begin drag, drag, and drop handlers, and passing pointer event data to update the inventory.
Implement drag-and-drop UI for the inventory by wiring drag start, drag stop, and drop callbacks; create a draggable item image that follows the cursor and uses the item sprite.
Implement drag-and-drop UI in a Unity 2019 survival game: make the dragged item follow the mouse using delta and canvas scale, and swap items between inventory and hardware on drop.
Implement inventory-to-inventory data swap in unity by updating UI and storage data, swapping item name, count, and sprite between slots, with validation to hide negative counts.
Implement item swaps between inventory slots and storage, save swapped data, and ensure persistence by updating the inventory system data and storage, including handling empty slots.
swap data between inventory and hotbar in the ui. implement swapping between inventory, hotbar, and hardware, and enable updating inventory data with callbacks while testing stacking behavior.
Learn to finish and debug a Unity 2019 intermediate 3d survival game's inventory swap system, enabling data exchange between inventory, hardware storage, and UI, with debugging techniques using Visual Studio.
Review the inventory system, including data structures, UI inventory, and drag-and-drop with item swapping, as we prepare to spawn items on the map for pickups in the next video.
Explore how to make objects pickable in a Unity 2019 3d survival game by adding rigidbody and collider components, implementing a pickable interface and inventory item, and wiring data sources.
Create a detection system to find and select the closest item in front of the player using a collider list, layer mask filtering, and overlap sphere detection.
Attach a detection system to the player agent, set a one-unit detection radius and an object detection mask, and visualize the detection sphere with gizmos while logging detections in play.
Highlight detected items by swapping their materials to a selection material, store original materials for the object and its children, and revert to originals when needed.
Implement a detection-driven highlight system by swapping colliders' materials to a selection material in Unity. Test highlighting, fix edge cases, and set up an inventory-pickup workflow for the next video.
Implement item interaction in Unity 2019 to wire left and right mouse actions to an interact state, update input handling, and add a state with a debug log.
Implement the interact state in Unity 2019 to handle left-click interactions, only when grounded, transitioning from the movement state via the controller.
Implement item pickup by using the detection system to obtain the current collider, add the item to storage, and refresh the UI in a Unity 2019 intermediate 3D survival game.
Fix the inventory UI by destroying the dragged object when closing the inventory, so items disappear from screen after dragging and pressing I.
Review how the inventory system uses an overlap sphere to detect items, highlight the selected model, and manage an interact state for picking up items with use and drop actions.
Implement and wire drop and use buttons in the inventory UI, use the storage button helper to toggle visibility, assign handlers, and remove dropped items from inventory.
Implement and wire up the drop and use buttons in the Unity UI inventory, adding highlight, item id retrieval, and toggle logic to enable item actions.
Use the drop button to spawn an item at the player's feet via a singleton item spawn manager, ensuring ground placement and no collision with the player.
Learn to implement item usage by wiring the use button to fetch item data, call the interaction manager, and handle food and weapon types while updating item counts.
Continue implementing the use button logic for items, updating inventory UI when items are used or removed, and handling empty selections to ensure the UI and storage stay in sync.
Fix the inventory highlight bug by adding deselect logic and disabling highlights and item buttons when a different item is selected, ensuring single-item selection during drag and drop.
Fix a bug preventing hotbar items from being used by implementing the use item flow, map keys 0-9 to slots, and validate item data to boost player stats during movement.
Implement an item spawner in Unity that spawns items within a radius, supports single or stacked objects, and uses a gizmo to visualize the area for inventory-based survival gameplay.
Learn to implement a save system with a start menu, new game and resume options, plus loading screens, hot bar items, and a functional inventory in the survival game.
Save the inventory state by storing item IDs and counts in json, using Unity's json utility and json.net for unity; connect storage items to item data through scriptable objects.
Explore Unity script serialization, learn which data is serializable using public fields or serializable attributes, and implement a serializable item data struct saved as Jason format.
Implement the i saveable interface to enable a universal saving system for inventory and other classes. Serialize and deserialize data with a json utility to save and load inventory data.
Implement the ISavable interface in the inventory, expose a saved item system data, and create getDataToSave to serialize items for json storage; implement load data to reconstruct items from json.
Create a Unity save system that finds all objects implementing the ISaveable interface, saves their data to JSON in the persistent data path, and loads via a coroutine.
Test the save system by creating a save system object, saving and loading inventory and hardware data, and verifying the file path and json format.
Build a Unity main menu UI with a panel and vertical layout, adding New Game and Resume buttons, and wire it to UI main menu and game manager scripts.
Continue implementing the main menu in Unity by wiring new game and resume buttons to the game manager, handling save checks and scene transitions.
Create an in-game menu overlay with a centered panel using a vertical layout group for save game and exit buttons, plus a loading panel that blocks input during loading.
Develop and wire the in-game menu in Unity, including save and exit actions, a loading panel, and toggleable user interface, while correctly handling time scale, cursor state, and basic save flow.
Learn to implement an in-game menu in a Unity 2019 3D survival game by creating a dedicated UI game object, wiring canvas buttons, and toggling with the escape key.
Fix the in-game menu to stop items following the mouse when opened and toggle the inventory with escape. Implement a save system, cursor visibility logic, and a functional main menu.
Create a convincing survival game map in Unity by placing trees and rocks, spawning craftable materials, implementing a skybox, water footstep sounds, and inventory interactions.
Water shader tutorial:
https://youtu.be/Vg0L9aCRWPE
Learn to use the poly brush tool in Unity to paint vertex colors on terrain, create a map material, and apply sand, grass, and hill colors.
Import the simple sky prefab and sky dome to enclose the map, offset the sky material for a blue sky, disable moon and stars, and place clouds while adjusting lighting.
Place nature essentials models on the island and create map element prefabs for trees and rocks, using Vicki vertex snapping and basic lighting with sky box and sun.
Master post-processing in Unity 2019’s Universal Render Pipeline by adding mesh colliders to trees and rocks, organizing the terrain, and tuning color, depth of field, and shadows.
Drag the new map into the scene, add land, water, sky, and post-processing, then set up the player, spawn points, and inventory for a basic survival test.
Bound the map with scaled cubes acting as invisible walls to block water crossings, disable their mesh renderers, and position duplicates around the island to contain the player.
Add ambient ocean sounds on the island by importing audio, configuring a looping audio source, and swap the water step sound via a trigger collider for realism.
Fix polybrush issues in Unity by selecting all cloud models in simple sky's models folder, enabling and applying them, then play to confirm no warnings or errors (restart if needed).
Are you looking for an intermediate Unity course where you will build a small 3d game, from scratch with a maintainable codebase? In this course we will create a survival game with 3rd person camera, player movement system, animations, simple island map, inventory and crafting system and a save system to save our progress to a file. We will use the new Universal Rendering Pipeline to create our project., and structure the code using state pattern and Model-View-Controller architecture to make the code less prone to bugs.
If you have completed few beginner courses on Unity and c# and you feel comfortable using them together I believe that you will benefit greatly from this course.
When I was learning Unity and Game Development overall I was always disappointed with the lack of intermediate courses that actually showed how to make a game that isn't a single monobehaviour or that actually implements some useful systems like save system. I wanted a bigger project that I have lacked the skills to structure properly to keep it maintainable. How do you make a more complex game?
The answer is - one step at a time.
We will use multiple 3d models, animations and tools that are free on the Unity Asset Store. It really is amazing how many great assets are available for free and how we can use them to create a decent looking game.
My hope is that at the end of the course you will have a bigger picture on how to structure the code for your game and have a survival game template that you can reuse.
If you think that you could benefit from this course don't hesitate to purchase it. You have 30 days to get a refund in case you don't enjoy my course. Saying that I have really put a lot of effort to make sure that you will benefit from the course and learn some useful techniques from setting up a simple movement system using a character controller to creating a UI, a map with post-processing effects and serializing the data to save it to a JSON file.
Just click that Buy button See you in the course!
Update February 2021:
Resources now are containing a "Survival_Game_FullProject_ ..." for most of the videos. If you ever get stuck you can simply download a full project for a specific video and use it to help you debug your own project or to just start working on a specific section of the course.
Previously the resources were unity packages that was overriding your own project. I hope that full project asset version will be better :)