2022-10-03 00:10:54 +00:00
|
|
|
# Filesystem
|
|
|
|
|
|
|
|
## Launching
|
|
|
|
|
|
|
|
The `nuclide` shell script is the launcher.
|
|
|
|
|
|
|
|
It sets **$PATH** to include the directory `bin/` which contains the engine that
|
|
|
|
you've built with `build_engine.sh`.
|
|
|
|
|
|
|
|
When nuclide is run and executes the engine, it'll first read `default.fmf` which
|
|
|
|
is a manifest file the engine reads. It is updated occasionally.
|
|
|
|
|
|
|
|
It defines which directories to mount in the virtual filesystem of the engine
|
|
|
|
and has a document entirely dedicated to itself. For that please read:
|
2022-10-26 19:47:59 +00:00
|
|
|
|
2022-10-03 00:10:54 +00:00
|
|
|
```
|
|
|
|
src/engine/specs/fte_manifests.txt
|
|
|
|
```
|
|
|
|
|
|
|
|
## Loading Games
|
|
|
|
|
|
|
|
On its own, Nuclide launches the game directory `base/`, unless you tell it otherwise:
|
2022-10-26 19:47:59 +00:00
|
|
|
|
2022-10-03 00:10:54 +00:00
|
|
|
```
|
|
|
|
./nuclide -game mygame
|
|
|
|
```
|
|
|
|
|
|
|
|
Will load `mygame/` instead of `base/`.
|
|
|
|
|
|
|
|
You can also load multiple additional directories in a specific order by specifying
|
|
|
|
multiple `-game` command-line arguments.
|
|
|
|
|
|
|
|
It will still load the other `BASEGAME` entries listed in the default.fmf.
|
|
|
|
You can even load your own manifest file over default.fmf, by passing
|
|
|
|
|
|
|
|
```
|
|
|
|
./nuclide -manifest mymanifest.fmf
|
|
|
|
```
|
|
|
|
|
|
|
|
## Virtual-Filesystem
|
|
|
|
|
|
|
|
When a game is mounted, we're either looking for **loose files** (loaded last), or
|
|
|
|
**archives** the engine supports.
|
|
|
|
|
|
|
|
The Quake .pak archive format, or zip archives with the pk3 and pk4 extensions are supported.
|
|
|
|
Upon initializing the filesystem they are enumerated alphabetically and then loaded in order.
|
|
|
|
|
|
|
|
Directories with the .pk3dir extensions are treated as if they were .pk3 archives.
|
|
|
|
The editor also supports .pk3dir directories.
|
|
|
|
|
|
|
|
Once the game has loaded a game directory, it'll load the persistent menu.dat into our QuakeC
|
|
|
|
virtual machine.
|
|
|
|
|
|
|
|
It' always running, you can make your own by modifying `src/menu-fn/`, `src/menu-vgui/`
|
|
|
|
or writing your own module.
|
|
|
|
|
|
|
|
## Archives
|
|
|
|
|
|
|
|
Protected archives always start have the prefix **pak**[...] and cannot be downloaded by connecting
|
|
|
|
to a server that has them.
|
|
|
|
**Use this for any copyrighted data.**
|
|
|
|
|
|
|
|
When you spawn a map, you create a server which will distribute its own client-side game-logic.
|
|
|
|
|
|
|
|
It's advised that you do not pack **csprogs.dat** and **progs.dat** into a protected archive.
|
|
|
|
|
|
|
|
|
|
|
|
## Nuclide specific formats
|
2022-10-26 19:47:59 +00:00
|
|
|
|
2022-10-03 00:10:54 +00:00
|
|
|
Nuclide contains many custom definition files that are not engine specific.
|
|
|
|
`.efx`, `.font`, `.sndshd` and `.way` to name a few.
|
|
|
|
The game-logic mostly handles them and can thus be, in theory, extended by you.
|