This page is for anyone opening an RF Online server to the public on GoMMO: the terms, what you supply yourself, which version to start from, how far the game can be changed, and which parts depend on this site.
The Terms
- Hosting is free. There is no fee, no licence key, no player limit and no other restriction.
- Attribution is asked for. Say on your website or in your launcher that the server runs on GoMMO, with a link to oldschoolops.com. The RF launcher already shows such a line.
- Donations are encouraged. None is required, and nothing on your server depends on one.
- The source stays closed. A release holds the built servers, the GameCP and the tools. You change the game through the routes under Changing the Game, which are built for an operator who does not have the source.
What You Bring
- Your own RF Online client and its assets. No RF release here contains a client, a patched executable or the client's art, and we do not redistribute one (We Do Not Ship a Client). Your players need the same client build as your server.
- A machine to run it on, as What You Need describes.
Choosing a Foundation
Build a public server on one of these two:
| RF Online: Dragonborn | RF Online: Golden Age | |
|---|---|---|
| Game version | 4.55 | 2.2.3.2 |
| Client build | RF Online Taiwan, built 2025-07-16 | Episode 2.2.3.2 retail |
| Client text | Reads its Traditional Chinese folder only; English can be written into it (below) | Reads the language folder the launcher asks for |
Every feature we build reaches both. Pick by the content you want and the client your players have: Choosing a Version lists what each one contains, and Game Clients names the exact client build each server needs.
Changing the Game
Without Code
- Settings.
settings.iniand the GameCP's Settings page hold rates, GM command levels, the anti-cheat toggles and each system's switches. See Configuration and The GameCP. - Environment overrides. A line
GOMMO_<KEY>=value(orGOMMO_<KEY>_FILE=/path, which reads the value from that file) replaces thesettings.inikey of the same name. On a Linux service install, put those lines insettings/server.envbesidesettings.ini: the systemd units thatinstall.shwrites read it when the file exists. Under Docker they go indocker.env. Both are described in Docker and Linux. - Game data. Items, monsters, drops, shops and the rest are rows in the content database, edited in GoMMO Studio's Game Data or in the GameCP's Game Data Editor. If you already keep the original data files, the server can read them directly.
GoMMO Studio
GoMMO Studio edits maps, spawns, models, textures, the interface, sounds and client text. Install writes a project into your own client and server. File > Publish to players puts the client half on your launcher's updater, and players receive it the next time they start the launcher (Projects).
.gommomod Packs
A .gommomod is one change for one game, as a single file: the client and server files and the game data edits a Studio project would install, signed by its author and marked with the client and server builds it was made against.
- File > Export as .gommomod… writes one from a project.
- File > Open .gommomod… opens one as a new project.
- File > Mods… keeps several in a load order and shows where they overlap.
Sharing a pack is passing the file. Nothing on this site hosts or lists them.
Lua
The server runs Lua from its scripts folder:
- Dungeons (
scripts/dungeons) and boss encounters (scripts/encounters). - Modules (
scripts/modules), the operator's own extensions. A module listens to game events (logins, kills, PvP kills, chat, drops and loot, auction listings, level ups, upgrades, the Chip War), can refuse or adjust a few of them (an auction listing, a chat line, a loot claim, a hit's damage), adds staff%commands and player commands, runs timers, and keeps its own settings and tables. Modules are off untillua.enabledis switched on in the GameCP's Settings.
A module is checked when it loads. A mistake names the file and the line and suggests the name you probably meant, and a module that fails the check is not loaded while the others are.
New Messages Between Client and Server
A module can declare new messages of its own, in either direction. Only GoMMO Client and our client hook (an add-on that loads inside an official client) can read them. An official client never receives one: the server sends a module's messages only to a client that has said it understands them, so players on an unmodified client play as before. The client hook is not a download yet.
What Cannot Be Changed
- The server program itself. Without the source there is no rebuilding it; anything beyond the routes above is a request for the Ideas board or Discord.
- What the official client does. It is a program we do not control, and the server matches it byte for byte. Text compiled into the client program or drawn into its button art, the length of item codes, the language folder a build reads and the layout of the messages it already sends are all fixed by the client.
- What a module may touch. A module cannot read or write the game's own tables, send raw bytes, send anything to an official client or read another module's data. On Dragonborn it can give a player currency but never take it; on Golden Age it can also take currency, never below zero. It changes the game through the events, gates and actions it is given.
English Text on the 4.55 Client
The 4.55 Taiwan client reads only its Traditional Chinese (zh-tw) folder. That folder uses the Big5 codepage, which holds plain English letters, so GoMMO Studio can write English into it and the client reads it as its own text. The server needs no change: what it sends is already English.
- Open a project for your 4.55 client in GoMMO Studio, then Tools > Localization….
- Fill the English column. Type text by hand, or press Machine-translate for Assistant drafts, which wait in the review queue and are written only when you accept them.
- Watch for red cells. Each field has a byte limit in the client, and text that does not fit is refused until it is shorter.
- Under Bundle language, choose
zh-twand press Write English into the bundle. - Install to try it on your own client, then File > Publish to players so the launcher delivers it.
Every later Install writes English into the folder again, so the project stays the one copy of your translation. Players keep Language=Taiwan in the client's R3Engine.ini, as GoMMO Client Patcher tells them to.
Text compiled into the client program or drawn into images is outside what this reaches. We have not yet seen a 4.55 client draw English written this way, so tell us on Discord what yours shows.
Running Without This Site
A bundle runs fully with no connection to oldschoolops.com. Two things reach this site, and neither is needed to play.
The Update Check
Every released server asks this site every ten minutes whether a newer build exists, and shows the answer on your GameCP. It sends the build, the update channel, a per-install id, a hashed hardware and operating system fingerprint, the platform, your public hostname if one is set, the live player count and the uptime. Nothing is downloaded, patched or restarted.
There is no setting that turns it off. It never delays startup, and when this site cannot be reached the server logs one line saying the check is unavailable and that the server is unaffected, then carries on unchanged. UPDATE_URL under [update] in settings.ini points it at a different update service; empty uses ours.
Signing In With oldschoolops.com
Off unless OSO_SERVER_KEY is set under [oso] in settings.ini. Without it, your server keeps its own accounts and never contacts this site to sign anyone in. With it, nobody can sign in while this site is unreachable. See Signing In With oldschoolops.com.
Everything Else
The database is local (SQLite by default), the launcher's updater fetches from your own server, and HTTPS certificates are requested only when TLS_DOMAIN names a public hostname.
What 1.0 Means for an RF Version
An RF version reaches 1.0 when all of these hold:
- Validation is live. The server's checks on what a client sends are on in normal play, each with its own switch on the Settings page.
- The Lua SDK is complete. Modules have the events, gates, actions and documentation an operator needs to extend the server without the source.
- Docker and Linux install. The bundle runs under Docker and installs as a Linux service from its own files.
- Soak and race clean. The full world runs under a crowd of bots with no errors, leaks or data races.
- Game data sync. The full workflow for keeping the server's game data and your client's data files in step works end to end.
The version numbers themselves are explained in Updates and Versions.