The Launcher
How players sign in and start the game, how the launcher keeps their client files current, and the settings file behind it.
What It Does
The launcher is what a player runs instead of the game executable. It:
- asks your server whether it is up, and what version it is running,
- takes an email and password and gets an account from the server,
- checks your server for updated client files and fetches what changed,
- hands the client its login state and starts it.
It holds no database credentials and no local account list. If it says the server is offline, that is because your server did not answer, and there is nothing else it could have asked.
Where It Lives
In the player’s own game folder, beside the game executable. It ships in the client/ directory
of every release, and “copy the contents of client/ into your game folder” is the whole install.
launcher.ini
Written beside the launcher on first run, with sensible defaults. A player only edits it to point at a different server.
[Server]
Host = your-server.example.com
GamePort = 27800
AuthPort = 27801
[Client]
ClientDir =
ClientBinary = RF_Online.bin
[Credentials]
Remember = false
Email =
Password =
[Update]
URL = https://your-server.example.com
ClientDir empty means the folder the launcher is sitting in, which is the normal case.
AuthPort is the game port plus one and there is no reason to change it on its own.
A remembered password is obfuscated rather than encrypted. That stops it sitting in plain sight in a file someone might screenshot or paste into a bug report, and it is not claimed to be more than that.
Keeping Client Files Current
This is the [Update] URL key, and it is empty by default, which means the launcher never
checks. Point it at your website and the launcher patches before every start.
The mechanism is deliberately plain. Your website serves the client/ directory at
/downloads/client/, with an index of file hashes at /downloads/client/manifest.txt. The
launcher hashes the copies it has, downloads only what differs, and re-hashes what it wrote before
starting the game. There are no version numbers, no patch files, and no state on your server
beyond a directory.
To push a client change out:
-
Drop the files into
client/. -
Regenerate the index:
tools/manifgen client -o client/manifest.txt -exclude "rflauncher.exe,launcher.ini,DefaultSet.tmp" -
Nothing else. Every launcher picks it up on its next run.
Three Files Are Never Overwritten
rflauncher.exe, launcher.ini and the login handoff file are protected, and the launcher
refuses to replace them no matter what a manifest says. Two are the player’s own state, and the
third is written seconds after the update finishes. The -exclude above keeps them out of the
index; the launcher’s refusal is what covers a stale index, a mistake in a future release, or a
manifest that did not come from you.
The launcher does not update itself. It carries its own version number, so its hash changes on
every release, and a hash-compare update would re-download it every time for no reason. It ships
in client/ and a player replaces it by copying a new one over.
What Happens When It Cannot Reach You
It verifies against the manifest already on disk and starts the game anyway. A player whose server
is down should still be able to play the client they have. If you want a run that never touches
the network, rflauncher.exe -skip-update.
Running It from a Script
rflauncher.exe -status # is the server up, and on what version
rflauncher.exe -update # patch the client, do not log in or launch
rflauncher.exe -email you@example.com -password secret # log in and start, no window
No window opens for any of these, which is what makes them useful for testing and for a headless check that your patch server is serving what you think it is.