Suika2 Command Reference


This command changes the background image. After changing the background image, all character images vanish from the stage.

@bg sample.png 1.5
@bg sample.png
@bg sample.png 1.5 c
@bg sample.png 1.5 curtain-left
@bg #000000 1.5 eye-close
@bg #000000 0
@bg sample.png 1.5 eye-open


This command plays BGM. BGM files need to be stored in the bgm folder. Suika2 can only play Ogg Vorbis 44.1kHz stereo and monaural format.

@bgm sample.ogg
@bgm stop
@bgm sample.ogg once
@vol bgm 0 2
@wait 2
@bgm stop


This command changes the character.

Effects are the same as @bg.

@ch center sample.png 0.5
@ch c sample.png 0.5
@ch c none 0.5
@ch c sample.png
@ch c sample.png 1.0 mask
@ch c sample.png 1.0 n 100 50
@ch c sample.png 1.0 n 0 0 show


This command moves a character image. Refer to @ch section for details on how to specify character position and alpha value.

@cha center 1.0 move -600 0 hide
@cha center 1.0 accel -600 0 hide
@cha center 1.0 brake -600 0 hide
@ch right sample.png 0 n 600 0 hide
@cha right 2.0 move -600 0 show


This command changes the characters at once. In addition, it changes background at the same time. Character specification order is center, right, left and back. Effects specifiers are the same as @bg.

@chs center.png right.png stay stay 1.0
@chs none stay stay stay 1.0
@chs stay stay stay stay 1.0 background.png
@chs center.png stay stay stay 1.0 background.png curtain


This command instructs Suika2 to wait for a click before continuing. While waiting for a click, the message box is hidden.



This command jumps to the specified subroutine. Use @return to return.

@gosub SUB

Describe the process here.


This command jumps to a label. Use @goto to make or break a loop.

Describe the process here.
@goto abc
@goto $LOAD
@goto $SAVE


This command jumps to the specified label if the specified condition is true.

@if $1 >= 10 abc
Variable 1 is less than 10.


This creates a label, which can be used as a jump target. They are used with the @goto, @gosub, @if, @menu, @retrospect and @switch commands.

Show some messages.
@goto JumpTarget


This command jumps to another script. Script files need to be in the txt folder.

@load 001.txt


This command displays a menu using two images. @menu can create up to 16 buttons.

Basically, the first image is displayed by default, with the second image being substituted when a button is hovered over.

See the demo game for a helpful example!

NB: Menus cannot be canceled using right click.

@menu menu.png menu-selected.png START 640 480 240 120


Prints text to the message box.

Hello, world!


This command is a variant of @switch. It shows the first four options on the north, east, west and south areas of the screen.

Parent options are hidden when * is specified.


This command executes "event image catalog mode". You could use it, for example, to display the CG artwork that a player has unlocked.

@retrospect is similar to @menu in its use of two images, however it has some more advanced parameter options.

@retrospect menu.png menu-selected.png 0 0 0 320 240 PICTURE1 $1 320 240
@goto END
@bg picture1.png 1.0


This is used to return from subroutines.

@gosub SUB

Describe the process here.


This command plays sound effects. Sound effect files need to be in the se folder. Suika2 can only play Ogg Vorbis 44.1kHz stereo and monaural format.

@se click.ogg
@se stop
@se sample.ogg loop
@se click.ogg voice


This command shows options and jumps to the specified label. The number of options is fixed to three.

@select label1 label2 label3 "Good morning." "Good afternoon." "Good evening."
Good morning.
@goto end
Good afternoon.
@goto end
Good evening.

Message with character name

This prints text to the message box, and the character name to the name box.

Suika2 can play voice files when printing messages. Voice files need to be in the voice folder. Suika2 can only play Ogg Vorbis 44.1kHz stereo and monaural format.

*Name*Hello, world!
*Name*001.ogg*Hello, world!
*Name*@beep.ogg*Hello, world!


This sets a value to a variable.

Local variables are $0 to $9999. Local variables are stored independently in each save file.

Global variables are $10000 to $10999. Global variables are stored commonly across all save data.

Note: all variables must be integers.

The variables are initialised to 0.

@set $0 = 1
@set $10 += 23
@set $0 = $RAND
@set $1 += $2


This command enables or disables the save and load screen which is invoked by right click while waiting for message click or option click. When you call @goto $LOAD or @goto $SAVE, @setsave enable is implicitly called.

@setsave enable
@setsave disable


This command shakes the screen.

@shake horizontal 1.0 3 100
@shake vertical 1.0 3 100


Shows up to two levels of options. There are eight parent options, and each parent option has eight child options.

@switch "Parent option 1" "Parent option 2" * * * * * * LABEL1 * * * * * * * * * * * * * * * LABEL2 * * * * * * * * * * * * * * *
@switch "Parent option 1" "Parent option 2" * * * * * * LABEL1 "Child option 1" LABEL2 "Child option 2" * * * * * * * * * * * * LABEL3 "Child option 3" LABEL4 "Child option 4" * * * * * * * * * * * *


This command plays a video file. At the moment, this functionality is enabled on Windows only. Recommended video file format is .WMV file. .AVI file which contains H.264+AAC is also supported on Windows 10/11. Video files are stored in mov directory. mov directory is not stored in .arc file.

@video sample.avi


This command sets the sound volume.

Sound volumes of these three channels are stored in each local save file. You can change the volumes frequently for sound production purpose.

If you want to set global master volumes which are common between save files, you can use channel name in CAPITALS. When you set global master volumes, set fading time to 0.

@vol bgm 0.5 1.0
@vol b 0.5 1.0
@vol BGM 0.5 0


This command instructs Suika2 to wait for input from the keyboard or mouse before continuing. Input from the keyboard or mouse will interrupt @wait (thus allowing Suika2 to continue). While waiting for input, the message box is hidden.

@wait 5.0