
Fragments of Yesterday
About
Fragments of Yesterday is a puzzle-platformer with a psychological horror theme. This was one of my first team projects, where I worked as a game programmer. Through this experience, I learned a great deal about creating a story-driven game that not only focuses on its mechanics but also incorporates cutscenes, cinematics, and various visual effects to enhance the narrative.
As the solo programmer on this project, I was responsible for developing key gameplay systems. Among the most significant were the Dialogue System and the Inventory System, both of which taught me valuable lessons in game development.
​
Inventory System
In our game, the inventory system was designed as a notebook, serving as a tool for collecting notes and fragments. Notes provided hints for solving puzzles, while fragments represented the character’s progress throughout the story.
The inventory was styled like a physical notebook, with bookmark tabs allowing players to switch between clues and fragments. Additionally, it featured various UI elements, including page navigation and a close button, ensuring an intuitive and immersive experience.


To implement the inventory system, I used a List to store collectible items. The system was divided into two main parts:
Inventory.
Collectible items.
​
Collectible Items
Each collectible item could be categorized as either a clue or a fragment. It contained:
A description text that provided information about the item.
A sprite that would be displayed in the notebook.
A trigger-based collection system, where the item would be added to the inventory upon interaction.
The Notebook (Inventory System)
The notebook served as the player's inventory, containing:
Separate lists for clues and fragments, organizing the collected items.
A UI image to display the associated clue or fragment sprite.
A text box to display the item’s description.
Various UI buttons for accessibility, including Close, Previous Page, and Next Page for easy navigation.
This system provided a seamless way for players to track their discoveries while maintaining immersion in the game's narrative.



Dialogue System
The dialogue system was designed to consist of two main components:
Triggers or Events – These initiated the dialogue when specific conditions were met,
such as interacting with an object, reaching a certain location, or progressing in the story.
Dialogue UI – This included:
A dialogue box to display the conversation text.
The name of the speaker to indicate who is talking.
A character portrait to visually represent the speaker.
This system ensured that dialogues were seamlessly integrated into the game, enhancing the storytelling experience.

​I began by making the dialogue system a singleton instance to ensure that only one exists in a scene at any given time.
This also allowed easy access from other scripts, such as the movement script, enabling the game to halt all player actions and focus solely on dialogue.
To manage dialogue lines efficiently, I used a Queue, as the game's conversations progress sequentially, making it an optimal choice.
The dialogue system included:
Text elements to display dialogue lines and the speaker's name.
A UI image to show the speaker's portrait.
A float variable to control the speed at which dialogue appears on screen.
UI buttons for accessibility, such as "Continue" to proceed through the dialogue.
Dialogue sequences were triggered using invisible colliders with triggers, each containing a script that stored:
The speaker's image
The dialogue lines
The speaker's name
Link for the Code for both of these systems: https://github.com/RudMakesGames/Scripts
​
​​​​​​
Trailer for the game:

