Derived-asset delivery addon for EQEmu. Converts raw .s3d to glTF, chunks them
into a blake3 content-addressed store, and serves incremental updates to the
eq_client_lite client over HTTP, authenticated against EQEmu's MariaDB.
cargo run --release -- build --raw ~/eq_assets/EQ_Files --out ./data
head -c 32 /dev/urandom > ./data/secret # token signing secret
EQEMU_DB_URL=mysql://peq:peqpass@127.0.0.1:3306/peq \
cargo run --release -- serve --data ./data --addr 0.0.0.0:8088 --secret-file ./data/secret
The server reads
EQEMU_DB_URLfrom the environment. When running the container directly withpodman run, pass-e EQEMU_DB_URL=mysql://peq:peqpass@<host>:3306/peqand ensure/data/secretexists.
podman compose -f ~/git/EQEmu/compose.yaml -f compose.assets.yaml up --build
Read-only WLD/PFS inspectors, for answering "what is actually in this archive?"
when a bake looks wrong. They are not shipped: the Containerfile builds only
--bin eqoxide-assets.
cargo run --bin wlddump -- <archive.s3d> # fragment inventory, skeletons, raw fragment histogram
cargo run --bin wlddump -- extract <archive.s3d> <file> <out> # pull one file out of a PFS archive
cargo run --bin trackdump -- <archive.s3d> [NAME_FILTER] # Track (0x13) animation fragment names, per WLD
cargo run --bin skinbones -- <archive.s3d> <wld> <mesh> <skeleton> # vertex-range -> bone, face-range -> material
cargo run --bin skelmeshes -- <archive.s3d> <wld> <skeleton> # attached-mesh list + per-mesh bbox/scale/skin groups
This is an addon: it does not modify the EQEmu source tree.