DescentDevelopers / DescentDevelopers/Descent3

Restore the ability to run 32-bit level scripts

Open
#620 4 comments 0 reactions 0 assignees View on GitHub
enhancement help wanted request
Dominant language
C++
Stars
3k
Forks
285
PR merge metrics
No merged PRs in 30d

Description

This has been mentioned multiple times, so here is a master issue to talk about it and suggest possible solutions.

The problem is the following: Descent 3 relies on pre-compiled scripts inside of levels to run the logic: open doors, pick-up objects, etc. For a long time now, we're compiling the main campaign's level scripts and put them in an OS-dependent file: `d3-linux.hog`/`d3-osx.hog`/`d3-win.hog`. This means that level scripts should be compiled again when the game ABI is updated.

Outside of the main campaigns, many user levels have been created over the years using the Descent 3 level editor, generating level scripts binary blobs that are now incompatible with the current version of the game. Especially, the game is now compiled exclusively to 64-bit architectures, instead of the original 32-bit it originally ran on. This means that user-created level scripts that have not been compiled recently against the 64-bit Descent 3 game cannot be played at all.

So far, it has been proposed to use a virtual machine able to run 32-bit black-box scripts/blobs, in particular using the [Box86](https://github.com/taviso/loadlibrary) or [loadlibrary](https://github.com/taviso/loadlibrary) projects, but no proof of concept has been made. More investigation is needed to find the best solution we can get to get old user-created levels to run again.

Related to #583 among others

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.