The Game Client
What ships in the client folder of a Gate to Heavens release, what a player runs, and how it finds your server.
It Comes With the Server
Both Gate to Heavens editions ship their client inside the release archive, in client/. It is
the whole game: client.exe, launcher.exe, fmod.dll for audio, manifest.txt, and a data/
folder holding every model, texture, map, sound and table the game uses. Nothing to download
separately and nothing to match up, because the client in the archive is the one that server
speaks to.
Hosting one of the RF versions works the other way round: there the client is one you already have, and the server conforms to it.
Inside data/, most of the content is bundled into thirteen .pack archives (characters.pack,
maps.pack, models.pack, textures.pack and the rest). Three folders stay loose because they
are read straight off disk rather than out of a pack: sound, scripts and launcher. The
client’s config files sit loose beside them, and two of those are the ones you edit.
What a Player Runs
launcher.exe, not client.exe.
Three things happen in the launcher before the game starts:
- it checks your website for updated client files and downloads what changed,
- it takes an email address and password and gets that account’s characters from your login server,
- it writes a single-use handoff file into the client’s
datafolder and starts the game, already signed in.
Signing in, picking a character and creating one all happen in the launcher window. Press Play and the game opens in the world. Accounts are created on first sign-in, so a fresh server needs no registration step and no approval.
Starting client.exe by hand skips both the update check and the handoff.
How It Stays Current
The launcher reads update_url from client/data/general.cfg and asks that address for
/downloads/client/manifest.txt. That file is one line per client file: a hash, a path and a size.
Everything on disk gets hashed against it, only the files that differ are fetched from
/downloads/client/, and then the game launches.
Your webserver serves both of those routes out of the client/ folder sitting next to it. The
folder you edit is the folder your players receive, so pushing out a client change is copying the
file in.
A player’s own settings are left alone: general.cfg (video), optionconfig.cfg (sound) and the
launcher’s saved login are all excluded from the manifest and never overwritten. If your website
cannot be reached, the launcher falls back to the manifest it saved on the last run and starts the
game anyway, so a webserver that is down does not lock out players who already have the client.
Set launcher_updates 0 in general.cfg if you would rather not run a website at all. The
launcher then goes straight to its login screen and never asks for a manifest.
The shared launcher page describes the same hash-compare mechanism for the RF
releases, where the settings live in a launcher.ini. Gate to Heavens has no launcher.ini. Its
settings live in general.cfg and server.cfg, both under client/data/.
Pointing It at Your Server
One file: client/data/server.cfg. The three lines that matter:
MASTER_SERVER_NUMBER 1
MASTER_SERVER_WEBSITE your-server.example.com
MASTER_SERVER_PORT 26000
MASTER_SERVER_NUMBER is how many addresses follow, so leave it at 1.
MASTER_SERVER_WEBSITE takes an IP address or a hostname, resolved when the client starts, so a
domain works and you can move the box without reissuing anything. MASTER_SERVER_PORT is the
login port: 26000 on Gate to Heavens Classic, 36000 on Gate to Heavens. The launcher and
the client read the same file, so setting it once covers both.
If anyone outside your machine is going to connect, change update_url in
client/data/general.cfg as well. The archive ships it pointing at localhost, which is correct for
a server you are testing on your own PC and wrong the moment somebody else joins.
Installing a server covers extracting the archive and starting it, and configuration covers the ports on the server side.
The Two Editions Do Not Mix
Classic and Gate to Heavens speak the same protocol, so nothing at the network layer stops a
Classic client from reaching the modern server. You still end up with the wrong game. The interface
is compiled into each client rather than downloaded, and on the next run the launcher patches the
whole folder from whatever update_url names. An install follows its patch host.
That is why the two downloads are shaped differently. Gate to Heavens hands out a bare
launcher.exe, which is enough on its own because a launcher with nothing to read installs Gate to
Heavens by default. Classic hands out a small zip holding launcher.exe plus a data folder with
server.cfg and general.cfg already pointed at Classic. Unpack the whole zip and keep that
data folder next to the launcher, or you will install the other edition.
Both of those downloads carry the launcher and nothing else, so the first run pulls the client down and the first launch is the slow one. Self-hosters have no such step, because the archive already carries the complete client.
The Client Is Windows Only
It is a DirectX 8 program, tested on Windows 10 and 11, and there is no macOS or Linux build of it. Almost any graphics card of the last two decades will run it.
The servers are the portable half. Every release carries both Linux and Windows binaries, so a Linux host with Windows players is the ordinary arrangement and the one we run ourselves.