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 (
.asi
and 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.dmp
The crash dump.log.txt
The log of the recent run.info.json
Contextual 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.