top of page
Icon.png

FPS Survival Game

<

>

Details

Role: Solo Dev
Duration: 1 Month
Engine & Language: Unity with C#

Game

This project is a first-person gameplay prototype focused on implementing several core game systems commonly used in action games. The main goal of the project was to practice building modular gameplay architecture, including player movement, enemy AI, combat, inventory management, and interaction systems.

The game features AI enemies that detect and pursue the player, a modular health and damage system, a drag-and-drop inventory with a hotbar, and weapon handling with shooting mechanics. The project was developed as a technical exercise to explore how different gameplay systems interact with each other and how they can be structured in a clean, component-based way.

Contribution

As the sole programmer on this project, I developed the core gameplay systems for a first-person action prototype in Unity. The focus of the project was building modular gameplay architecture, including player movement, enemy AI, combat, inventory management, and interaction systems. I implemented all gameplay logic and structured the systems in a component-based way to keep them flexible and easy to extend.

Inventory System

For this project I implemented a modular inventory system designed to support both player inventories and other container-type inventories using the same underlying logic.

The system is built around a base Inventory class that handles core functionality such as adding items, stacking items, switching items between slots, and dropping items into the world. The player inventory extends this base class to add features like a backpack inventory, hotbar, drag-and-drop item movement, and quick item transfers.

Each inventory is composed of Slot objects, which store the item reference, the item amount, and its UI representation. This makes the UI layer mostly data-driven, as slots simply display the information stored in the inventory data structure.

One of the main goals when designing this system was flexibility. Instead of building the inventory specifically for the player, I structured it so that the same system could also be used by containers or other inventory-based objects in the game. Because of this, the logic for stacking, moving items, and dropping them into the world is handled in the base inventory class rather than in the player-specific implementation.

 
The inventory also supports drag-and-drop item management, allowing the player to move items between slots, split stacks, and quickly transfer items between the hotbar and backpack. The system handles several edge cases such as stacking limits, empty slots, and partial stack transfers to ensure that item movement behaves consistently.

Overall, the system was designed to separate inventory data, item logic, and UI representation, making it easier to extend the system with additional inventory types or item behaviors in the future.

Inventory System Code Showcase

These are the three core components that the inventory system plays with, the Object scriptable object, the Item struct and the Slot class.

image.png
image.png

The following functions are inside the base Inventory class, this class stores the functions that have the core logic for moving items around.

image.png
image.png
image.png
image.png
image.png
image.png
under_construction.png
bottom of page