Implementing your own Rust client server list
What to implement and which files to edit when building a private backend compatible with these IL2CPP Rust clients.
1. Critical client files
| File | Role |
|---|---|
RustClient_Data\il2cpp_data\Metadata\global-metadata.dat | Literal URL strings for APIs (nexus, server list, banned, Discord, companion, etc.). |
GameAssembly.dll | IL2CPP native code; references strings from metadata. |
Changing behavior without touching metadata usually requires reverse engineering (e.g. Ghidra). For URL changes, prefer editing metadata strings (with correct tooling) or proxying at the network layer.
2. HTTP routes to support (typical)
Your HTTPS server should expose paths compatible with your patched metadata. Unpatched Real/SKYLIGHT builds use bases like:
Common path suffixes (after your chosen base):
| Suffix | Purpose |
|---|---|
nexus/ | Nexus / backend coordination |
playerAuth/steam | Steam-linked player auth |
public/serverlist | Main server browser list |
public/serverlist/banned | Banned server list |
discord/... | Discord integration |
| Companion | avatar/{0}, subscriptions/add, check, remove |
Additional fragments: public/manifest/?public_key=, public/steamServers/playerCounts/rust. Stub or implement when those code paths run.
3. Data model hints
- List entries include
is_official(boolean). - Official manifest failures appear in UI strings; full “official servers” parity may need manifest endpoints—not only
public/serverlist. - Local cache pattern:
client.serverlist.{0}.db.
Exact JSON schema is not in these docs; capture live HTTPS responses (where allowed) or use IL2CPP dumps / RE.
4. Editing links in the client
Option A — Patch global-metadata.dat
- Backup the whole game folder.
- Search for current base (e.g.
https://api.facepunch.com/api/orhttps://meta.tirify.com/r0000/). - Replace with your base using a hex editor (HxD) only if lengths are preserved, or IL2CPP metadata tools that rebuild the string table safely.
Option B — Reverse proxy
Controlled lab setups only; public internet / TLS hostname checks usually block unless you control trust stores or patch the binary.
Option C — Patch GameAssembly.dll
Advanced; use Ghidra / IDA.
5. Per-client docs
- Alkad Rust — Tirify + localhost companion + extras.
- Arab Rust —
api.arabrust.net+ mixed Facepunch routes. - Real / SKYLIGHT — Facepunch API + companion hosts.
For a deeper explanation of official vs tags, is_official, and server.official, see Official servers & your server list API.
6. “Official” badge (summary)
| Mechanism | Notes |
|---|---|
is_official on list rows | Set in API JSON for public/serverlist. |
| Manifest / official list | Separate flow; errors if manifest missing or invalid. |
server.official convar | Server-side; described as Facepunch-only in strings. |
7. Compliance
Compatible API for a modified or private client you may redistribute is a common lab setup. Repointing the stock Steam client without authorization may breach EULA and local laws.