FAQ - DatMoshu/GodotUO GitHub Wiki
FAQ
What is GUO? Is it a client or an emulator like RunUO/ServUO? A client: a port of ClassicUO to the Godot engine that connects to RunUO, ServUO or ModernUO shards. See What is GUO? for how it differs from ClassicUO.
Is there a web build? Yes, locally. The official Godot 4.7.2 mono still refuses to export a C# project to the web (godotengine/godot#70796), so GUO is exported with a community build of 4.7.2 that includes the open pull request #106125. It plays on a local shard in Chrome, and reaches the login screen in Firefox. Your own UO install is served to the page from your own PC. There is no hosted page. See Web Client and ADR-0008 (Amendment 1).
The audit says 100% ported. Is it finished?
No. "Ported" means the file exists in godot\GUO\src and compiles. It says
nothing about behaviour. Working claims need a smoke run, a screenshot or a
parity diff, and the repository's status is "playable on a local shard, not
yet at parity". See Parity and Drift.
Why must the Godot logo never appear?
The project's brand is the GUO sigil, and a build that shows the engine's
logo anywhere (executable icon, splash, launcher icon) is a build that was
not finished. tools\windows\run.py export fails if the exported
executable's icon still matches the export template's; the Android icons are
dumped from the APK and checked the same way. The one place it still shows
is the first few hundred milliseconds of a run through the engine binary
itself (play.bat, the editor), which is the engine executable's own
resource; an exported build never shows it. See Windows Build.
Why is pixel art never filtered?
UO's art is hand-placed pixels at one client pixel per screen pixel, and any
bilinear sampling smears it. default_texture_filter=0 in project.godot
is deliberate, and every new viewport or material must keep nearest-neighbour
sampling (AGENTS.md rule 7). The exceptions are things that are not UO art:
the brand sigil (Lanczos) and a player's own background picture or video
(Linear).
Can I use my own Godot install?
No. The engine is pinned at 4.7.2 stable mono and fetched into
tools\godot by the bootstrap; the non-mono build cannot run C#, and other
versions have not been tried. GODOT_EXE overrides the executable if you
must.
godot prints nothing from a script.
Use godot-console. The plain executable returns at once and writes nothing
to stdout; the console build blocks and prints. Every script, agent and CI
step must call the console build.
Where do I put my UO install path?
launchers\_shared\config.local.bat, copied from
config.local.bat.example. It is gitignored. Never in config.bat, and CI
rejects a machine path anywhere else.
Can I commit a screenshot?
Not one rendered from game data. Captures of the client are proprietary art;
they stay under build\ (gitignored). Describe what the picture showed in
the commit message and keep the file locally.
The client connects to nothing.
Nothing listens on 127.0.0.1:2593 until you run a shard. See
Dev Shard, or point UO_SHARD_HOST / UO_SHARD_PORT at
one.
Why does a scripted run not take focus?
So an agent can run the client while a person works at the machine. Windows
are created without focus for scripted runs; --focus asks for it. The
ClassicUO side of the A/B tool has to type into a window, which is why its
pass is behind --allow-foreground.
What is PORT DEVIATION (GUO)?
The marker on every unavoidable change to a ported file. It is what gets
reconciled on an upstream merge. See Parity and Drift.
Which phones work? One Android 13 handheld has been run, including its second screen. Anything else is written, not verified. See Android Build and Mobile UI.
Does an exported build load Razor and the other assistants?
On Windows, yes: the exported build ships the plugin host and
plugin_probe.bat checks a native and a managed plugin. On Android, no: the
plugin host is a Windows-only build item.
Where are the agents and skills?
.claude\ holds the studio agents (from Claude Code Game Studios, MIT) and
the port-specific ones listed in AGENTS.md. Claude Code, Codex, GitHub
Copilot and Cursor all read the same instructions and skills (Codex needs
launchers\dev\agent_skills.bat once). They follow the same rules a
person does; nothing they run is undisclosed, and SECURITY.md counts a
hook that sends data anywhere as in scope.