Sequence Editor
About
When prototyping our isometric game in Unity, we initially used some asset store tools to develop quickly. However when doing this, we had to follow the workflow of these assets. One such asset that we used was the Dialogue System for Unity.
It’s a great asset and used by incredible games such as Disco Elysium and other hit games. I’m not saying this asset is bad, but you need to adopt your workflow and work with any limitations the asset might have. One such workflow is the cutscene system which they call as their Sequences and the Sequencer Commands. You need to use Lua in the inspector without any type checking which is error prone and cumbersome to remember.
Additionally to view the cutscene, the game needs to played everytime which takes time to start. What I’m looking for is a cutscene system that works in the Editor as well as in Play mode and is easy to edit and modify.
Credit
When we were search for a nicer way to create our cutscenes or even the just NPC dialogues, we stumbled on the talk of CrossCode developer Felix Klein. He talked about presenting sequences of commands like the same way as the Event Editor in RPG Maker as they used RPG Maker extensively before. In this way, errors can be isolated to individual sequences and these sequences can be turned off/on and reordered on command.
So the idea of combining the Step/Event Editor to the Sequence and Sequencer Commands was born.
Sequence Editor
A sequence can be added through the sequence searcher. This then adds the sequence to the sequence data scriptable object which is displayed in the editor. Custom sequences can be made by inheriting from the abstract class of Sequence which will be automatically picked up in the sequence searcher.
Sequences can also implement their own custom editor which can manipulate the data of the particular sequence. This enables sequences to be easily modified by non-programmers. Similar to the Sequences in the Dialogue System, sequences can block the processing of sequences and wait for messages that other sequences can emit. Additionally, the sequence manager can speed up or slow down the speed/time, can store variables which can be used for programming and can be run in the editor without going into playmode.
Lastly, the sequence editor is great at modifying sequences as it is able to reorder, disable and edit the data in sequences. Additionally, within the editor you can safely create new sequences and sequence data SO through it. Dialogue is also parsed which can be great for looking at branching dialogue and eventually localization support can be added. Lastly, the sequence editor can help debug the sequences by slowing down the playing of sequences, showing what is active and currently running. Upon the end of the sequence, the scenes, objects and other assets are automatically disposed as needed.
Closing Thoughts
Creating cutscenes became much easier and the workflow became much more robust. Iteration also became quicker and it was easier to integrate other assets like the Bone Animation System and the Text Animator for Unity. For future improvements, this system can probably be modified for driving other systems such as the AI of the game and the custom inspectors could be generated automatically or with the help of another tool.
-
Credits to Radical Fish Games for the placeholder sprite in the dialogue box ↩
Copyright © Sean. All Rights Reserved. View Source.