Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411492 Posts in 69371 Topics- by 58428 Members - Latest Member: shelton786

April 25, 2024, 05:25:47 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsQuake VR - turning Quake 1 into a full-fledged virtual reality experience
Pages: [1]
Print
Author Topic: Quake VR - turning Quake 1 into a full-fledged virtual reality experience  (Read 1552 times)
vittorioromeo
Level 2
**



View Profile WWW
« on: March 21, 2020, 06:55:46 AM »

Hello TIGForums! A few months ago I was craving for a new side project outside of work. Having recently purchased a new gaming rig and Valve Index, I figured I would do some VR game development.

After playing around with Unity and Unreal for a while, I was generally unsatisfied and nothing clicked. I wanted something lower-level and more "raw". That's when I stumbled upon Fishbiter's Quake 1 VR port (https://github.com/Fishbiter/Quakespasm-OpenVR), which laid the VR foundations for one of my favorite classics. It added stereo rendering and basic motion controls, but nothing much else.

I forked it and started working on improving it and changing it to create my ideal Quake 1 VR experience:
https://github.com/SuperV1234/quakevr

It's been slightly more than a month, and so far Quake VR supports the following features:
* Smooth locomotion
* Fully room-scale (including jumping)
* Hand tracking
* Weapon models with hands and ironsights
* VR interactions (melee, pick up items, press buttons)
* Rebalanced for VR (hitboxes, difficulty, projectile speed)
* Steam VR Input API support (can rebind inputs in Steam VR settings)
* Many customization options (e.g. melee damage/range, hand/body item pickup, and more)
* Brand new particle system (smoke, blood, lightning effects, and more)
* Haptic feedback (weapons, melee, damage, interactions with items)

You can see a trailer for version 0.0.1 here:




The upcoming version, 0.0.4, is a huge update and adds a lot of new features:
* Positional damage
* Two-handed aiming and weapons (including virtual stock support)
* Collisions between weapons and world geometry/entities
* Teleportation system
* Full support for Scourge of Armagon mission pack
* Weight simulation for weapons (heavier weapons are "harder" to move and turn)
* Grappling hook

You can see a (older) sneak peek video here:




I will be using this thread as a means to keep me motivated and update people about my work. If you have a VR headset, download Quake VR today and let me know what you think!

Readme:
https://github.com/SuperV1234/quakevr

Download:
https://vittorioromeo.info/quakevr

Source & issue tracker:
https://github.com/SuperV1234/quakevr

Everything is free and open source, but I do accept (and appreciate) donations:
* https://patreon.com/vittorioromeo
* https://paypal.me/romeovittorio
Logged

oahda
Level 10
*****



View Profile
« Reply #1 on: March 21, 2020, 08:18:54 AM »

Recognise your name from a C++ talk on template ECS! Will admit I'm not personally particularly into Quake or VR (nor do I have a headset to try this), but this is still really cool to me from a technical standpoint. Gomez Is this your first VR project?
Logged

vittorioromeo
Level 2
**



View Profile WWW
« Reply #2 on: March 21, 2020, 10:01:04 AM »

Recognise your name from a C++ talk on template ECS! Will admit I'm not personally particularly into Quake or VR (nor do I have a headset to try this), but this is still really cool to me from a technical standpoint. Gomez Is this your first VR project?

That talk and experimental ECS library were fun to work on Smiley
Yes, this is my first VR project. Thankfully, due to the initial fork and to OpenVR's ease of use it wasn't too bad. The real challenge was understanding Quake's source code and the QuakeC files (which is a C-like scripting language used by the game), and propagating the right VR data through the Quake virtual machine.

Now I'm mostly doing 3D vector math to make the shooting feel nice, and some modelling for guns as well.

Bonus GIF:
https://twitter.com/i/status/1241392996739878914
Logged

harsay
Level 0
**


View Profile WWW
« Reply #3 on: March 22, 2020, 03:11:35 AM »

Time to remove dust from my Vive unit.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #4 on: March 22, 2020, 05:43:36 AM »

Recognise your name from a C++ talk on template ECS!
Whelp, that's enough of an endorsement for me!

Also not an FPS guy in terms of playing them but I can definitely appreciate the craft that goes into developing them!
Logged
vittorioromeo
Level 2
**



View Profile WWW
« Reply #5 on: March 24, 2020, 01:54:42 PM »

This had to be done...





Having too much fun hacking on this project!
Logged

Interface
Level 0
**



View Profile
« Reply #6 on: March 24, 2020, 02:08:14 PM »

The grappling hook with dual wielding adds a whole new mechanic for sure Smiley
Logged
JobLeonard
Level 10
*****



View Profile
« Reply #7 on: March 24, 2020, 02:08:28 PM »

I can see that in the video  Kiss
Logged
oahda
Level 10
*****



View Profile
« Reply #8 on: March 26, 2020, 02:23:05 PM »

Nice! Double clawshot in Zelda was the best, so this is obviously what every action game needs. Kiss
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #9 on: March 26, 2020, 02:34:30 PM »

We need more videos! Videos of Spider-man you webslinging grappling hook..ing(?) across the level!

Set this music:


Logged
vittorioromeo
Level 2
**



View Profile WWW
« Reply #10 on: March 28, 2020, 11:25:52 AM »

Here's a new sneak peek for the upcoming v0.0.4 update. New major (WIP) features showcased in this video:
* Weapon holster system (hips, shoulders)
* Weapon throwing (weapons are now physical entities)





I need some tips on how to balance dual-wielding, holstering, and weapon throwing. At the moment, I didn't really change how the inventory system works. When you pick up a weapon, a flag is set on the player, and that weapon is always available (until you run out of ammo).

I have two buttons to cycle through available weapons on either hand. Currently, you can holster or throw multiple copies of the same weapon, because holding a weapon in your hand does not remove it from your inventory.

There are several design directions I can take:

* Keep the system as it is. Holsters are just "quick slots" for your weapons. You can throw the same weapon multiple times. Maybe the last thrown copy of a weapon disappears if throw it again. This is not very immersive. It ensures that weapons are always available, even if you throw a weapon and it gets stuck. It allows you to carry an infinite number of weapons. It also makes dual-wielding always possible, which might make the player overpowered.

* Keep track the weapons. If a weapon is not in a holster or in your hand, you do not have it. Throwing a weapon means you need to pick it up again, unless you want to discard it. This is more immersive. However, if one of your weapons gets stuck in Quake's weird geometry and you cannot pick it back up, it would be quite frustrating. Maybe I could add some sort of "force pull" like in Alyx/Boneworks to prevent that. Another issue is that you only have 4 holster slots + 2 hands. I can probably add some extra holders somewhere on the body, but it limits the number of weapons you can carry anyway. This is an issue in Quake because levels are designed with the idea in mind that the player is carrying the previous level's weapons when entering. Maybe I could add some sort of dispenser at the beginning of the level to select which weapons you want to start with.

Looking forward to hear your thoughts on this!
Logged

vittorioromeo
Level 2
**



View Profile WWW
« Reply #11 on: April 29, 2020, 10:26:52 AM »

Finally released Quake VR v0.0.4!





Major new features:
- Dual-wielding & 2H aiming
- Physical weapons (can throw, grab, force-grab)
- Body and holster system

Here's the full changelog:

Code:
* **Added teleportation.**
    * New teleportation mechanic to help players who get motion sickness from smooth locomotion. Range can be configured. Roomscale movement can also be multiplied to help players with smaller playing areas.
* **Added support for "Scourge of Armagon" mission pack.**
    * Full support for the SoA mission pack, including levels and new weapons. The new weapons are available even if you do not own the expansion. See the README for installation instructions.
* **Added MIRV-firing ogres from "Dissolution of Eternity".**
    * Full support not yet available for DoE, but starting to port some features over.
* **Added grappling hook from "Dissolution of Eternity".**
    * Available as a "toy" under the "Debug" options menu, as it is fairly game-breaking. But it is a lot of fun to play with!
* **Added "smooth line" crosshair.**
    * New rendering setting that smooths out the laser's beginning and ending.
* **Added two-handed weapon aiming with virtual stock support.**
    * Most weapons can now be held with two hands. By default, your shoulder position will also be taken into account in order to simulate a virtual stock.
* **Turned on shadows by default and added shadow options.**
    * Feature from QuakeSpasm. Not perfect, but can improve immersion. Might also reduce FPS, so it can be turned off.
* **Added dual-wielding.**
    * You can now dual-wield weapons to your heart's desire. Enjoy the carnage.
* **Added VR torso.**
    * Tries to figure out the player's torso orientation independently from the head using the position of the hands as an heuristic. Also renders a torso (can be disabled).
* **Added weapon holsters.**
    * Added six weapon holsters on your body (shoulders, waist, thighs).
* **Weapons are now phyiscal objects.**
    * Weapons can now be thrown or dropped on the ground. Throwing weapons can damage enemies. Weapons can be picked back up and stored in holsters.
* **Added force grabbing for dropped weapons.**
    * Dropped weapons can be picked up without bending over, useful for seated play. Multiple types of force grab available.
* **Added weight simulation for weapons.**
    * Weapons now have a "weight" value which makes them harder to move or turn around. Useful to balance more powerful weapons such as the laser cannon, and to improve immersion.
* **Added random weapon drops from enemies and ammo boxes.**
    * Enemies and ammo boxes can now randomly spawn weapons the player has found before. Helps with the fact that holster slots are limited and that weapon can be thrown/lost.
* **Added positional damage.**
    * Most humanoid enemies now take more damage when shot in the head, and slightly less damage when shot in the legs/arms.
* **Fixed missing items from levels.**
    * Some items (e.g. biosuit, keys) were missing from levels due to hitbox changes. The hitbox changes have been reverted until I understand what is happening here.
* **Fix elevator-related bugs.**
    * There were some severe bugs when riding elevators, including the player taking damage and failing to interact with items. They should all be fixed now.
* **Fix jumping issues.**
    * Jumping against a wall didn't work properly before. This was due to the original roomscale movement implementation. This has been fixed, and jumping is consistent now.
* **Added bindings for WMR controllers.**
    * These have been provided from a WMR user, so they should work.
* **Added `scale` and `scale_origin` to QuakeC entities.**
    * Allows individual entities to be scaled without having to modify the model itself.
* **Added menu tooltips.**
    * Most menu entries now have a tooltip explaining what they do.
* **Added boolean locomotion bindings.**
    * Boolean smooth locomotion bindings were added to help people whose thumbstick doesn't work or is not recognized from their VR setup (e.g. OpenComposite).
* **Added `vr_fakevr` mode for debugging.**
    * Allows most VR features to be tested on a 2D screen, useful for debugging and testing non VR-specific changes.
* **Rewrote most of the menu system.**
    * Menus can now be coded declaratively, saving a lot of time and allowing quicker iteration.
* **Extreme code refactoring and cleanup.**
    * The `glm` library is now being used all over the source code. No more `vec3_t`.

Logged

vittorioromeo
Level 2
**



View Profile WWW
« Reply #12 on: June 08, 2020, 10:46:02 AM »

Quake VR 0.0.5 is now out!





Highlights:
- Multiplayer (including bots)
- Full support for Dissolution of Eternity
- Finger tracking

Full changelog:
https://github.com/SuperV1234/quakevr/releases/tag/v0.0.5
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #13 on: June 08, 2020, 01:32:57 PM »

That finger-tracking though
Logged
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic