Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ClassicUO/classicuo-web/llms.txt

Use this file to discover all available pages before exploring further.

This page collects the most common questions from shard owners about how ClassicUO Web works, how to get your shard listed, what customisation is possible, and how the network infrastructure affects your players. If you do not find your answer here, join the #for-shard-owners channel on Discord.
The shard application process is currently in BETA.Submit a shard application to have your shard added to the server list. Once approved, you will receive access to the Shard Management portal where you can configure your listing, upload assets, and set shard rules.
While the desktop ClassicUO client will always be open-source, there are no plans to open-source the web client at this time. There are several reasons for this decision:
  1. Discovery: ClassicUO Web aims to be the “OSRS of UO” — a single destination where players can browse and join shards with one click. A centralised server listing that also serves as the entry point for playing raises the visibility of shards that would otherwise go unnoticed.
  2. Focus: The web client is technically challenging to build and maintain, spanning deep WebAssembly/C# runtime interop issues through to complex web infrastructure (backend APIs, CDNs, geographically distributed servers, cloud asset storage). The team prefers to spend limited free-time hours improving and maintaining the official client rather than supporting third-party forks.
  3. Cheating: A closed-source client is an important layer in the anti-cheat stack. Shards that support the WebIdentity packet can validate that players are running a genuine client and use Shard Rules to control exactly which features the web client exposes.
Yes. The ClassicUO Web patching system was built specifically to support shards with modified assets. You upload your files through the browser-based patcher in Shard Management, the tool generates VCDIFF binary-delta patches (automatically converting UOP files to MUL for smaller deltas), and publishes them to the global CDN.See the Patching guide for the full step-by-step walkthrough.
It depends on the nature of your customisations:
  • If your client disables certain ClassicUO features — you likely only need Shard Rules. Rules let you turn off scripting, disable assistant features, and lock or override any game-profile option without touching client code.
  • If your client has extensive C# changes for custom features — those changes are unlikely to be compatible with the web client. In general, ClassicUO Web stays close to stock ClassicUO apart from the web-only assistant features.
A TypeScript modding API is in development that will allow shard owners to customise the client in a sandboxed environment. The API is being designed to be expressive while remaining secure against cheaters. See the Modding Overview for the current state of that work.
Web security standards prevent browsers from opening direct TCP connections to arbitrary servers. To connect to your shard, ClassicUO Web proxies the TCP connection over WebSockets using a component called the GameProxy.The GameProxy is hosted on Fly.io, an edge-compute platform with servers in 30+ regions worldwide behind an anycast IP address. When you or your players ping the proxy address, you see Fly.io’s anycast IP — not the IP of a single machine. Attempting to DDOS the anycast address is equivalent to attempting to DDOS the entire Fly.io provider network.Additionally, the proxy uses an internal Shard ID when establishing login and game socket connections, so your shard’s real IP is never exposed to players. If your shard is only reachable through ClassicUO Web and you do not publish the IP publicly, it is protected from targeted DDOS attempts.
The GameProxy connects each player through the closest Fly.io region to the shard. Multiple players connecting from the same geographic area (e.g. all from the New York region) will exit the proxy from the same outgoing IP address.This can cause problems if your shard enforces IP-based connection limits, since many legitimate players may appear to come from a single IP.Solution: Enable the WebIdentity packet in your Shard Management settings. When active, the web client sends each player’s real IP address alongside the connection, allowing your server software to apply per-player IP limits correctly.
The WebIdentity packet is a custom UO network packet defined in the ClassicUO packets repository. It serves two purposes:
  1. Real IP delivery — It carries the player’s true client IP through the game proxy to your shard server, solving the shared-IP problem described above.
  2. Client authenticity verification — It allows your server software to verify that the connecting client is a genuine, unmodified ClassicUO Web instance. Combined with Shard Rules, this gives you a high degree of confidence that the rules you configure are actually being enforced.
You can enable the WebIdentity packet in the Shard Management portal for your shard. Your server emulator needs to be updated to read and act on the packet data.

Build docs developers (and LLMs) love