The V30.87 through V30.93 update cycle focuses on making IWAK’s Steam GUI build more stable, more presentable, and more reliable for Windows and Linux distribution. The major areas of improvement are build stability, BGM playback, typewriter rendering, UI polish, and AI model launch routing.
The build system has been hardened first. Previously, a pygame installation failure could block the entire build process. pygame is now treated as an optional BGM backend. When a compatible pygame wheel is available, the BGM backend is bundled. When it is not available, music is disabled gracefully while the game build continues. Both Windows and Linux build scripts now avoid pygame source builds and use wheel-only installation attempts. Even without pygame, the GUI, CSV agenda system, save flow, Steam Host, and achievement bridge remain functional.
A pygame-ce fallback path has also been added. If the official pygame wheel cannot be installed in the current Python environment, the build scripts attempt to install pygame-ce as a compatible fallback backend. Since pygame-ce exposes the same pygame import path, the existing lazy import structure can remain intact. This gives IWAK a practical way to keep BGM working on newer Python environments, while Python 3.13/3.12 build venvs remain a stable route for official pygame wheel support.
The BGM system itself has been stabilized. The payload does not play music directly. Instead, it emits [IWAK_MUSIC_JSON] mood signals, and the GUI interprets those signals to play opening, calm, or danger music. If pygame or pygame-ce is unavailable, the GUI simply ignores the music signal without interrupting gameplay. This keeps music cleanly separated from deterministic game logic.
The typewriter flicker issue has been addressed. Previously, each typewriter tick could trigger a full repaint of the left log Canvas, including the background, glass panel, log cards, and scroll rail. V30.91 changes the normal typewriter path so that only the active text item is updated during regular character output. Full repaint is now reserved for cases where it is actually needed, such as line wrapping, card height changes, scrolling, resizing, or completion. This significantly reduces visible flicker during text output.
The GUI has also received a visual upgrade. The previous code-drawn sword decoration beside the scrollbar has been replaced with an actual sheathed Joseon royal sword image asset. The image is loaded once, cached, and displayed as part of the GUI instead of being redrawn as primitive Canvas shapes. During scrolling, only lightweight position or marker updates are performed. This improves both visual quality and rendering stability, while making the interface feel closer to a royal archive or court document system.
Finally, V30.93 fixes the AI model launch path. The payload defaults had already been updated for the new model rotation, but the Linux and Windows Royal GUI launchers were still passing the old single-model configuration through CLI arguments. As a result, the runtime path could still call the previous AI model despite the payload defaults being updated. The GUI launch arguments now correctly route to the updated model setup using Mistral Small 3.2, Gemma 4, and GPT-OSS 20B. The CLI override and UI context initialization order has also been cleaned up so the intended model configuration is applied consistently.
This update does not change the save format, CSV agenda data, balance, deterministic gameplay rules, or Steam achievement bridge design. The goal of this patch cycle is to preserve the existing game structure while improving Steam build reliability, presentation quality, and runtime correctness.
