Config Reference

config.ini is the main configuration file for your Suika3 game. It controls everything from window titles and fonts to UI layout, sound volumes, and character behavior.

Lines starting with # are comments. To disable an optional setting, prefix it with #.


Game Settings

NameTypeDescription
game.novelBooleanEnable NVL (full-screen novel) mode. (true/false)
game.localeStringForce the language over the system locale setting.
game.titleStringGame title (default, used as fallback).
game.title.enStringLocalized game title in English.
game.title.frStringLocalized game title in French.
game.title.esStringLocalized game title in Spanish.
game.title.deStringLocalized game title in German.
game.title.itStringLocalized game title in Italian.
game.title.elStringLocalized game title in Greek.
game.title.ruStringLocalized game title in Russian.
game.title.zh_cnStringLocalized game title in Simplified Chinese.
game.title.zh_twStringLocalized game title in Traditional Chinese.
game.title.jaStringLocalized game title in Japanese.

game.locale

ValueDescription
(empty)Use the system locale setting.
enFix to English.
en-usFix to English (US).
en-gbFix to English (UK).
en-auFix to English (Australia).
en-nzFix to English (New Zealand).
frFix to French.
fr-frFix to French (France).
fr-caFix to French (Canada).
esFix to Spanish.
es-esFix to Spanish (Spain).
es-laFix to Spanish (Latin America).
deFix to German.
itFix to Italian.
elFix to Greek.
ruFix to Russian.
zh-cnFix to Simplified Chinese.
zh-twFix to Traditional Chinese.
jaFix to Japanese.

Font File Settings

Up to four TrueType fonts can be loaded. Font 1 is the default. In messages, you can switch fonts inline with \f{N} (e.g., \f{2}).

NameTypeDescription
font.ttf1StringPath to font 1 (default font).
font.ttf2StringPath to font 2 (optional).
font.ttf3StringPath to font 3 (optional).
font.ttf4StringPath to font 4 (optional).

Example:

font.ttf1=system/font/rounded-l-mplus-1c-bold.ttf
#font.ttf2=

Message Box Settings

The message box displays dialogue text during the game.

Layout

NameTypeDescription
msgbox.imageStringPath to the message box image.
msgbox.anime.hideStringAnimation file played when the message box hides.
msgbox.anime.showStringAnimation file played when the message box appears.
msgbox.xIntegerX position of the message box in pixels.
msgbox.yIntegerY position of the message box in pixels.
msgbox.margin.leftIntegerLeft margin for text inside the message box.
msgbox.margin.topIntegerTop margin for text inside the message box.
msgbox.margin.rightIntegerRight margin for text inside the message box.
msgbox.margin.bottomIntegerBottom margin for text inside the message box.
msgbox.margin.lineIntegerLine height in pixels (includes character height).
msgbox.margin.charIntegerAdditional horizontal spacing between characters.

Font

NameTypeDescription
msgbox.font.selectIntegerFont to use (1–4).
msgbox.font.sizeIntegerFont size in pixels.
msgbox.font.r/g/bIntegerFont color (0–255 each).
msgbox.font.outline.widthIntegerOutline width in pixels (0 to disable).
msgbox.font.outline.r/g/bIntegerOutline color (0–255 each).
msgbox.font.rubyIntegerRuby (furigana) font size in pixels.
msgbox.font.tategakiBooleanEnable vertical (tategaki) writing.

Character Background Fill

Draws a colored fill behind each character glyph.

NameTypeDescription
msgbox.fill.enableBooleanEnable character background fill.
msgbox.fill.r/g/bIntegerFill color (0–255 each).

Dimming (NVL Mode)

In NVL mode, previously displayed paragraphs can be dimmed to emphasize the current line.

NameTypeDescription
msgbox.dim.enableBooleanEnable dimming of previous paragraphs.
msgbox.dim.r/g/bIntegerDim font color (0–255 each).
msgbox.dim.outline.widthIntegerDim outline width in pixels.
msgbox.dim.outline.r/g/bIntegerDim outline color (0–255 each).

Read Messages

Already-seen messages can be displayed in a different color.

NameTypeDescription
msgbox.seen.enableBooleanEnable different color for seen messages.
msgbox.seen.r/g/bIntegerSeen message font color (0–255 each).
msgbox.seen.outline.widthIntegerSeen message outline width in pixels.
msgbox.seen.outline.r/g/bIntegerSeen message outline color (0–255 each).

Other

NameTypeDescription
msgbox.skip_unseenBooleanAllow skip mode to advance through unseen messages.

Name Box Settings

The name box displays the speaker's name above the message box. Disable it (namebox.enable=false) for full-screen NVL-style games.

Layout

NameTypeDescription
namebox.enableBooleanEnable the name box.
namebox.imageStringPath to the name box image.
namebox.anime.hideStringAnimation file played when the name box hides.
namebox.anime.showStringAnimation file played when the name box appears.
namebox.xIntegerX position of the name box in pixels.
namebox.yIntegerY position of the name box in pixels.
namebox.margin.topIntegerTop margin for text inside the name box.
namebox.margin.leftIntegerLeft margin for text inside the name box.
namebox.centeringBooleanCenter the name text horizontally inside the name box.

