DrBeef / Lambda1VR

Port of the Xash3D-FWGS Half Life Engine to Oculus Quest
GNU General Public License v3.0
190 stars 21 forks source link

Lambda1VR Banner

Lambda1VR

Lambda1VR is a port / mod of the Xash3D-FWGS Half-Life Engine for the Oculus Quest adding 6DoF weapon support and OpenGLES2.0 rendering.

Xash3D is a game engine, aimed to provide compatibility with Half-Life Engine, 
as well as to give game developers well known workflow and extend it.
Read more about Xash3D on ModDB: https://www.moddb.com/engines/xash3d-engine

SideQuest

The easiest way to install this on your Quest is using SideQuest, a PC desktop app designed to simplify sideloading apps and games ( even beat saber songs on quest ) on Standalone Android Headsets like Oculus Quest and Oculus Go. It supports drag and drop for installing APK files!

Download the latest version of SideQuest here: https://github.com/the-expanse/SideQuest/releases

Once you have installed Lambda1VR you will need to copy the game assets from a legally owned half-life install. Details below.

IMPORTANT NOTE

This is solely an engine port/mod, no game assets are included whatsoever. YOU MUST LEGALLY OWN HALF-LIFE IF YOU WISH TO PLAY IT IN VR USING LAMBDA1VR.

The original half-life can be purchased on Steam: https://store.steampowered.com/app/70/HalfLife/

PLEASE NOTE: Half-life: Source is not compatible.

Copying the Full Game files to your Oculus Quest

Before attempting to start Lambda1VR you need to do the following:

Save Games File

Save game files are stored on the internal memory of your quest in the xash/valve folder. This means that if you uninstall/reinstall Lambda1VR all the saves are retained. If you change headset just make sure you copy {quest}/xash/valve/save to the new Quest. Any update will not affect any of your save game files.

Controls

Before you ask... YES!, the crowbar has to be swung in real life to smash stuff! (except in multi-player, you still have to press the trigger I'm afraid).

Left-handed people

Add the following cvar to your config.cfg file: vr_control_scheme "10"

If left handed players wish to mirror the weapons to avoid seeing the gaps in some of the weapon models then set the following cvar in config.cfg: vr_mirror_weapons "1"

Button / Controller Mappings (Primary configuration)

"BackPack"

You can get quick access to the crowbar by reaching behind (so the controller is obscured) and then holding down the grip trigger, this will then auto-switch to the crowbar whilst the grip trigger remains held down. As soon as you release the grip you will switch back to the weapon you had selected previously. This is an excellent way to quickly smash boxes/vents etc without the hassle of cycling through the weapon selector for the crowbar.

Mappings

This is the primary/default button mapping, an alternative configuration that might suit smooth turn locomotion players will be coming soon..

Dominant Hand Controller
Orientation/Position Weapon Orientation/Position
Trigger Fire Primary / Secondary
Grip (Hold) Enable secondary fire
Grip (Quick Click) Reload
Click Thumbstick Use (action)
Thumbstick Left/Right Turn
Thumbstick Up/Down Select Weapon (Fire to accept new weapon)
A / X (depending on dominant hand controller) Crouch*
B / Y (depending on dominant hand controller) Jump

* If you physically crouch in real life, then when the proper duck mechanic is triggered in-game you will see a HUD indicator in the top-right of the view

Off-hand Controller
Thumbstick Move/Strafe
Menu Button Menu
X / A (depending on off-hand controller) Flashlight on/off
Y / B (depending on off-hand controller) Toggle screen mode for cut-scenes (Show multi-player score table in multi-player games)
Orientation/Position Flashlight Orientation/Position
Trigger Hold down to run)
Grip (hold) Weapon Stabilise (hold to remain active)*
Click Thumbstick Enable/Disable Laser Aim

* Weapon stabilisation has a deadzone when the two controllers are less than 15cm from each other to prevent screwing up two-handed aiming with the Glock etc

Command Line Parameters

It is possible to supply command line parameter to the xash engine (and the Lambda1VR wrapper) using the commandline.txt file. The following command line parameters are supported by Lambda1VR (for a list of command line params supported by the Xash3D engine please see the Xash3D documentation):

for example you might use:

xash3d -log --supersampling 1.5 --msaa 2

Which will set super sampling to 1.5 and msaa to 2.

Parameter Values Desription
supersampling 0.1 upwards (default: 1.25) Sets the super (or under) sampling value
msaa 1, 2, 4 (default: 4) Sets the MSAA anti-aliasing value
cpu 1-4 (default: 2) Sets the CPU scaler
gpu 1-4 (default: 3) Sets the GPU scaler

Things to note / FAQs

Known Issues

Future To-Dos

Building

You need the following:

Alternatively you can use the docker image created by BrainSlugs83 which can be found here: https://github.com/BrainSlugs83/DockerOvrSdk

Credits

I would like to thank the following teams and individual for making this possible:

Notice of Non-Affiliation and Disclaimers

Lambda1VR is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Valve Corporation, or any of its subsidiaries or its affiliates. Lambda1VR is an unofficial port of the Xash3D-FWGS engine, which was originally written by Uncle Mike as a fully compatible open-source GoldSrc engine alternative, more details on that extraordinary project can be found here: https://www.moddb.com/engines/xash3d-engine However this port (Lambda1VR) is not affiliated, associated, authorized, endorsed by, or in any way officially connected with the Xash3D team. This port was developed using the now deprecated Xash3D port found here: https://github.com/FWGS/xash3d

Licensing

Lambda1VR is covered by the GPL 3.0 license which is inherited from the Xash3D-FWGS project. The HLSDK sub-repository and associated works (which include the original 6DoF weapons code by Max Vollmer) are in a separate repository wholly covered with the Valve Corporation Half Life 1 SDK LICENSE (https://github.com/DrBeef/hlsdk-xash3d).