Old SchoolOps

Game Data Editor

Change your server's game data from the browser. Every table the server reads opens as a spreadsheet, and in client mode the matching client file is written too. Available on RF Online 2.2.3.2 today.

For RF Online: Golden Age Updated 2026-09-03

The Game Data Editor lets you change your server’s game data from the browser. Every table the server reads opens as a spreadsheet with real column names, so you can retune an item, reprice a shop or rewrite a quest without a hex editor.

You will find it in the control panel under Admin -> Game Data.

Which Games Have It

RF Online 2.2.3.2, and only that one so far. Everything on this page describes that server.

The editor is not a generic file browser: it knows what every column in every table means, and that knowledge is per version and per game. Those record layouts have to be derived and checked against real data before a table can be shown safely, which is work that happens one version at a time. Support for the other RF versions and for the other game families is coming, and the release notes will say when.

Until then, edit those games’ data the way you always have, with a hex editor, Structorian or whichever tool you already use for that game’s file formats. Nothing here replaces or blocks that: the server reads the same files either way, and the editor is a convenience on top of them rather than a new format.

Which data you are editing

The server reads its game data from one of three places, and the editor edits whichever one is live. It reads that from your settings.cfg, so the panel and the server can never disagree about it.

GAMEDATA_MODEWhere the data comes fromWhat the editor writes
default (or unset)the content we shipthe content database
legacyyour own Script and Map folders at LEGACY_PATHyour .dat files
clientthose folders plus your client’s DataTable at CLIENT_PATHboth the server files and the client files

In legacy and client mode your files are the master copy. The panel reads them directly and a save writes them back. Setting up legacy mode has its own page.

The three modes keep separate databases, so switching between them does not overwrite anything. You can switch back without re-importing.

Editing a cell

Pick a table, find the row, type the new value. Each column is checked against what the game can actually store, so a number too large for its field is refused instead of being silently cut down.

Some tables split a repeated block into a child table of their own. A monster with fifteen special attack slots is too wide to show as one row, so those slots become their own table.

A few client files have no column names anywhere, so they open as raw values. They are listed under Limits below.

Keeping the client and server in step

If you run in client mode, your data exists twice. A weapon’s level requirement is m_nLevelLim on the server and LevelLim in the client. Change one and not the other and you get a server that enforces 40 while the client still displays 35, which is very hard to diagnose from a bug report.

So the editor writes both. Change a linked column and the matching column on the other side is written too, checked against its own rules. If the new value does not fit the other side, the whole save is refused rather than half applied.

Only columns we have verified against every row of the real data are linked, and each one shows how much evidence it rests on: strong, good or weak. A weak link is shown to you and never written on.

Rows are paired by their position in the table, not by their order in the file, because the two sides do not always hold the same number of rows.

Item codes

An item’s code is stored as text on the server and as a packed number in the client, so it is a special case. Editing the server’s code updates the client’s copy. Editing the client’s copy is refused, because several different server codes pack to the same number and there is no way to work out which one you meant. Edit the server side and the client follows.

Adding and removing rows

Adding a row to the end is always safe. Inserting or deleting one is not, and the panel puts both behind a checkbox that says so.

Inserting or deleting a row shifts the position of every row below it. Anything that points at those rows shifts with it, including items already in your players’ bags. A player’s sword becomes the next item in the table, a drop table starts handing out something else, and nothing anywhere reports an error.

Use insert and delete on a server nobody has played on yet. On a live server, add to the end.

Two more things to know:

  • Insert and delete are refused on any table linked to a client file, because keeping the two sides paired through a renumber would mean rewriting thousands of client records first.
  • A new row starts as zeros and you fill it in like any other row.

After you save

A save does not reach the running server. Restart it. Game data is loaded once at startup, and spawns and NPCs are placed into the world from it, so there is nothing a live server could reload. The panel says this on every save.

Editing a cell changes that cell and nothing else. The rest of the file is left exactly as it was, byte for byte, which matters for the tables holding text in languages the tools cannot safely rewrite.

If somebody else saves while you have a page open, your save is refused as a conflict rather than overwriting their work. Reload and try again.

What you can edit

Everything the server reads, plus the client half in client mode:

  • Item names and tooltips. Renaming an item in the panel renames it for the player who sees it, not just for the server that remembers it.
  • Item stats, prices and recipes.
  • Model, mesh and animation tables.
  • Set item effects, PC room rewards, and the cash shop.
  • Quest event tables.
  • Maps, spawns, NPCs and portals.

Limits

  • A restart is always needed before a change reaches players.
  • Insert and delete renumber silently. See above.
  • Insert and delete are refused on client-linked tables.
  • A packed item code can only be edited from the server side.
  • Nine client files open as raw values only, because no column names exist for them anywhere: map.dat, NDMap.dat, hint.dat, UIHelp.dat, EventShip, GameData, MAPDATA, WorldMapData and NDMsgMonster. You can still edit them, you just get numbered columns instead of named ones.