Shock2quest
A game-engine recreation of the Dark engine, focusing on System Shock 2 on Quest
Install / Use
/learn @tommy-xr/Shock2questREADME
shock2quest
A project to experience the of System Shock 2 in virtual reality. System Shock 2 is one of my favorite games of all time, and the story and ambience would be a great for VR.
This project is a game engine recreation of the Dark engine - geared towards VR experiences.
You'll need a full retail copy of System Shock 2 in order to play - recommend purchasing at either GoG or Steam.
NOTE: This is currently in a a pre-alpha state and not really playable in any meaningful way, yet. I also have to apologize for the quality of the code, this is my first Rust project - so certainly a lot of room for improvement (and a lot of hacks and experiments!) It's a project done in bits of spare time, but wanted to share out in case it is fun or useful for anyone.
Screenshots
- Hitboxes
- Dual Wielding + Character Models
- Floating Inventory for VR
Running
TODO: Provide binaries
Controls
This is geared towards VR, so the control scheme is really meant for VR headsets and controllers.
However, you can play with a keyboard and a mouse, using the following hard-coded keys:
Mouse- look around with headset, whenQandEare not pressedWASD- move aroundQE- control left hand or right hand, respectively. Mouse look will move the hand, left click will 'trigger', and right click will 'grab'.
Building
See DEVELOPMENT.md
Quick Start with Cargo Aliases
The project includes convenient cargo aliases:
cargo dr- Run desktop runtime (shorthand forcargo run -p desktop_runtime --)cargo dq- Run dark_query CLI tool (shorthand forcargo run -p dark_query --)cargo dv- Run dark_viewer tool (shorthand forcargo run -p dark_viewer --)
Example usage:
cargo dr --experimental teleport # Run desktop with teleport feature
cargo dq entities earth.mis --limit 5 # Query entities in mission
cargo dv grunt_p.bin # View model file
Roadmap
Pre Alpha: Initial development
- [x] Load gamesys
- [x] Speech DB / env sounds
- [ ] Menu / Launcher
- [ ] Character sounds
- [ ] Basic AI
- [ ] Load/save
- [ ] Basic item usage
- [ ] Initial inventory management
- [ ] Psi Powers
- [ ] Act/React implementation
- [ ] Cutscenes
- [ ] Lighting implementation (Doom 3 multi-pass shadow rendering)
- [ ] Mod support
License
Some code is ported from openDarkEngine, so this code is licensed under GPLv2 to comply with that license.
In addition, code in the engine folder is agnostic of Shock2, so is dual-licensed under the MIT license.
Credits
- Demo assets are from BabylonJS Assets.
- VR glove model adapted from Valve's SteamVR Unity Plugin.
Thanks
There were several projects around the SS2 community, that served as an inspiration, or were used to help understand the internals of the dark engine and file formats, notably:
Outside of the system shock/thief community, the work that Team Beef has done in bringing games to VR inspired this project.
In addition, there were several great Rust libraries that helped bring this project to life:
rapier- Physics Libraryopenxr- Bindings for OpenXRrodio- Audio Supportserde- Serialization / Deserialization (Load/Save)cgmath- Vector math libraryclap- Command line parsingcargo-apk- easy cross-compiling to android
Finally, thank you to Nightdive Studios for keeping these retro games alive, as well as Le Corbeau for the NewDark patches that allowed me to revisit the SS2 universe
Related Skills
node-connect
339.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.9kCommit, push, and open a PR
