Files
REM-Mod/AGENTS.md
T

4.0 KiB

REM-Mod

The playable REM Freelancer mod: game data, the client binaries built from REM-Client, and the mod's own scripts/resources. The working branch is new-rem-client (not main). README.md only carries the mod version; BUILD_INFO.txt records the last full client package and any later incremental client updates, with their source commits and validation evidence.

Layout

Path Contents
DATA/ Freelancer game data: inis (UNIVERSE/, EQUIPMENT/, SHIPS/, SOLAR/, MISSIONS/, INTERFACE/, constants.ini, initialworld.ini, ...), models, textures, audio
DATA/UNIVERSE/ universe.ini, SYSTEMS/<System>/ (system ini next to its bases), sectors.ini (nav map sectors and spacing)
DATA/SCRIPTS/ Compiled THN scripts (*.thn, Lua 3.2 bytecode); sources are in the Lua-Scripts repo
DATA/INTERFACE/REM/ REM HUD/window art (rem_hud.txm, IMAGES/*.3db)
EXE/ Freelancer.exe, engine DLLs (common.dll, server.dll, rp8.dll, ...), dacom.ini, freelancer.ini, rem.ini, remgfx.ini, VC runtime
EXE/remui/ RmlUi UI documents (*.rml, *.rcss, fonts, img/), copied from REM-Client/assets/remui
EXE/REM/ Mod runtime data: Lua/ (luastart.lua, Infocards.lua, DYNAMIC/), Audio/, Fonts/, Avatars/, ServerModule/missions/
DLLS/BIN/ Resource DLLs loaded from the original install layout (e.g. content.dll)
MATERIALS/ materials.json, PBR texture maps, skybox for the RemGfx renderer
ART/UI/ Source PNGs for the REM interface art
tools/ Python 3 generators for REM UI art (see tools/README.md)
SAVE/, LOGS/, FLDOCS/ Default saves, log folder, original game docs

Updating the client binaries

The binaries come from ../REM-Client (bin64/). Copy freelancer.exe / Common.dll (and any other changed DLL) here keeping this repo's names (EXE/Freelancer.exe, EXE/common.dll), or run python tools/rem/update_mod.py from REM-Client after publish.py (copies EXE/ and DLLS/BIN/, never SAVE/DATA or the mod's own EXE/REM/, commits nothing). For a manual copy, update BUILD_INFO.txt in the same change: retain the full-package record and add the source commit, changed files and actual validation of the incremental update. Do not reuse the old full-build date/status for newer binaries. Then commit with:

REM-Client <short REM-Client hash>: <what the player gets>

Generating UI art (tools/README.md)

python tools/make_image_3db.py ART/UI/ICON/Cargo_icon.png DATA/INTERFACE/REM/IMAGES/icon_cargo.3db icon_cargo --size 128
python tools/make_icon_3db.py <in.png> <out.3db> <name> [--color]
python tools/make_hud_txm.py <out.txm> <name>=<in.png> ...

<name> must be unique: Freelancer keys materials globally by the CRC of the name.

Running

The game is started as EXE/Freelancer.exe with EXE/ as working directory (under Wine/Lutris on Linux). rem-server uses this folder as its game data (--game <REM-Mod>/EXE).

Conventions

  • Commit messages are descriptive English one-liners, prefixed with the area or file: REM-Client <hash>: ..., sectors.ini: ..., story_arc0_m01: ..., Missions: ..., Sol01: .... No Co-Authored-By trailer.
  • Most inis use CRLF line endings (some files are mixed); keep the existing endings of a file and its key casing/ordering when editing.
  • Keep path casing consistent with existing references (e.g. Sol01/, not SOL01/).

Gotchas

  • rem-server is a private project: nothing of it goes into this repo (.gitignore excludes EXE/rem-server*, flbot.exe, LargeID.dat, server logs).
  • Runtime files appear under EXE/ while playing (logs, remgfx_pipelines.bin/.keys caches, EXE/REM/Lua/DYNAMIC/config.lua, SAVE/*.ini); don't commit them unless intended.
  • DATA/ changes may need a matching rem-server data check (the server validates missions and waypoints at start, see EXE/REM/rem-server-*.txt locally).
  • CHANGELOG.md is inherited from Freelancer HD Edition, not the REM change history.