Skip to content

Getting Started

Welcome to NovyJump, a platform for creating and playing interactive visual novels on mobile devices. As an alpha tester, you’ll be among the first to use our web-based authoring tools to bring your stories to life.

NovyJump supports two scripting formats: Ren’Py and Ink. Choose the one that fits your background and story.

Alpha expectations: You’re testing early software. Expect rough edges, and know that your feedback is invaluable. If something breaks or feels wrong, let us know.

Choosing Your Format

Ren’PyInk
Best forAuthors with Ren’Py experience; rich visual novel conventions (define characters, show sprites, play music)Authors who want clean narrative prose; interactive fiction backgrounds
Syntax stylePython-indented, statement-basedLine-oriented, lightweight
MultimediaBuilt-in: scene, show, play musicNovyJump extensions: # image:, # music:, # sprite:
Variablesdefault, $, defineVAR, CONST, LIST, ~
Branchingmenu:, if/elif/else* / + choices, { condition: }

If you’re unsure, start with Ren’Py if you want character sprites and scenes built into the language. Start with Ink if you want to focus on the words first and layer in visuals via tags.

Quick Start

The NovyJump web platform lets you write, preview, and publish visual novels directly in your browser.

Creating Your Story

  1. Create a new story from your dashboard — choose Ren’Py or Ink as your framework
  2. Add a chapter to organize your content
  3. Open the script editor to write your script

The Script Editor

The editor is where you write your story. Your script is automatically validated as you type, highlighting any syntax issues.

Uploading Assets

Use the asset manager to upload images and audio files for your story. Once uploaded, reference them in your script by their filename or path.

Previewing Your Game

Click Preview to see your story running in the JumpDrive engine. This shows exactly how players will experience your game on mobile.

Publishing

When you’re ready to share, publish your story to make it available to players. You can update and republish as often as needed.

Writing a Ren’Py Script

For detailed syntax and examples, see:

Here’s a minimal Ren’Py example:

default trust = 0
define alice = Character("Alice", who_color="#ffcc00")
label start:
scene bg_room
show alice happy at center
alice "Welcome to the story!"
menu:
"Be friendly":
$ trust = trust + 1
alice "Thanks for being kind."
"Be distant":
alice "I understand."
jump next_scene
label next_scene:
if trust > 0:
"Alice remembers your kindness."
else:
"Alice seems cautious."

Writing an Ink Script

For a complete reference, see Supported Ink Syntax.

Here’s a minimal Ink example with NovyJump multimedia directives:

bg_room.png
VAR trust = 0
=== start ===
# music: theme.mp3, channel=bgm, loop=true
# sprite: alice, alice_happy.png, happy, x=540, y=960
Alice: Welcome to the story!
* Be friendly
~ trust = trust + 1
Alice: Thanks for being kind.
-> next_scene
* Be distant
Alice: I understand.
-> next_scene
=== next_scene ===
{ trust > 0:
Alice remembers your kindness.
- else:
Alice seems cautious.
}
-> END

Working with Assets

For detailed specifications, see Media and Resolution Specs.

Supported Formats

  • Images: PNG, JPG, WebP, AVIF, SVG, GIF, BMP
  • Audio: MP3, WAV, FLAC, Opus
  • Avoid: OGG files for audio (currently treated as video by the converter)

Portrait Orientation

NovyJump renders on a 1080x1920 portrait canvas. Design your backgrounds and sprites with this aspect ratio in mind.

Sprite Naming

For character sprites, use a consistent pattern like alice_happy.png, alice_sad.png. When you write show alice happy (Ren’Py) or # sprite: alice, alice_happy.png, happy (Ink), the engine matches the character with the tag.

Supported Positions

When using show ... at <position> (Ren’Py), these transforms are available:

  • left — Left side of screen
  • right — Right side of screen
  • center — Default
  • truecenter — Vertically and horizontally centered
  • topleft, topright, offscreenleft, offscreenright

How It Works

When you write a script in the NovyJump editor, it is converted to JumpTree (a graph-based format) and played by the JumpDrive engine. JumpDrive renders your story on mobile in portrait orientation.

You don’t need to understand the internal format — just write valid Ren’Py or Ink, and the platform handles the rest. Player progress is saved automatically.

What’s Not Supported

Ren’Py:

  • NVL mode
  • call/return (use jump instead)
  • Complex Python (function calls, imports, classes)

Ink:

  • Threads
  • External functions (EXTERNAL)
  • The INCLUDE statement
  • Sequences, cycles, shuffles

What’s in Development

  • Custom fonts

Alpha Expectations & Feedback

Alpha Expectations

  • Some UI elements may change between releases
  • Error messages will update as more features are added
  • Asset management features are still evolving
  • Feedback will be very appreciated!

Reporting Issues

When you encounter a bug or have feedback:

  1. Note what you were trying to do
  2. Copy any error messages
  3. Include a snippet of your script if relevant

Your feedback will directly shape how NovyJump is made.

Quick Reference — Ren’Py

# Dialogue
"Narration text"
alice "Character speech"
# Variables
default score = 0
$ score = score + 1
"You have [score] points."
# Flow
label scene_name:
jump scene_name
# Choices
menu:
"Option A":
"Result A"
"Option B":
"Result B"
# Conditionals
if condition:
"Branch A"
else:
"Branch B"
# Visuals
scene bg_name
show character tag at position
hide character
with dissolve
# Audio
play music "path/to/file.mp3"
play sound "path/to/file.wav"
stop music

Quick Reference — Ink

bg.png
VAR score = 0
=== scene_name ===
# music: theme.mp3
# sprite: alice, alice_happy.png, happy, x=540, y=960
Narration text.
ALICE: Character speech.
~ score = score + 1
You have {score} points.
* Option A
Result A.
-> next
* Option B
Result B.
-> next
=== next ===
{ score >= 10:
High score!
- else:
Keep going.
}
-> END