José Rafael Striedinger

Sorelle

Sorelle is a whimsical 3D puzzle platformer set in the seaside town of Isola Chiara. Play as Alessandra, Bella, and Capri—three sisters with unique abilities—on a quest to restore their town’s magic before the summer festival, all while coping with their mother’s recent passing.

Development: 12-month with a team of 30+ students at USC Games.
Platform: PC. Released Q3 2024 on Steam.
Tools: Unreal Engine 5, C++, Google Spreadsheet, WWise.

Role & contributions

As a Technical Game Designer I:

  • Crafted a robust dialogue system that let the design team easily set up NPC conversations and cinematics with voice-over callbacks on multiple languages.
  • Improved the game writing workflow by using Unreal Engine datatables; so writers didn’t have to work directly in the engine.
  • Designed and prototype a key character ability: a double-jump + ground pound mechanic

The Design Process

Ground Pound mechanic

Initially designed as a single action with 3 steps—an automated small boost, a freeze at the top where the character does an animation and then going straight down with force. You can see an illustration on the right.

Playtesting showed players disliked the lack of control with the initial big boost, so we split it into two abilities: a double jump and a Ground Pound, similar to games like Jak and Daxter.

Sorelle ground pound
Prototyping
Final version

The Dialogue System

Since Sorelle is a 3D adventure game with multiple NPCs, quests, and cinematics, the dialogue system needed to be Modular, Adaptable and easy to use, to both the design team’s needs and player actions. Yarn Spinner, the popular narrative tool made for Unity by the team of Night in the Woods, served as inspiration.

1. Modular: The design approach

The goal was to create a system that delivered all the game’s narrative in multiple ways. NPC conversations were one method, but new framing devices were emerging, so the system had to be modular and adaptable from the ground up.

I achieved this by implementing it as an Unreal Engine Subsystem with Actor Components. Making it a Subsystem ensured it was always running in the background waiting to be called. And the Actor Component allowed designers to enable any in-game object to trigger narrative with just a few clicks.

The designer just needs to tell the system what Conversation to play as well as other info such as whether it should block player input or not. For example, NPC conversations block input, while callouts—dialogue that plays as the player roams—do not. The system could also send a callback when a conversation ended. For example, after an NPC conversation, it could trigger a function to add an item to the inventory or perform other actions.

narrative system in Sorelle

A simplified diagram of the system. The dialogue comes from a DataTable

Prototyping features

In our process we tried different things like the ability for the player to choose between multiple dialogue responses. But after some discussion, we realized this would add a lot of extra writing work without really enhancing the core experience. So, we cut it in favor of a more linear narrative.

Sorelle prototype

2. Easy to use: a tool for the whole team

Since Sorelle was a story-heavy game, the writing and narrative were constantly evolving, so the system had to be easy for any designer or writer to use. The goal was to make changes simple and conversations easy to add or edit. On the regard we did the following.

Blueprint editing for Designers

I created a visual interface to edit everything related to a ‘dialoguer’ item in the game, from the conversation to play to other settings, making it easy to test the narrative on the go.

Spreadsheet template for Writers

I defined a spreadsheet template for writers to follow, so they didn’t need to open the engine at all. They simply provided the spreadsheets, and designers would set them up as DataTables in UE5, streamlining their workflow.

3. Adaptable: improving with the needs of the project

The dialogue system quickly became the “narrative system” as we wanted to use it for anything related to narrative in the game. Meaning the use cases evolve from NPC conversations, to also Callouts and cinematics. Thankfully because of the modularity, the system was able to adapt to all those cases with little extra work.

Sorelle NPC dialogue

NPC
Player can talk to NPC and receive Quests after conversation ends.

Cinematics
The system integrates with all the cinematics in the game

Callouts
Pieces of narrative that don’t interrupts gameplay

Gallery