DEV Community

Cover image for DevLog 20250512 Visual Novel Game Framework (Highlights)

DevLog 20250512 Visual Novel Game Framework (Highlights)

When set to imagine practical, easy-to-use, lightweight applications of Divooka, a visual novel game framework is one of those that came to mind. Visual novels should be such a straightforward type of application to build, yet surprisingly, it's not generally easy to find ready-to-use tools available for them. Of course, one can use Defold, Godot, Unity 3D, or even Unreal to build such a game — or the more technically inclined might just use SFML or other lower-level graphics libraries. Still, it's a lot of work to get a conceptually straightforward task done. Much like building an LLM agent or chaining different AI services together — it's straightforward, it's visual, it describes some kind of workflow or dataflow — then it's a good fit for Divooka.

Visual novels fundamentally consist of a bunch of scenes containing dialogues representing interactions between people. Here and there, they might also contain "cut scenes" — long paragraphs of reading. More advanced types might feature mobile phone screens, stores, or mini-games (like some eroges). Either way, the essence of a visual novel is graphical visuals + text as dialogue, in a largely sequential presentation order. Good visual novels, however, have plot branches that deviate depending on player choices.

Conceptually, based on common scenes and elements, we can easily group visual novel content from small to big as follows:

  1. Dialogue: a character image, maybe some voiceover, a few lines of text, with some player options for actions.
  2. A scene: we can denote it either as a single environment or a sequence of environments telling a single unit of story. This is mostly identified by a change of background image.
  3. A cutscene: a dedicated group of visuals + audio presented together as a single piece, without any user interaction.
  4. Game screens: start menu, gallery, shop/store, mini-games, credits, mobile phone screens (may be used as overlays instead of standalone screens, as in Steins;Gate), settings. May even include things like splash screens and load game menus.

In terms of story progression, considering both the linear and non-linear nature, we can structure a story like this:

  1. A sequence of scenes containing dialogues.
  2. Consider player action only at: dialogue options and outcomes of interactions with other game screens (e.g., mini-games, or stores).
  3. Depending on player action outcomes — which result in some metrics — certain scenes/dialogues are skipped, while others are added.
  4. A more advanced scenario might involve “dynamic scenes,” whose content is not the result of simple branching logic but varies slightly depending on earlier metrics. This would be considered the “holy grail,” and due to its complexity, most visual novels don’t attempt this. It’s important to note that some of the most popular visual novels barely have any meaningful branching logic, but simply stand out because of their characters, narrative, and storytelling.

One might imagine that visual novel story progression is best represented as a tree (or a series of if-else conditions), but in reality, it’s more like a directed graph.

(Tree representation of visual novel)

Image description

(Graph representation of visual novel)

Image description

Our goal, then, is to be able to express such story progression and branching logic on a dataflow diagram effectively, while at the same time taking good care of multimedia assets.

We will talk more specifically about how we approach this in Divooka with our Novella visual novel game framework.

Top comments (0)