Skip to content

Visuals & Audio ​

Every world comes with a clean chat interface out of the box. Here's how to go further.

In the editor, custom UI lives in Custom UI, audio tracks in Audio, and uploaded files in Assets.

Character portraits ​

Give a character a face: in the simple editor, click the camera square next to the character's name; in Studio, open the character's entry in Lorebook and use Portrait. Pick an image from Assets or upload one on the spot. In chat, that image and the character's name appear above every line they speak. When several characters have portraits, the AI is asked to open every reply with a hidden [speaker: Name] tag, so the right face is on screen before the first word arrives. A reply tagged as narration shows no face; if a model skips the tag, the chat falls back to a Name: marker or a name in the first sentence.

Pictures in the opening ​

An opening can carry a picture. Under the opening's text box, press Insert image and either upload a file or pick one from Assets; you can also drop a file onto the text box or paste one. The picture goes in at the cursor as [image:@asset:…|alt=…] and shows in chat where you put it. Options after the |: alt= (what the picture is), caption= (a line under it), size=sm|md|lg|full, placement=left|center|right. Plain markdown works too — ![](@asset:{id}) — and both accept an https:// link instead of an asset.

Custom UI ​

The default chat is enough for most worlds. Custom UI is how you go beyond it:

The horror world from earlier uses a CRT-style green-on-black interface with a status bar showing health, energy, and armed status. Studio AI generated it from a description like "post-apocalyptic horror UI, CRT monitor aesthetic, dark green glowing text, scanline effects."

You don't need to know code. Describe the look and feel you want and let the Studio's AI assistant build it. Custom UI is a purely visual layer — it reads game state but never changes it.

For the full Custom UI guide → Advanced: Custom UI Deep Dive

Audio ​

TypePurposeExample
BGMBackground music, loops continuouslyTavern theme, battle music, exploration track
SFXOne-shot sound effectsSword clash, door creak, notification chime
AmbientEnvironmental loops, layered with BGMRain, forest sounds, crowd murmur

BGM playlists auto-rotate through tracks, and conditional BGM switches based on game state (e.g., battle music when the variable location is "arena").

Select a track in Audio to see its Track ID, then click Copy ID. Use that ID in custom UI calls such as api.playAudio("track-id"); renaming the track does not change its ID.

Turn off Allow AI control to prevent the narrator from playing, stopping, or changing that track. Your custom UI, scripts, behaviors, and playlists can still control it. Existing tracks keep AI control enabled unless you turn it off.

A horror world might play tense BGM during exploration, fire a sharp SFX when something lunges at the player, and run steady rain ambience in the background. Three layers, all at once.

For audio patterns and conditional BGM → Advanced: Audio Design

Scene images ​

Pictures that appear on their own. Each scene image has a short id (img1), a picture from your Assets or an https URL, and one or two sentences saying when to show it — "the cat Minyu gets startled and jumps straight up". That sentence is the switch and the condition, followed literally: written, the picture appears in every reply that meets it ("after every reply" means every reply); empty, it only appears where you paste its code.

Who places the images is one choice at the top of the Scene Images page:

  • Picked after each reply (default, recommended): once the AI has written its reply, smart tracking checks each image's condition and places every image whose condition holds at the end of that reply. It works the same whichever model the player uses.
  • The story AI inserts them: the story AI writes [image: img1] in its text, so a picture can sit between paragraphs — but only if the model follows instructions, and some models almost never do.

With smart tracking turned off in Overview, the story AI always inserts them itself.

  • Add them under Scene Images in the editor (Studio has the same page as a panel). Upload from your computer or pick from Assets; several files at once become several images, named after the files.
  • Write [image: img1] in a first message to show a picture from the very start. The same works inside lore entries: the AI carries it into its reply when it uses that entry.
  • Limit an image to certain first messages under Openings.
  • Players get a gallery in the play header. Pictures the story has already shown are there in full; the rest show your unlock hint instead, so the player knows there is a moment worth reaching.
  • The "when to show it" sentence is followed as written. "When the two sit across from each other in the café" shows the picture only on those replies; "after every reply" shows it on every reply. An image already shown comes back whenever its condition holds again.

Assets ​

You can upload images, audio files, fonts, and other media through the Assets section in the editor. Files are hosted on Yumina's CDN and can be referenced anywhere in your custom UI, entries, or audio tracks. No need to host files yourself.

In Library → Assets, upload MP4 or WebM videos with Upload → Upload files. Use the Video filter to find them, then open a video's preview to play it with the built-in controls.

In Library → Assets, choose Upload → Upload folder, or drag a folder onto the asset area. Review the folder tree and file counts before starting the import. The selected folder and its subfolders are saved inside your current asset folder; empty folders are not imported.

Folder imports support JPG/JPEG, PNG, GIF, and WebP images; TXT, LOG, Markdown (.md / .markdown), CSV, and JSON text files; MP4 and WebM videos; MP3, WAV, OGG, AAC, and M4A audio; and WOFF, WOFF2, TTF, and OTF fonts. Unsupported files are listed and skipped.

During a folder import, the dialog shows the current file's uploaded bytes, percentage, and transfer speed, plus overall progress and completed file count. Close the dialog or choose Upload in background to keep uploading while visiting other Yumina pages. The floating upload panel shows progress; choose Details to reopen the dialog. Keep the browser tab open and avoid refreshing it: the task does not survive a reload or closing the tab.

Cancel upload stops the active transfer and remaining files. If you cancel or some files fail, choose Retry remaining files before dismissing the task to continue without uploading successful files again.

To jump through a large library, enter a page number in the pagination field and press Go or Enter. The outer arrow buttons jump to the first or last page; the inner arrows move one page at a time.

AI image generation ​

You can generate images inside Yumina instead of sourcing them elsewhere. Three entry points: the AI Image Generation card on the Create page, the AI Generation button at the top right of Library → Assets, and the AI Generation section of the editor.

Describe the picture, pick a model, an aspect ratio and how many images, then press Generate. The default model costs about 35 mushies per image, charged on actual usage once the image is delivered; nothing is charged if no image arrives. Delivery usually takes about 30 seconds, and a notification with a thumbnail tells you when it is done.

Generated images land in your asset library (you can choose a folder) and are referenced like any upload with @asset:{id}. You can also pick an existing image as a reference and describe how to change it.

At most 2 images generate at the same time, and you can submit up to 30 requests per hour. Prompts involving minors or face swaps of real people are rejected outright.