Font

NameTypeDescription
namebox.font.selectIntegerFont to use (1–4).
namebox.font.sizeIntegerFont size in pixels.
namebox.font.r/g/bIntegerFont color (0–255 each).
namebox.font.outline.widthIntegerOutline width in pixels (0 to disable).
namebox.font.outline.r/g/bIntegerOutline color (0–255 each).
namebox.font.rubyIntegerRuby font size in pixels.
namebox.font.tategakiBooleanEnable vertical (tategaki) writing.

Click Animation Settings

A small animation shown at the bottom of the screen to prompt the player to click.

NameTypeDescription
click.xIntegerX position of the click animation.
click.yIntegerY position of the click animation.
click.intervalFloatDuration of each animation frame cycle in seconds.
click.image1–16StringImage paths for each frame (at least 1 required).
click.moveBooleanIf true, the animation moves with the text cursor position.

Choose Box Settings

Up to 8 choice boxes can be displayed by [choose]. Each box has its own position and images.

Font

NameTypeDescription
choose.font.selectIntegerFont to use (1–4).
choose.font.sizeIntegerFont size in pixels.
choose.font.idle.r/g/bIntegerFont color when not hovered (0–255 each).
choose.font.idle.outline.widthIntegerOutline width when not hovered.
choose.font.idle.outline.r/g/bIntegerOutline color when not hovered.
choose.font.hover.r/g/bIntegerFont color when hovered (0–255 each).
choose.font.hover.outline.widthIntegerOutline width when hovered.
choose.font.hover.outline.r/g/bIntegerOutline color when hovered.
choose.font.rubyIntegerRuby font size in pixels.
choose.font.tategakiBooleanEnable vertical (tategaki) writing.

Sound Effects

NameTypeDescription
choose.change_seStringSound effect played when moving between choices.
choose.click_seStringSound effect played when a choice is selected.

Box Layout (1–8)

Each box (1–8) shares the same set of keys. Replace N with the box number.

NameTypeDescription
choose.boxN.idleStringImage path for the idle (non-hovered) state.
choose.boxN.hoverStringImage path for the hovered state.
choose.boxN.xIntegerX position in pixels.
choose.boxN.yIntegerY position in pixels.
choose.boxN.margin.topIntegerTop margin for the label text inside the box.
choose.boxN.idle_animeStringAnimation file for the idle state.
choose.boxN.hover_animeStringAnimation file for the hovered state.

Save Data Settings

NameTypeDescription
save.thumb.widthIntegerWidth of save slot thumbnail in pixels.
save.thumb.heightIntegerHeight of save slot thumbnail in pixels.
save.new_imageStringPath to a "New" badge image shown on unused save slots.

System Button Settings

The system button (SysBtn) is a hamburger-style menu button, typically in the top-left corner. It appears on mouse movement and auto-hides after inactivity. See also: sysmenu.md.

NameTypeDescription
sysbtn.enableBooleanEnable the system button. Set to false for kiosk/demo.
sysbtn.idleStringImage path for the idle state.
sysbtn.hoverStringImage path for the hovered state.
sysbtn.anime.outStringAnimation while button is hidden.
sysbtn.anime.fadeinStringAnimation while button is appearing.
sysbtn.anime.appearStringAnimation while button is visible but not hovered.
sysbtn.anime.hoverStringAnimation while button is hovered.
sysbtn.anime.fadeoutStringAnimation while button is disappearing.
sysbtn.xIntegerX position in pixels.
sysbtn.yIntegerY position in pixels.
sysbtn.widthIntegerWidth of the hit area in pixels.
sysbtn.heightIntegerHeight of the hit area in pixels.
sysbtn.enter_seStringSound effect when the cursor enters the button.
sysbtn.leave_seStringSound effect when the cursor leaves the button.
sysbtn.click_seStringSound effect when the button is clicked.

Auto Mode Settings

Auto mode advances text automatically without player input.

NameTypeDescription
automode.imageStringPath to the auto mode banner image.
automode.anime.hideStringAnimation played when the banner hides.
automode.anime.showStringAnimation played when the banner appears.
automode.xIntegerX position of the banner in pixels.
automode.yIntegerY position of the banner in pixels.
automode.enter_seStringSound effect when entering auto mode.
automode.leave_seStringSound effect when leaving auto mode.

Skip Mode Settings

Skip mode rapidly advances through already-seen text.

NameTypeDescription
skipmode.imageStringPath to the skip mode banner image.
skipmode.anime.hideStringAnimation played when the banner hides.
skipmode.anime.showStringAnimation played when the banner appears.
skipmode.xIntegerX position of the banner in pixels.
skipmode.yIntegerY position of the banner in pixels.
skipmode.enter_seStringSound effect when entering skip mode.
skipmode.leave_seStringSound effect when leaving skip mode.

