JeodC / Descent3

Descent 3 by Outrage Entertainment -- Forked.
GNU General Public License v3.0
3 stars 0 forks source link

[Feature] Custom models/ship properties implementation #3

Open JeodC opened 1 month ago

JeodC commented 1 month ago

Description

This issue is really to document things. The Descent 3 Pyromania mod replaces the vanilla ship selection with custom models, each with their own properties, and has some other features like new titlescreen artwork, classic weapons and sounds, and its own gamemode (.d3m).

The mod was created via hex editing the executable (pre-source release) and the relevant files mania15.hog and track.hog contain .gam files that replace the original game's Table.gam and extra.gam files (found in d3.hog and merc.hog). There is currently no method to append table files, so to use Pyromania, one must outright replace existing ships. In the future, it would be nice to be able to implement addons such as this via appending table files and optionally selecting which parts to use (as in this one, the Telcom ship selection menu would not provide the full array of ships if appended). If successfully done, multiplayer would need some kind of check for modded ships which a client may not have models of.

*Note: The custom/graphics and custom/sounds folders are used for ship decals and multiplayer taunts--NOT for mods as might be believed.

JeodC commented 1 week ago

Loading extra.gam is performed in manage.cpp. Perhaps this can be the entrypoint to loading mods. Possibly convert that entire section to a function and use it to load extra table files.

Will need to trace function calls, starting with InitTableFiles.