I've always been a big fan of narrative-focused games, with my start into video game development being inspired by playing a visual novel called Highway Blossoms. Thus, it should have come as no surprise that I found myself absolutely captivated by 13 Sentinels: Aegis Rim and its riveting 2D side-scrolling adventure segments. Its real-time events and its parallel storytelling made playing through each part of the story an experience like I've never experienced before.
What made 13 Sentinels such a revolutionary game for me was that the game was following the perspective of thirteen different protagonists, the storyline split between them. Players could largely play these stories in any order they wanted to, with a few barriers in place to ensure players had context to important segments. These individual stories were tightly interwoven, non-linear, and ran in parallel, with protagonists showing up while playing the story in the perspective of a different protagonist and often giving context to events referenced other stories.
While non-linear storytelling was a little outside my wheelhouse, it was the parallel storylines that truly caught my interest. 13 Sentinels was able to do parallel storytelling via linear levels and allowing users to choose what level to complete - a concept that could be adapted to many different game styles to empower the narrative elements. With this project, I wanted to capture the system that underlied the wonder and awe of present in the storytelling of 13 Sentinels.
The Character Select Button is a prototype Unity prefab that facilitates non-linear progression through a system of event flags, event trackers, and tracker sequences paired with UI buttons. It is a self-contained prefab that uses scriptable objects to receive data and Unity events to emit data and signals.
Timeline: August 2022
Role: Designer and Developer
Tools: C#, Unity
Having thoroughly enjoyed the narrative structure in 13 Sentinels: Aegis Rim and playing through Megaman ZX, I wanted to see if I could isolate the non-linear progression system from the former to adapt it into levels from the latter. With this, it would be possible to facilitate parallel storytelling.
To track level completion, I knew I had to return to one of the core elements of data tracking: boolean flags. Since I wanted to make this system as modular possible, I knew that these flags would have to be saved as scriptable objects; this set the tone for the rest of the project, which leveraged the power of scriptable objects to separate all of necessary data from the controller that parsed and acted on that information.
The mentality of modularity helped build out the structure for this project, which focused on cascading data down. Event flags, scriptable objects which simply stored a boolean, would be made for every level or potential trigger that the developer would want to track. Flag trackers, another scriptable object, would be used to connect these flags to function calls via a list of a internal class, called a conditional. These conditionals served as the progression barriers and could be set to require multiple events before unlocking. The tracker itself could also take in an event flag, which would indicate that the sequence would not be unlocked until the flag was raised. Lastly, these trackers would then be provided to a monobehavior, called the character locker. The character locker would read the data provided by the tracker - whether it was unlocked or not, what the active conditional was, and what functions the button should call when pressed.
When it came to implementing these ideas, the focus on modularity made a world of difference in the ease of editability. Any script that wanted to raise a flag could simply just take in the scriptable object as a variable. Because these scriptable objects were interchangeable, what each level "completed" could be readily changed.
The same idea was used in the flag trackers. What flag would tell the tracker to reveal itself and what flags were involved in each progression barrier could be changed by just dragging in an instance from the asset folder. This allowed for the level progression flow to be changed easily, with no code involved.
I intend on adapting this system into a story-focused action-adventure game featuring three protagonists. The demo of this project implements my intended level progression for the project, with future development of the game focused on developing the levels.