Platform Support
These pages contain miscellaneous notes regarding support on each platform.
| Operating System | Status |
|---|---|
| Windows | ✅ |
| Linux (Wine/Proton) | ✅ |
| Native Linux | ⚡ Implement on Demand |
| Native OSX | 🔍 Investigation Needed |
| Other | 🔍 Investigation Needed |
Implement on Demand means; it'll be done when there's game to test.
The code will always be written with cross platform in mind; worry not.
Minimum Requirements
As the core loader is written in Rust, it is theoretically possible to support any platform provided:
- You have access to sufficient amount of libc.
- LLVM supports the machine code for your target (e.g. ARM, x86 etc.).
- Executable format reverse engineered, so you can make linker produce libraries.
- You can dynamically load libraries.
- You can arbitrarily execute code in a game process (write a Bootloader).
Categories Covered in Each Platform
Note: Info on bootstrapping the loader itself is covered under Bootloader.
These topic instead include platform specific caveats and strategies, such as:
- Running existing code mods (
.asiand friends), if applicable. - Crash Handling
- Intercepting Process Exit
And of course, anything else that's interesting. The pages are more of a 'Cheat Sheet'.
Crash Handling
Each Platform should Make A Crash Dump
After a crash has been encountered; the code should (if possible):
- Generate a Crash Dump.
- Dump Log to Same Location as Crash Dump.
- Display Crash Address (incl. Module/DLL name).
- Open a file manager in the location of the dump.
Dumps will be written out to [TODO: Link Pending] as:
dump.dmpThe crash dump.log.txtThe log of the recent run.info.jsonContextual information (e.g. Mod list game was started with).
The server should clean old crash dumps after some time (for instance, 7 days).
Crash handling should be opt-out in loader, in case you want to use an external handler.