WITHOUT REGRET

PRoject overview
Without Regret is a 3D Narrative-Adventure game with on going development aiming for a May 2026 release on Steam. Play as Echo as you venture into a mysterious alternate existence known as the Astral Plane, where Echo is able to use strange new powers in order to help guide the lost souls of a small neighborhood to a peaceful resolution. Without Regret's gameplay has a heavy focus on branching dialogue and decision-making while also incorporating some puzzle game aspects.
STEAM STORE PAGE: Link
Github Repo: LINK
Builds: Google Drive
Game Engine: UNITY 6
Team Size: 19
Time Frame: Aug 2025 - Present
Language: C#
Target Platform: Windows 64-Bit, Steam DEck (Proton)
My Role
My main role in working on Without Regret is serving as a Programmer, with responsibilities across all areas of the game, including systems design, core gameplay mechanics, UI functionality, and the overall technical design of the game. I have also been the primary party responsible for managing our project's Github repository, ensuring merging branches is handled smoothly and merge conflicts are resolved efficiently. As our team has grown, I have also had growing leadership responsibilities, assisting new members within and across disciplines in being able to adapt effectively to joining our team and our workflow. Finally, I was the sole party responsible for shipping weekly development builds of our game as well as shipping builds for our Alpha and RTM milestones.
My Contributions
data Systems
One of the biggest challenges that I had to overcome during this project was figuring out how some of the more back-end systems like saving data should work, and how best to implement it. The save system has proven by far to be the most challenging to get working properly, but it now works quite well. The Inventory, and Objective systems were a bit easier to manage, and both incorporate the use of scriptable objects, which make the addition of things like new items or new objectives relatively simple for our team's designers to handle.
Below are some more in-depth break downs of how the systems work and some links to the scripts that make up the three systems.
Save System
The Save System handles the reading and writing of JSON files with all the necessary information to be saved and loaded from a multitude of aspects of the game, as well as loading and applying that data appropriately. Some of the things that are being saved and loaded are positions and states of objects and characters, objective progress, and items held in the inventory. It also handles logic for triggering saves based on certain events, as well as a time interval based autosave. The system supports up to 3 slots, but could easily be expanded to support any number of save slots.
Save System (script)
Save Manager
Player Save Data
Saveable with id
ISaveable (interface)
Objective System
The Objective System is made up of the "Objective Data" scriptable objects, which define things like title, description, and progress required. The Objective Manager keeps track of a list of instanced versions of the objectives and their statuses, and has a number of functions for handling the progression of objectives. It also has some helper functions for other scripts to access or trigger in relation to progression. It also implements the ISaveable interface mentioned above, and provides an example of how this interface is used to load and save data.
Objective Manager
Objective data
Objective Instance
Objective trigger volume
UI Functionality
I was responsible for programming a large majority of the functionality for UI elements and menus. This includes things like the Main Menu, Pause Menu, Settings, Inventory, Journal, a Confirmation pop-up, etc. While I have had a good amount of experience with UI, this project allowed me to dive much deeper and achieve a level of polish that is much more refined than before.
-
I was also able to focus on specific functionality that wasn't necessary for the scope of previous projects, like having all the Settings properly affect the different aspects of the game that they should be linked to and saving those preferences persistently.
-
I have also become decently familiar with Unity's various tools and systems for creating UI such as the event system and the interfaces for hovering and selection to be able to apply custom effects to buttons like increasing the size and changing overall colors when highlighing.
-
My work also included some design decisions relating to overall layout / appearance of the UI elements, but not the art assets themselves.
-
I also had enough ownership over the majority of the UI elements to be able to manage conflicts in terms of overlapping UI and exclusive control and visibility of the different UI elements at any given time.
-
Below are some images of some of the UI elements I owned and worked on essentially entirely myself, and also some links to the most current version of the associated scripts in the Github repository.
Main Menu

Inventory

Cutscenes

Settings

Pause Menu

Confirmation pop-up

Gameplay Mechanics
Shipping Builds
Designer Support Tools
In support of my designer teammates, I ensured that all scripts were able to be easily customized, and were flexible enough to accomodate any changes or adjustments that they decided on. Doing so, I made some custom editor scripts to accompany things like the Saveable with ID script, which made it easy to see the unique ID that the object was assigned, and a button that would automatically refresh this ID while ensuring it was still unique to every other instance of saveable objects in the game. I also made a class to wrap the default unity Scene files, which allowed Scene assets to be dragged and dropped to assign into the inspector of various scripts, rather than memorize the exact name or build number for the scene. It also avoided a problem with using unity's default scene assets to assign references in the inspector, which caused null reference errors relating to those scenes when a build is made.
Saveable Editor

Scene Reference Class

GAllery







