Skip to content

Authoring How-Tos

This page is a practical recipe book for common tasks when authoring for NovyJump. The first half covers Ren’Py; the Ink How-Tos section near the bottom gives the equivalents for Ink. For the full list of what each engine supports, see Supported Renpy Syntax and Supported Ink Syntax.

Create a new variable

Use default so the variable is declared and has an initial value.

default coins = 0

If you only assign to a variable without declaring it first, the converter will still create it, but you may get warnings when referencing it in dialogue.

Change a variable

Use $ var = expr:

$ coins = coins + 1

Use a variable inside dialogue text

Use [var] interpolation:

"You have [coins] coins."

Branch the story with if

if coins >= 10:
"You can afford it."
else:
"Not enough coins."

Present choices with menu

menu:
"Buy the item":
$ coins = coins - 10
"Thanks!"
"Don’t buy":
"Maybe later."

Change the background

scene bg_room

If you want to reference a background by file path, define an alias with image and then scene the alias:

image bg_room = "images/bg_room.png"
label start:
scene bg_room

Show a character sprite

show alice happy at left

Notes:

  • alice is treated as the character id.
  • happy becomes a tag.
  • at left is optional, and only a small set of at tags are supported.

Hide a character sprite

hide alice

Play and stop audio

play music "music/theme.mp3"
stop music
play sound "sfx/click.wav"
stop sound

Define a speaking character name and basic styling

define a = Character(
"Alice",
who_color="#ffcc00",
what_color="#ffffff",
what_size=42
)
label start:
a "Styled dialogue."

Notes:

  • Only a subset of Renpy character/style features are converted.
  • Font assets are not currently handled as uploadable assets by the converter.

Jump between sections of your story

Use jump:

jump chapter_two
label chapter_two:
"Welcome to chapter two."

call/return are not currently supported for NovyJump conversion.


Ink How-Tos

The same recipes for authors writing in Ink. NovyJump supports standard Ink plus a set of multimedia directives written with Ink’s tag (#) syntax — see Supported Ink Syntax for the complete reference.

Create and change a variable

Declare globals with VAR, constants with CONST, and assign with ~:

VAR coins = 0
CONST MAX_COINS = 100
~ coins = coins + 1

Use a variable inside dialogue text

Use an inline conditional or print the value directly:

You have {coins} coins.

Branch the story with a conditional

{ coins >= 10:
You can afford it.
- else:
Not enough coins.
}

Present choices

Use * (once-only) or + (sticky). The [bracketed] text is what the player sees:

* [Buy the item]
~ coins = coins - 10
Thanks!
-> shop
+ [Don't buy]
Maybe later.
-> shop

Change the background and play audio

Use multimedia directives:

bg_room.png
# music: theme.mp3, channel=bgm, loop=true
# sfx: click.wav

Show and clear a character sprite

# sprite: alice, alice_happy.png, happy, x=540, y=960
# clear_character

Speaker dialogue

A line beginning with an ALL_CAPS: name is treated as that character speaking:

ALICE: Nice to meet you.

Jump between sections of your story

Use knots and diverts:

-> chapter_two
=== chapter_two ===
Welcome to chapter two.
-> END

Standard Ink features that are not converted (functions, threads, EXTERNAL, sequences/cycles, INCLUDE) are listed in Supported Ink Syntax.