Skip to content

A game-engine recreation of the Dark engine, focusing on System Shock 2 on Quest

Notifications You must be signed in to change notification settings

tommy-xr/shock2quest

Repository files navigation

shock2quest

Build & Unit Test Build Android

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

shock2quest: hitboxes

  • Dual Wielding + Character Models

shock2quest: dual wielding

  • Floating Inventory for VR

shock2quest: floating inventory

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, when Q and E are not pressed
  • W A S D - move around
  • Q E - 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

Roadmap

Pre Alpha: Initial development

  • Load gamesys
  • 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.

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 Library
  • openxr - Bindings for OpenXR
  • rodio - Audio Support
  • serde - Serialization / Deserialization (Load/Save)
  • cgmath - Vector math library
  • clap - Command line parsing
  • cargo-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

Releases

No releases published

Packages

No packages published