X-Rays: A Dystopian RPG Adventure
About
X-Rays is an Action-Adventure Dystopian RPG, aiming to combine the thrill of survival with the curiosity, innate in everyone, to explore and interact with various characters throughout the journey.
Link for playing the game: here
Github repository: here
Project info
👤 Role: Game and AI programmer
đź‘Ą Team size: 5
⏱︎Time frame: 2 months
⚒︎ Engine: Unity(C#)
This game helped me achieve a comprehensive understanding of game programming and serves as a demonstration of progress across all components comprising a Unity project. It’s a fully-playable portion of a game that shows our intended player experience. I had to manage numerous characters, inventory, dialogues, and various mechanics within the game: movement, combat, puzzles. During the development process, I aimed to write optimized and reusable code, ensuring efficient handling of game elements and enhancing the overall performance of the game.
Enemy AI
Enemies actively search for the player within their vicinity. Upon detecting a player element nearby, they approach the closest one. When within the attack range, they initiate an attack. If the player moves out of range, the enemies will resume pursuing the player, attempting to get back within attack range and attack again.
Inventory system
Each item possesses a class with unique functions, while also inheriting common functions from the base class. Items in the inventory are managed through a list. Inventory actions include release (drop), recovery (pickup), and changing the selected item.
Survive system
The player’s hunger, thirst, health, and radiation levels are managed by a single class. Thirst levels decrease over time, hunger levels decrease while walking, and health decreases when attacked. Radiation levels increase upon entering specific map zones. Items like food and water can restore these statistics.
Dialogue, event and quest system
Multiple features were integrated through Unity colliders. The dialogue and event system activates when the player enters the respective collider.
Dialogue system was developed using the Ink library. Each character had a dedicated Ink file with their dialogue lines. The system selects the appropriate dialogue line for the character based on the interaction moment.
The quest system monitors particular map objects. When these objects achieve a defined state, the quest is marked as accomplished
What i learned
The experience was exciting and highly educational, as it provided me with valuable insights into game programming, the challenges associated with game development, and the considerable effort required. It emphasized the importance of teamwork, showing how a cohesive group can elevate a game to the next level and smooth out the workload. Throughout this journey, I have developed a strong passion for game programming, willingly devoting my days to coding and exploring new better possibilities.
Build, source code and further insights can be found in the github repository here.