Windows Build - DatMoshu/GodotUO GitHub Wiki
Windows Build
Running from the launchers uses the engine binary in tools\godot. A
Windows export produces a standalone GUO.exe that carries the project's
own icon and splash. Source of truth: tools\windows\README.md and its run
table.
launchers\windows\doctor.bat REM what a Godot 4.7 .NET Windows export needs, and what this machine has
launchers\windows\export.bat REM headless --export-debug "Windows Desktop" into build\windows\GUO.exe, then the icon check
Underneath: python tools\windows\run.py <doctor|preset|export|icon>.
What an export does
- Generates
godot\GUO\GUO.slnif the editor has not (the .NET export needs it). - Renders
tools\windows\export_presets.template.cfgintogodot\GUO\export_presets.cfg(gitignored). The Android and web tools render the same file from their own templates, and each re-renders before it exports, so the three never have to coexist. - Runs
godot-console --headless --path godot\GUO --export-debug "Windows Desktop" build\windows\GUO.exe. That runsdotnet publishfor win-x64 and packs the project intoGUO.pckbeside the executable, withGUO.console.exeas the console wrapper. - Extracts the icon Windows associates with the exported
GUO.exe, saves it asbuild\windows\exe_icon.png, and compares it with the 32 px frame oficon.ico(must match) and with the icon of the export template itself (must differ: that one is the engine's logo). A build whose icon is still the engine's fails the export.
The exported build ships the plugin host, so assistant plugins load from it as they do from a launcher run (commit "Ship plugin_host in an exported build").
The icon and the splash
Godot 4.7 writes the executable's PE resources itself; the rcedit setting of
Godot 4.3 and earlier no longer exists, so there is nothing to install. The
preset's application/modify_resources=true turns the rewrite on and both
application/icon and application/console_wrapper_icon name
res://icon.ico.
| Where the brand shows | Setting | File |
|---|---|---|
| Window and taskbar at runtime | application/config/icon |
godot\GUO\icon.png |
| Same, with proper small sizes on Windows | application/config/windows_native_icon |
godot\GUO\icon.ico |
The exported .exe and .console.exe |
preset application/icon, console_wrapper_icon |
icon.ico |
| Boot splash | application/boot_splash/image |
godot\GUO\splash.png |
| Android launcher and Android 12 splash | Android preset launcher_icons/* |
godot\GUO\android_icons\*.png |
All of them are built from the one committed master,
design\brand\guo-sigil.png, by python tools\brand\run.py
(launchers\dev\brand_icons.bat). Change the sigil, rerun the tool, commit
what it wrote. The sigil is not pixel art, so the tool resamples it with
Lanczos; AGENTS.md rule 7 is about the game's art.
One thing an export cannot change: a run through the engine binary
(play.bat, screenshot.bat, the editor) shows the engine's icon in the
title bar for the first few hundred milliseconds, until Godot applies the
project icon. The exported GUO.exe never shows it.
What has been run
From the README's table, recorded 2026-09-26 on the branch that introduced
the sigil: doctor all ok; export produced GUO.exe, GUO.console.exe
and GUO.pck with the icon check passing (distance 0.0 to ours, 103.5 to the
engine's); the exported executable's window, title bar and taskbar showed the
sigil, captured through PrintWindow into build\windows\ and
build\brand_capture_exe\. The desktop smoke was 5/5.
Requirements
doctor.bat lists them. In short: the pinned mono engine, the mono export
templates for 4.7.2 in %APPDATA%\Godot\export_templates\4.7.2.stable.mono,
and the .NET SDK. Build output is gitignored under build\windows\.