Skip to guide
StoryomiStoryomiCreator guideOpen Studio
On this page

Best practices

How to structure, pace and branch a story people finish — and the known limitations to design around.

Structure a story#

Chapters and scenes are your scaffolding — use them deliberately.

Pace the reading#

The engine is the director — feed it short lines and let the drip do the work.

  • Keep lines short. One idea per line reads faster and hits harder.
  • In chats, let messages drip — a long wall of text loses the rhythm of a real conversation.
  • Alternate texture: a chat scene after a narration scene, a call after a quiet moment.
  • Use @notify and locks to tease what’s coming, not to spam the player.

Branching hygiene#

Big branching amplifies scope. Keep it flat, named and mergable.

SimOS vs Standard VN#

The two templates have different strengths — pick the one that serves the scene.

AspectSimulated OSStandard VN
MoodPhone-native: chats, feeds, callsCinematic: sprites, full-bleed art
InteractionsReply, comment, subscribe, answerChoose from dialogue options
SpritesNot renderedAuto-staging + expressions
@appRequired to switch appsNot used
Best forModern, chat-driven storiesClassic visual novel pacing

Do#

  • Register characters, assets and variables before you reference them — validation then catches typos early.
  • Start each story with a short, atmospheric scene that establishes who, where and why.
  • End every chapter on a hook or a decision so players hit “next chapter” wanting more.
  • Use session variables ($var) for anything that should reset on a fresh playthrough.
  • Keep branching flat — merge branches back into shared labels instead of nesting forever.
  • Vary the texture: chats for intimacy, calls for tension, narration for atmosphere.
  • Name labels clearly — they double as jump targets and show up in the flowchart.

Don’t#

  • Don't reference an unregistered name and hope — the engine will refuse to run it.
  • Don't bury a choice in a choice in a choice; players lose the thread.
  • Don't write one unbroken block of narration — split it with dialogue or a choice.
  • Don't rely on sprites in SimOS games — they only render in Standard VN.
  • Don't make every line a decision; choices lose weight when everything is one.
  • Don't forget @end — a chapter that never ends can't load the next one.
  • Don't put player-facing numbers in UI copy; let the engine own the state.

Known limitations#

OmiScript is under active development. These features are partial or reserved — don’t build your story around them yet.