GUI Settings

These settings control the appearance of built-in GUI screens (save/load and history).

Save/Load Screen

Font settings for the text elements within each save slot item.

PrefixDescription
gui.save.index.font.*Slot index number (e.g., "1", "2", …).
gui.save.date.font.*Save date and time.
gui.save.chapter.font.*Chapter name at the time of saving.
gui.save.msg.font.*Preview of the message text.

Each prefix supports the following suffixes:

SuffixTypeDescription
.selectIntegerFont to use (1–4).
.sizeIntegerFont size in pixels.
.r / .g / .bIntegerFont color (0–255 each).
.outline.widthIntegerOutline width in pixels.
.outline.r/g/bIntegerOutline color (0–255 each).
.rubyIntegerRuby font size in pixels.
.tategakiBooleanEnable vertical writing.
.margin.charIntegerHorizontal character spacing in pixels.
.margin.lineIntegerLine height in pixels (msg only).
.multilineBooleanAllow multi-line display (msg only).

History Screen

PrefixDescription
gui.history.name.font.*Speaker name column.
gui.history.text.font.*Dialogue text column.

Each prefix supports the same font suffixes as above, plus:

NameTypeDescription
gui.history.quote.name_separatorStringSeparator between name and text (default: \n).
gui.history.quote.startStringOpening quotation mark for dialogue text.
gui.history.quote.endStringClosing quotation mark for dialogue text.
gui.history.hide_lastBooleanHide the most recent (current) history entry.

Text Preview

The text preview item shows the current message in a GUI overlay.

NameTypeDescription
gui.preview.font.*Same font suffixes as above.

Sound Settings

Initial volume levels. Players can adjust these in-game via the system menu.

NameTypeDescription
sound.vol.bgmFloatBGM volume (0.0–1.0).
sound.vol.voiceFloatVoice volume (0.0–1.0).
sound.vol.seFloatSound effect volume (0.0–1.0).
sound.vol.per_characterFloatPer-character volume multiplier for voice (0.0–1.0).

Character Settings

Names

Up to 32 characters can be registered. Their names are used for lip sync, auto focus, and localization. Replace N with a number from 1 to 32.

NameTypeDescription
character.nameNStringDefault name (used as fallback).
character.nameN.enStringEnglish name.
character.nameN.zh-cnStringSimplified Chinese name.
character.nameN.zh-twStringTraditional Chinese name.
character.nameN.jaStringJapanese name.

Image Folders

Specifies which image folder belongs to which character, enabling lip sync and auto focus.

NameTypeDescription
character.folderNStringPath to the character's image folder (e.g., ch/midori/).

Eye Blinking

See also: eye-blink.md.

NameTypeDescription
character.eyeblink.intervalFloatAverage interval between blinks in seconds.
character.eyeblink.frameFloatDuration of each blink frame in seconds.

Lip Sync

See also: lip-sync.md.

NameTypeDescription
character.lipsync.frameFloatDuration of each lip sync frame in seconds.
character.lipsync.charsIntegerNumber of characters spoken per lip sync cycle.

Auto Focus Settings

Note: Auto focus is not yet functional as of RC1.

Automatically adjusts character brightness to highlight the current speaker.

NameTypeDescription
autofocus.on_text_nameBooleanFocus the speaker and dim others when [text] has a name.
autofocus.on_text_no_nameBooleanDim all characters when [text] has no name.
autofocus.on_chBooleanDim non-speakers when [ch] is used.
autofocus.on_chooseBooleanDim all characters when [choose] is shown.

Stage Settings

Controls the default margins applied when placing character sprites on the stage.

NameTypeDescription
stage.ch_margin.bottomIntegerBottom margin for character sprites in pixels.
stage.ch_margin.leftIntegerLeft margin for character sprites in pixels.
stage.ch_margin.rightIntegerRight margin for character sprites in pixels.

Kira Kira Effect Settings

A click-effect animation that plays at the cursor position when the player clicks.

NameTypeDescription
kirakira.enableBooleanEnable the Kira Kira effect.
kirakira.add_blendBooleanUse additive blending (brighter glow effect).
kirakira.frameFloatDuration of each animation frame in seconds.
kirakira.image1–16StringImage paths for each frame of the effect.

Emoji Settings

Up to 32 emoji images can be registered and used inline in messages with \e{name}.

NameTypeDescription
emoji.nameNStringIdentifier used in \e{name} tags.
emoji.imageNStringPath to the emoji image file.

Example:

emoji.name1=heart
emoji.image1=system/emoji/heart.png

Text-To-Speech Settings

NameTypeDescription
tts.enableBooleanEnable text-to-speech.

Release Mode Settings

In release mode, save data is written to the OS's user data directory (e.g., AppData on Windows) instead of the game folder. Enable this for distributed builds.

NameTypeDescription
release_mode.enableBooleanEnable release (install app) mode.