Peli client 0.1.0+1
====================

Run it
------
Linux:    ./run.sh          (not ./peli directly — see "Assets" below)
Windows:  run.bat           (or double-click it)

Point it at a server
--------------------
Nothing to configure: peli.gg resolves publicly and the client goes
there on its own. Log in with the account authd knows you by.

Running the stack yourself instead? The TLS certificate is issued for
peli.gg and verified against the public root store, so the name has to
stay — you redirect it rather than replacing it. Add to your hosts file:

    127.0.0.1   peli.gg

  Linux:   /etc/hosts
  Windows: C:\Windows\System32\drivers\etc\hosts  (edit as Administrator)

PELI_AUTHD overrides the authd origin (default https://peli.gg:4270)
for a different port, but the hostname still has to match the
certificate.

Requirements
------------
- A Vulkan-capable GPU with working drivers (Linux: mesa / vulkan-*).
- glibc GLIBC_2.30 or newer, and X11 or Wayland. An older
  distribution refuses to start it at all, reported as a missing GLIBC_
  symbol; ask for a build against an older glibc.

Two clients on one machine
--------------------------
Set PELI_PROFILE=a and PELI_PROFILE=b. The refresh token rotates on
every use, so two clients sharing one file look like a stolen token and
the account's whole session chain gets revoked — both end up logged
out. The profile gives each its own file.

Controls
--------
E / D      throttle, brake and reverse
S / F      steer (tracked — it turns fastest standing still)
Right-drag look around without turning the hull
Click      drive to that spot on the ground
T          lift off into the fly camera
Enter, /   chat; Escape closes it, then opens the menu
Ctrl+Q     quit

Graphics knobs (no rebuild, and the menu has them too)
-----------------------------------------------------
PELI_MSAA=off|2|4|8        off by default; 4x cost more than anything else
PELI_WATER=basic|medium|high|ultra    medium by default
PELI_PRESENT=novsync|mailbox|fifo
PELI_RES=1280x720
PELI_DUST=off|low|high
PELI_INVERT_Y=1            aircraft-style look

An environment variable always beats a setting chosen in the menu, and
the menu greys out the rows it has claimed and names the variable.

Assets
------
None ship with this package. The client downloads what it needs, when
it needs it, and keeps it in a local cache: the first run pulls roughly
80 MB for the area you start in, and driving somewhere new fetches that
ground as you arrive. An update re-downloads nothing that has not
changed, because every file is stored under the hash of its contents.

So a first run needs to reach the asset store, and after that it does
not: with the store unreachable the client starts from its cache and
plays whatever it has already seen.

PELI_ASSET_URL points it at a different store (a local one, say). The
cache is safe to delete at any time — everything in it can be fetched
again, and nothing else is kept there.

Where it keeps things
---------------------
Linux:   ~/.config/peli/   settings.toml, refresh token
         ~/.cache/peli/    downloaded assets
Windows: %APPDATA%\peli\        settings, refresh token
         %LOCALAPPDATA%\peli\   downloaded assets
