Perseus Patrol devlog #5: Storytelling ways

Perseus Patrol devlog #5: Storytelling ways

For years I was trying to find a way how I can drive a deeply engaging story in any type of video games. While the GOATed “Detroit: Become Human” delivers a core storytelling experience, not much happens outside of the story beats in terms of gaming: move, run, crouch, search and basic interact. No combat, no higher engagements. It makes sense though. Introducing all those elements bring the interaction space level not manageable by a branching storyline.

On the other side, we have those small dialog boxes flying in for action games with portraits saying things. I am mostly turned off by those and tune in after a few boxes, even if the story would be interesting. The delivery is just boring for me. 🙂

Lately I tried some visual novel style games and been captivated by them. It is new for me, as I tried similar before and experienced them as boring. Newly I can appreciate how much more one can do with a visual novel than just in-game dialogue boxes.

Additionally, when I finished Giant of the Stars’ manuscript, I felt I can write more elaborate scenes than before. And I want those to be experienced by the player during my gameplay. To make the player wish for the next one to come up and not dread them as downtime, I think the story has to be playable too.

Meaning, story must come through interaction. Visual novels seem to give the level of interaction I am looking for.

Hence I gave it a try for myself and checked out a few libraries for a quickstart:

Why PixiVN after all?

While all above options have their merits, I quickly disqualified NarraLeaf when I saw how RenJS and PixiVN approaches storywriting:

  • RenJS uses yaml files to declaratively write the story,
  • PixiVN uses a more complex but industry wide accepted format called Ink.

NarraLeaf’s examples were using React and code itself to write the story which feels like a lot of extra work when the inevitable changes, rewrites and fixes will come along. Plus it would limit working with the story to engineer skills rather then writing skills only.

While RenJS and PixiVN looks similar at first, I chose Pixi for its apparent maturity and first-class capabilities.

Showcase proof of concept with PixiVN

Note, current proof of concept uses some GenAI images to speed up concept iterations. However there will be no GenAI used in any shape or format. For any of my writing, I am never using GenAI. Would defeat the purpose of artistic expression, learning and would not be able to express my personality. However I am not a talented graphical artist, see Captain Colbert’s green character for a proof of that. 😉😀

As per my goal to make a real-time game, I can’t stop the main game from processing the idle mechanics, keeping collecting materials, training crew, etc. So my first challenge is to integrate the chosen visual novel engine with my current architecture!

With a bit of planning, I decided to put the entry to point to the player’s choice under a new part called “Missions”:

In-game entry point for visual novels as "Missions"

Under the “Operations” menu point, just above the craft assignments seemed the perfect spot to show if any mission is available at the current location where Steeldome is placed.

I want to tell the captain’s story, from his/her perspective. And the captain is the last one to abandon ship in any situation. This makes the Steeldome’s location the perfect marker for a mission availability, hence I can connect mission descriptions to the celestials. I will use mission and visual novel chapter potentially interchange-ably from now on.

Next challenge was to set up the proper rendering dimensions, the canvas inside the React dialog, which took most of my day, including figuring out how to describe proper coordinates in the Ink files. In the end, I managed to put together a super simple prologue scene between the captain and the admiral:

Prologue: admiral welcomes captain

Further playing around with multiple PixiVN features I wanted to test as early as possible:

  • positioning background and characters, showing ship bridge and external view side by side
  • fading in and out multiple characters,
  • branching choices,
  • special design for all elements, including the message boxes.

And I got this as my second chapter over a day or so trying:

Visual Novel PoC video

I am still working on a connection between the novel chapters and the main game, however I am close to stabilizing the concept:

  • first, I can transfer current resource data to the novel on start and retrieve past decisions too,
  • then I can use this information to offer choices during the scene or to drive the direction of the scene based on what you already did in the main game,
  • at last, I can dispatch game state changes at the end of a scene, rewarding or punishing you for in-scene actions!

Over time I plan to outsource the art required for the story to professional artists.

Summary

I like how PixiVN turned out for me:

  • can focus on the writing part using the Ink format while not worrying about technical issues,
  • can focus on the technical capabilities independently of what I am writing, like extending Pixi and the game with mechanics will be very reusable.

I could show the visual novel right inside the game without navigating away, without blocking the underlying main loop. This way I can create the feeling of real time-ness while still progressing the story with detailed scenes!

💡
Beware, currently the visual novels are the most buggy parts of the pre-alpha demo deployed! Stabilization will be done as soon as I have time to circle back to the visual novel progress.

My next goals on this front is to write a fully enjoyable intro chapter with multiple small follow-on scenes. This early storyline would cover the in-game tutorial. Starting from the take-over of the ship by the admiral’s orders to the point where you are out in the wild and ready to check in with the first colony!

Leave your email address now to get all my devlogs and other content straight to your inbox!