OpenVR support integrated into QuakeSpasm. The goal of this fork is primarily to keep it up-to-date with the current versions of QuakeSpasm and OpenVR. This allows maximized MOD support and support for the Enhanced Edition aka Re-Release of Quake.
There is however no big further development planned apart from minor features and bugfixes.
If your are looking for a much more feature rich VR experience, check out Quake VR (see section below on differences between both projects).
Here are the changes to the last iterations of QuakeSpasm-OpenVR by vittorioromero and Fishbiter:
- Update to most current QuakeSpasm (v0.96.3)
- 64bit build
- Added head-based movment (in addition to controller-based movement)
- Fixed Multiplayer (Cross-Play with non-VR players should be possible!)
- Improved controller binding
- Support for enhanced weapon models
- Various other fixes and tweaks
Vittorio Romeo expanded QuakeSpasm-OpenVR
considerably into the most excellent Quake VR, which is definitely a much more feature rich VR implementation - including teleportation, finger tracking, VR interactions, two-handed weapons, dual wielding, holsters and much more.
It is however a heavily modified version of QuakeSpasm, which is not compatible with enhanced mods (like Arcane Dimensions) out-of-the-box, and does not allow multiplayer-crossplay with non-VR players.
I would recommend you to enjoy Quake VR primarily with vanilla Quake, it's official expansions as well as supported maps.
For a more bare-bone experience supporting all features of current QuakeSpasm (e.g. support for Arcane Dimensions and the Enhanced Edition), or cross-play multiplayer with non-VR-players QuakeSpasm-OpenVR would probably be the better option.
This fork of QuakeSpasm...
- builds on the most current
QuakeSpasm-OpenVR
version from vittorioromeo/Quakespasm-OpenVR- which was forked from Fishbiter's improvement on Zackin5's version
- which was forked from Zackin5's OpenVR port of Dominic Szablewski's (Phoboslab) Oculus modification of Quakespasm
- which was forked from Dominic Szablewski's (Phoboslab) Oculus modification of Quakespasm and utilizing the OpenVR C wrapper by Ben Newhouse.
- which was forked from Zackin5's OpenVR port of Dominic Szablewski's (Phoboslab) Oculus modification of Quakespasm
- which was forked from Fishbiter's improvement on Zackin5's version
Extract the most recent release into your Quake
or Quake\rerelease
folder (where the subfolder Id1
resides).
Launch quakespasm-openvr.exe
.
There is a HD textures package available. Simply extract the zip-file into the Id1
subfolder (where PAK0.PAK
is located).
You can also download a HD texture pack for Arcane Dimensions here. Simply extract the textures
folder into your ad
directory.
There are also 3 mods available containing enhanced models for enemies and weapons. These can also be used with QuakeSpasm-OpenVR.
-
This pack contains the fully modelled weapons by Plague, adapted and animated for VR by Skizot, and expansion weapons added by codeflorist. This pack is perfect for VR.
To use them with QuakeSpasm-OpenVR, extract
pakz.pak
into yourid1
subfolder and rename it by changing thez
to a number higher then the highest existingpak
-file inside yourid1
folder. If you are usingpak
files from vanilla Quake this will bepak2.pak
, and if you're using the Re-Release, it will bepak1.pak
.For the expansions, as as well as Arcane Dimensions, do exactly the same with the
hipnotic
,rogue
andad
subfolders. There is also a special pack available for the Alkaline mod. Simply extract it into thealk
subfolder.You will notice, that the weapon offsets and scaling will be off. To switch to the correct offsets, access the
VR Options
in Quake's main menu and switchGun Model Offsets
fromVanilla
toPlague
. (Note that you will have to do that for each expansion/add-on you load, since Quake writes separate configs per mod.) -
Enhanced Model Conversions Pack:
This pack is a conversion of the enhanced models from Quake's Re-Release. Models from the expansions are missing though. There are 2 ways to use it with QuakeSpasm-OpenVR:
- Extract the
enhanced
folder of the downloaded archive into yourQuake
folder, and start the game with-game enhanced
. This should automatically load vanilla Quake with the new models and correctly apply the correct weapon offsets. - If you want to use the new models globally with all expansions and add-ons, rename
pak0.pak
from theenhanced
folder by changing the0
to a number higher then the highest existingpak
-file inside yourid1
folder. If you are usingpak
files from vanilla Quake this will bepak2.pak
, and if you're using the Re-Release, it will bepak1.pak
. You will notice, that the weapon offsets and scaling will be off. To switch to the correct offsets, access theVR Options
in Quake's main menu and switchGun Model Offsets
fromVanilla
toEnhanced
. (Note that you will have to do that for each expansion/add-on you load, since Quake writes separate configs per mod.)
- Extract the
-
This pack contains considerably more models as the one above - including converted ones from the Re-Release, but some weapons look worse than Plague's Weapon Pack and the Enhanced Model Conversion Pack linked above. To use them with QuakeSpasm-OpenVR, extract it into your
Quake
folder and rename thepakz.pak
files by changing thez
to a number higher then the highest existingpak
-file inside yourid1
,hipnotic
, androgue
folders. You will notice, that the weapon offsets and scaling will be off. To switch to the correct offsets, access theVR Options
in Quake's main menu and switchGun Model Offsets
fromVanilla
toAuthentic
. (Note that you will have to do that for each expansion/add-on you load, since Quake writes separate configs per mod.) -
A total conversion mod for Quake featuring familiar plastic blocks.
To use them with QuakeSpasm-OpenVR, extract
blockquake_vanilla.pak
into yourid1
(or any mod) subfolder and rename it to a number higher then the highest existingpak
-file inside yourid1
folder. If you are usingpak
files from vanilla Quake this will bepak2.pak
, and if you're using the Re-Release, it will bepak1.pak
.You will notice, that the weapon offsets and scaling will be off. To switch to the correct offsets, access the
VR Options
in Quake's main menu and switchGun Model Offsets
toBlock-Quake
. (Note that you will have to do that for each expansion/add-on you load, since Quake writes separate configs per mod.)
You can also use multiple MODs in conjunction. E.g. load the Authentic pack first as e.g. pak1.pak
to get the wide arrange of models and then the Plague's Weapon Pack second e.g. as pak2.pak
to get the better VR-optimized weapon models. Of course you have to set Gun Model Offsets
to Plague
in this case.
Both head-based (default) and controller-based movement is supported. You can change it in the VR options.
Input from VR Controllers are mapped to various joystick-related input (except the left Application Menu button is bound to ESCAPE
). The fork comes with the following reasonable default binding:
Controller Button | Key Mapping | Default Action |
---|---|---|
Left Trigger | LTRIGGER |
Jump |
Right Trigger | RTRIGGER |
Attack / Enter in Menu |
Left Application Menu / B Button | ESCAPE |
Toggle Menu / Escape |
Right Application Menu / B Button | BBUTTON |
Next Weapon |
Left Pad/Stick Click | LTHUMB |
Run |
Right Pad/Stick Click | RTHUMB |
Jump |
Left Grip | LSHOULDER |
Show Scores |
Right Grip | RSHOULDER |
Jump |
Left A Button | ABUTTON |
Show Scores |
Right A Button | XBUTTON |
Previous Weapon |
Right Axis 2 Press | YBUTTON |
none |
Right Pad/Stick Up | UPARROW |
none |
Right Pad/Stick Down | DOWNARROW |
none |
Right Pad/Stick Left | LEFTARROW |
none |
Right Pad/Stick Right | RIGHTARROW |
none |
- In SteamVR's default Legacy bindings, controllers with a dedicated
A
button (e.g. Index Controllers) cannot use this button independently from theGrip
button. To change this, mapA Button
Click toLeft/Right A Button
instead ofGrip Button
in SteamVR's controller binding forquakespasm-openvr.exe
. NowA
buttons andGrip
can be mapped independently. Right Axis 2 Press
is not mapped at all in SteamVR's default Legacy bindings. You can bind it e.g. to theRight Touchpad Click
to get an additional button.- By default, the right pad/stick is configured for smooth/snap turning. If you use real roomscale-turning, you can set
Turn Speed
in the VR-Settings to the lowest setting (0) to turn this off. Then you can rebind the pad/stick like a D-Pad with 4 directions. You can use these 4 additional bindings e.g. for quick-loading/-saving or mapping of specific weapons. - Check out the Community Binding
Index Controller Bindings
bygameflorist
in SteamVR for a preset for Index Controllers, that makes the maximum buttons available for binding.
Quick weapon selection is not so easily achievable with the limited buttons available on VR controllers, and just relying on next/previous weapon buttons is a disadvantage. There is a trick to mitigate this:
In Quake the normal Nailgun gets arguably obsolete, once the Super Nailgun is obtained. It is the same with the Shotguns, as well as Grenade- and Rocket-Launchers.
QuakeSpasm allows a button-binding e.g. like this: impulse 4; wait; impulse 5
. This will select the Nailgun, if you have it, and then immediately try to select the Super Nailgun, if you have it. Effectively using this button as "Gimme the best nailgun!".
Now, if you use roomscale-turning, you have the right stick free for additional bindings. You could e.g. bind the directions like this in the config.cfg
:
bind "UPARROW" "impulse 2; wait; impulse 3"
bind "DOWNARROW" "impulse 6; wait; impulse 7"
bind "LEFTARROW" "impulse 8"
bind "RIGHTARROW" "impulse 4; wait; impulse 5"
Throw in bind "RTHUMB" "impulse 1"
to select the Axe on stick-press, and the perfect weapon for the current situation will always just a push or click away.
All mission packs, add-ons and mods (supported by QuakeSpasm) should work out of the box. This includes:
- Scourge of Armagon
- Dissolution of Eternity
- Dimension of the Past
- Dimension of the Machine
- Arcane Dimensions (be sure to place it in a
ad
subfolder) - Alkaline (be sure to place it in a
alk
subfolder) - Slave Zero X: Episode Enyo (be sure to place it in a
enyo
subfolder) - Tomb of Thunder (be sure to place it in a
tombofthunder
subfolder) - Block-Quake (be sure to set
Gun Model Offsets
in theVR Options
toBlock-Quake
) - etc.
As usual, expansion packs and mods are placed inside subfolders and then launched by stating the subfolder via the game
parameter (e.g. quakespasm-openvr.exe -game hipnotic
).
Quake Enhanced Edtion (aka Re-Release) stores it's Add-Ons in C:\Users\<your-user>\Saved Games\Nightdive Studios\Quake\
. You have to copy the subfolders (e.g. honey
or q64
) of this folder into the folder where quakespasm-openvr.exe
is located and launch the Add-On like stated above.
- Arcane Dimensions, and Alkaline
- When launching one of these mods, it will not display anything in VR at first. Press the Enter key twice in order to get in game and play in VR.
Alternatively you can also add
+map start
to your start script to circumvent this problem. (e.g.quakespasm-openvr.exe -game ad +map start
)
- When launching one of these mods, it will not display anything in VR at first. Press the Enter key twice in order to get in game and play in VR.
Alternatively you can also add
- The Spiritworld
- When launching this mod, it will not display anything in VR at first. Press the Esc key and then the Enter key twice in order to get in game and play in VR.
Alternatively you can also add
+map start
to your start script to circumvent this problem. (e.g.quakespasm-openvr.exe -game spiritworld +map start
)
- When launching this mod, it will not display anything in VR at first. Press the Esc key and then the Enter key twice in order to get in game and play in VR.
Alternatively you can also add
- Underdark Overbright & Copper
- Water is rendered differently per eye in Underdark Overbright & Copper. The problem can be alleviated a bit by setting
r_wateralpha "0"
in yourconfig.cfg
.
- Water is rendered differently per eye in Underdark Overbright & Copper. The problem can be alleviated a bit by setting
vr_enabled
– 0: disabled, 1: enabledvr_crosshair
– 0: disabled, 1: point, 2: laser sightvr_crosshair_size
- Sets the diameter of the crosshair dot/laser from 1-32 pixels wide. Default 3.vr_crosshair_depth
– Projection depth for the crosshair. Use0
to automatically project on nearest wall/entity. Default 0.vr_crosshair_alpha
– Sets the opacity for the crosshair dot/laser. Default 0.25.vr_aimmode
– 7: Head Aiming, 2: Head Aiming + mouse pitch, 3: Mouse aiming, 4: Mouse aiming + mouse pitch, 5: Mouse aims, with YAW decoupled for limited area, 6: Mouse aims, with YAW decoupled for limited area and pitch decoupled completely, 7: controller attached. Default 7. (Note I haven't been very careful about maintaining these other modes, since they're obsolete from my point of view).vr_deadzone
– Deadzone in degrees forvr_aimmode 5
. Default 30.vr_viewkick
– 0: disables viewkick on player damage/gun fire, 1: enablevr_world_scale
- 1: Size of the player compared to normal quake character.vr_floor_offset
- -16: height (in Quake units) of the player's origin off the ground (probably not useful to change)vr_snap_turn
- 0: If 0, smooth turning, otherwise the size in degrees of each snap turn.
New cvars for analog stick (and touchpad?) tuning on VR controllers. Default values should behave the same as before, but note that this version has not been tested with snap turning enabled. These have only been tested with analog sticks (Oculus Touch and Index Controllers), no idea how they behave with Vive touchpads.
vr_joystick_yaw_multi
- 1.0: Adjusts turn speed when using VR controllers, suggested 2.0-3.0vr_joystick_axis_deadzone
- 0.25: Deadzone value for joysticks, suggested 0.1-0.2vr_joystick_axis_exponent
- 1.0: Exponent for axis input, suggested 2.0. Larger numbers increase the 'low speed' portion of the movement range, numbers under 1.0: decrease it, 1.0 is linear response. 2.0 makes it easier to make fine adjustments at low speedvr_joystick_deadzone_trunc
- 1 If enabled (value 1) then minimum movement speed will be given by the deadzone value, so it will be impossible to move at speeds below the deadzone value. When disabled (value 0) movement speed will ramp up from complete standstill to maximum speed while above the deadzone, so any speed is possible. Suggest setting to 0 to disable
Quake's weapons don't seem to be particularly consistently sized or offset. To work around this there are cvars to position/scale correct the weapons. Working default offsets are included for the following weapons:
- Vanilla Quake, Scourge of Armagon and Dissolution of Eternity weapons (including the VR versions of Plague's weapon pack and Enhanced and Authentic Model Packs - see info above for details!)
- Arcane Dimensions weapons (be sure to use folder-name
ad
and start game with-game ad
to have them applied, see info above for use of VR weapons) - Alkaline weapons (be sure to use folder-name
alk
and start game with-game alk
to have them applied, see info above for use of VR weapons) - Weapons for Block-Quake (set
Gun Model Offsets
in theVR Options
toBlock-Quake
). - Weapons for Slave Zero X: Episode Enyo (be sure to use folder-name
enyo
and start game with-game enyo
to have them applied). - Weapons for Tomb of Thunder (be sure to use folder-name
tombofthunder
and start game with-game tombofthunder
to have them applied).
Unsupported mods may require new offsets. You can modify offsets by using the following cvars:
There are 25 slots for weapon VR offsets. There are 5 cvars for each (nn can be 01 to 25):
vr_wofs_id_nn
: The model name to offset (this name will be shown when equipping a weapon that doesn't have a VR offsetvr_wofs_scale_nn
: The model's scalevr_wofs_x_nn
: X offsetvr_wofs_y_nn
: Y offsetvr_wofs_z_nn
: Z offset
Here are the nn
values for all vanilla and mission pack weapons:
Weapon | nn |
---|---|
Axe | 01 |
Shotgun | 02 |
Super Shotgun | 03 |
Nailgun | 04 |
Super Nailgun | 05 |
Grenade Launcher | 06 |
Rocket Launcher | 07 |
Scourge of Armagon (hipnotic): | |
Thunderbold | 08 |
Mjolnir Hammer | 09 |
Laser Cannon | 10 |
Proximity Launcher | 11 |
Dissolution of Eternity (rogue): | |
Lava Nailgun | 12 |
Lava Super Nailgun | 13 |
Multi Grenade Launcher | 14 |
Multi Rocket Launcher | 15 |
Plasma Gun | 16 |
You can place any modified cvars in an autoexec.cfg
in the mod's directory to apply them for a mod, or in id1
to apply them globally.
If you have found working values for a mod, feel free to create an issue, and i will try to include support for them out-of-the-box!
Here is how to merge the current version of QuakeSpasm:
git remote add sezero https://github.com/sezero/quakespasm.git
git fetch sezero --tags
git merge quakespasm-0.95.1 // use tag of new version to merge
Here is how to build this fork on Windows:
- Install current version of Visual Studio (17.5.3 at the time of writing) with C++ workloads.
- Open the file
.\Windows\VisualStudio\quakespasm.sln
in Visual Studio - Build
quakespasm-sdl2
. - As usual you also need a
id1
folder with aPAK0.PAK
to be able to launch the game.