KozGit / DOOM-3-BFG-VR

Doom 3 BFG VR: Fully Possessed. Doom 3 BFG with native Oculus Rift/Touch or OpenVR support
GNU General Public License v3.0
368 stars 52 forks source link
____                           _____  ____   ______ ______ _    __ ____   

/ \ __ _ | / / ) / // /| | / // \ / / / // \ / \ / `_ \ / < / |/ /_ / / | | / // // / / // // // // // // / / / / /__/ // // // / / // / | |/ // , / /____/ _/ ____/// // ///__///// __/ |_/// ||

                        Fully Possessed

DOOM3-BFG VR : Fully Possessed Includes support for the HTC Vive via SteamVR, the Oculus Rift and Touch motion controls via the Oculus SDK or SteamVR, and (in theory) Windows Mixed Reality via SteamVR.

VR Implementation: /u/Samson- Major Contributions - Teleportation, Voice Commands, Flicksync, Bink videos, Loading other savegames, code improvements: Carl Kenner Holster slots, Crawl Space Head Collision, minor fixes: Leyland Doom VFR style teleporting, JetStrafe, Slow Mo and Tunnel vision motion sickness fixes: jckhng Spanish Voice Commands: TinoSM Windows Mixed Reality and VS2017 support: Mark Sheehan Additional VS2017 support: Bao Chi Tran Nguyen Linux support and buffer overrun fixes: Christoph Haag Originally inspired by: tmek

DOOM-3-BFG-VR Readme - https://github.com/KozGit/DOOM-3-BFG-VR

DOOM-3-BFG-VR was built using an older version of the RBDOOM3-BFG port. RBDOOM-3-BFG Readme - https://github.com/RobertBeckebans/RBDOOM-3-BFG


CONTENTS


This file contains the following sections:

1) SYSTEM REQUIREMENTS

2) GENERAL NOTES

3) INSTALLATION, GETTING THE GAMEDATA, RUNNING THE GAME

4) NEW FEATURES

5) CHANGES

6) CONTROLS

7) FLICKSYNC

8) VR OPTIONS

9) CONSOLE VARIABLES

10) KNOWN ISSUES

11) GETTING THE SOURCE CODE

12) COMPILING ON WINDOWS WITH VISUAL C++ 2013, 2015, OR 2017 EXPRESS / COMMUNITY

13) COMPILING ON LINUX

14) BUG REPORTS

15) LICENSE

16) CODE LICENSE EXCEPTIONS

1) SYSTEM REQUIREMENTS


Minimum system requirements:

CPU: 3 GHz + Intel compatible
System Memory: 8 GB
Graphics card: Nvidia Geforce GTX 960 or higher, with recent drivers
               or AMD 290 or above
OS: Windows 7 64 bit or above? or Linux
VR: SteamVR compatible HMD or Oculus Rift DK2 or above
A microphone or HMD containing a microphone

Recommended system requirements:

CPU: 3 GHz + Intel compatible
System Memory: 8 GB
Graphics card: Nvidia Geforce GTX 970 or higher, with latest drivers
               or AMD 290 or above
OS: Windows 10 64 bit
VR: HTC Vive or Oculus Rift CV1 with Touch and roomscale sensors

2) GENERAL NOTES


This release does not contain any game data, the game data is still covered by the original EULA and must be obeyed as usual.

Only the Doom 3 BFG Edition is supported. Classic Doom 3 is not supported yet.

You should patch the game to the latest version. If using Steam, this will happen automatically.

Note that Doom 3 BFG Edition is available from the Steam store at http://store.steampowered.com/app/208200/

Saved games:

The saved game folder is: %UserProfile%\Saved Games\id Software\DOOM 3 BFG\Fully Possessed

Your settings are also saved there as vr_oculus.cfg and vr_openvr.cfg You can delte the those setting files to return to default settings.

It will also try to load games (with partial success) from: %UserProfile%\Saved Games\id Software\DOOM 3 BFG\base %UserProfile%\Saved Games\id Software\RBDOOM 3 BFG\base

Games loaded from other versions, other mods, or different texture packs will have some glitches until you complete the level (which may not always be possible without cheats). You should use the "restartMap" console command after loading if you are near the start or you get stuck due to a glitch. It will restart the map with your current inventory but without any glitches. You can also use the "endLevel" console command to win the level and continue to the next level (without any glitches) if you get stuck near the end. But that is sort of cheating.

Steam:

The Doom 3 BFG Edition GPL Source Code release does not include functionality for integrating with Steam. This includes roaming profiles, achievements, leaderboards, matchmaking, the overlay, or any other Steam features.

Bink:

The Doom3BFGVR Edition GPL Source Code release includes functionality for rendering Bink Videos through FFmpeg.

Back End Rendering of Stencil Shadows:

The Doom 3 BFG Edition GPL Source Code release does not include functionality enabling rendering of stencil shadows via the "depth fail" method, a functionality commonly known as "Carmack's Reverse".

Mods:

The Doom 3 BFG Edition GPL Source Code release allows mod editing. In order for it to accept any change in your mod directory, you should first specify your mod directory adding the following command to the launcher:

The fs_game mod directory is used exclusively by DOOM3-BFG VR : Fully Possessed and should not be used by other mods. Additional mods can my use the fs_game_base directory

"+set fs_game_base modDirectoryName"

so it would end up looking like: Doom3BFGVR +set fs_game_base mymod

This will result in the game searching the Fully Possessed directory, followed by the modDirectoryName directory, and finally the BASE directory when loading assets.

Binary mods from Classic Doom 3 (non-BFG) mods are not supported.
It is possible however to utilize some of the assets from Classic Doom mods, however this is beyond the scope of this document.


3) INSTALLATION, GETTING THE GAMEDATA, RUNNING THE GAME


  1. Make sure you have Doom 3 BFG Edition installed in Steam. Doom 3 BFG Edition is also available from Good Old Games, but I haven't tested that version.

  2. Set the Doom 3 BFG language in Steam to your desired language.

  3. In the unlikely event that you don't have the Visual C++ 2013 redistributable installed, get it here: https://www.microsoft.com/en-au/download/details.aspx?id=40784

  4. Old version 0.015 of this mod installed assets directly into the BASE directory of the Doom 3 BFG installation. All assets are now installed into a separate mod folder named 'Fully Possessed' located in the Doom 3 BFG directory. An installer is now provided that will automatically remove files from old versions of this mod if present, and install the updated mod. The installer doesn't add any files to the base folder, but it will remove files installed by mods that have the same names as files used by this mod ( mostly weapons and player models ). This will NOT affect the base game, but could possibly break other mods installed.

    ( Note that at the time of this writing, the stock RBDOOM-3-BFGVR mod by Leyland does not install any assets, and this installation/removal process should not affect it. HOWEVER, if the hi-def expansion has been installed in addition to the RBDOOM-3_BFGVR Mod, the hi-def expansion will need to be reinstalled. )

    • If any other mods have been installed, or if you are unsure what deleting files may mean, it is STRONGLY recommended to make a backup copy of your Doom3 BFG installation before running the installer. *
  5. Installing the mod:

    Start the Doom3BFGVR_Fully_Possessed_Alpha022.exe installer.

    If Doom 3 BFG was not originally installed on your main Steam hard-drive, change the install path to reflect the Doom 3 BFG installation directory. If you have enough disk space, it is recommended to select to install both Base and Player AAS files. The AAS files may be omitted, but will negatively impact the ability to use teleportation. It is only recommended to skip the AAS file installation if you do not plan on using teleportation.

    When installation is complete, a shortcut will be created on your desktop and in your program list.

  6. If you want to use speech recognition to activate voice commands ( recommended ), it should be enabled in Windows and trained for optimal performance. Speech recognition settings are available in the Control Panel under 'Speech recognition.' At a minimum run 'Set up microphone', and for optimal performance 'Train your computer to better understand you'

  7. If you have an Oculus Rift: In the Oculus Home window, turn on: (cog), Settings, General, Unknown Sources

  8. Run the shortcut on your desktop, or run the Doom3BFGVR.exe file in your Doom 3 BFG folder to launch the game. (SteamVR will be automatically activated if needed)

    To play the game, you need the game data from a legal copy of the game, which requires Steam for Windows. Currently, Doom 3 BFG: Fully Possessed is only officially compatible with Windows, but see the Linux section.

  9. Enjoy

  10. If you run into bugs, please report them. ( see section 9 )


4) NEW FEATURES


New in 0.23: Spanish voice commands (to use, replace dict/voice.dict with dict/voiceSpanish.dict)

New in 0.21-Alpha-WMR (WMR Joystick support) (unofficial): Windows Mixed Reality Joystick support

New in 0.21a (unreleased): Doom VFR style teleport and jet-strafe Added headshot damage multiplier vr_headshotMultiplier (defaults to 2.5x) Improved arm and body inverse kinematics and leaning, body now automatically turns Screen blanking if eye moved into a solid. Additional cinematic modes (vr_cinematic : now three modes, immersive, cropped, and projected). Added enhanced support for camera cuts to improve cutscenes in VR. Added cvar adjustable choke to shotgun to tame pellet spread. Added instant player acceleration/decelaration when using artifical movement vr_instantAccel Improved FOV reduction border code for better stereo overlap. Holster slot states now persist thru level transitions and game saves/loads. Updated player models/anims with higher def hands, better hand poses on weapons, and initial controller based finger poses. ( vr_useHandPoses ) Added optional push to talk button for voice commands Fixed Hell tunnel teleport camera issue. Fixed issue with artifact/soul cube weapon axis. Teleporting now updates body orientation to direction of teleport. Enable teleportation in final boss fight of standard campaign. Fixed a few bugs with in-game GUIs.

Fix loading saved games from other versions and mods.
ATI / AMD graphics card support. ( Fix black menu screens ) 
Voice command for "fists" has changed to "weapon fists" to prevent false recognitions.
vr_voiceMinVolume console variable to prevent false recognitions.
Scaled ammo, weapons, and keycards to correct sizes.
Option to use floor height and other view heights.
World Scale option.
vr_chibi head scale console command.
More laser sight options.
Head tracking in the main menu.
Holster slots work better with the PDA and QuickSave.
Allow path names longer than 260 chars ( fixes some crashes on start/level load ).
Slightly improve voice commands.
Default keyboard / mouse controls.
Less debug prints for sound effects.
Improved player hand models.
Basic mirrow window resizing via mouse drag.
Initial optional oculus touch hand pose support ( Off by default - 
    optionally enabled  via vr_useHandPoses cvar. This is not fully implemented 
    yet. Currently limited to when hands are empty or when the player hand is
    in a gui.  Object manipulation is not implemented yet. )

New in 0.21: Talking waking monsters is fixed. Loading all saved games from 0.020 is fixed (not really). You can now load most saved games from RBDoom 3 BFG (with major issues). You can now load all saved games from version 0.015 (with major issues). Improved performance. There's a menu option for Asynchronous SpaceWarp. You can now chose to walk in the direction of either hand when walking. Language is now detected based on sound files not .lang files. Added QuakeCon style teleport option. http://www.gamespot.com/articles/doom-may-have-solved-vrs-traversal-problem/1100-6442439/ Added vr_hmdPerfHud console variable to debug framerate issues.

DOOM3-BFG VR : Fully Possessed offers many new features:

Native support for the HTC Vive via OpenVR when detected. Native support for the Oculus Rift and Touch via the Oculus SDK when detected.


5) CHANGES



6) CONTROLS


Default controls for the Oculus Touch, HTC Vive, and Gamepad :

Voice Controls:

You can use the built in microphone in the Rift or the Vive to activate voice commands
using Windows built in Speech Recognition.

If you want to use speech recognition to activate voice commands ( recommended ), it 
should be enabled in Windows and trained for optimal performance.  Speech recognition
settings are available in the Control Panel under 'Speech recognition.' At a minimum
run 'Set up microphone', and for optimal performance 'Train your computer to better
understand you' 

The phrases recognized by the voice commands are defined in the 
"Fully Possessed/dict/voice.dict" file.  
This file may be edited to change the phrases associated with each action.

Apart from the default English language, other languages (Spanish as of now) are available in Fully Possessed/dict/
just rename the corresponding voiceXXX.dict to voice.dict in order to use that language.

Available Voice Commands:

Talk:

    Speak to other people by walking up to them and speaking.
    You can say whatever you want. After you finish talking, they will respond.
    They will briefly look at you when you first start speaking.
    Speaking can wake up nearby monsters, so be careful!

  Say: Anything

Recenter view:

    This resets the view height to you current view position,
    and makes the player and the view face your current view direction.
    Useful for switching between sitting and standing mode of if the 
    player body becomes disoriented.

  Say:
        Reset View
        Recenter View
        Reset HMD Orientation
        Reset HMD View

Run:

  Say:  Start Running

Walk/Stop Running:

  Say:  Stop running
        Start walking

Reload:

  Say:  Reload

Flashlight:

  Say:  Flashlight
        Torch

PDA Select:

  Say:  PDA
        Personal Data Assistant

  Say:  Cancel

System/Pause Menu

  Say:  menu
        System
        System menu
        Computer, menu
        Computer, arch        

  Say:  Cancel
        Exit Game
        Return To Game

Weapon Selection:

  You can switch to a specific weapon by saying the name of that weapon.
  Available Weapons:

  Fists:

    Say:    Weapon fist
            Weapon fists
        Weapon hands
            Use fists
            Hands
        Punching

  Pistol:

    Say:    Pistol

  Chainsaw

    Say:    Chainsaw
            Beaver tooth
            Beaver tooth chainsaw
            Mixom beaver tooth
            Mixom beaver tooth chainsaw

  Shotgun:

    Say:    Shotgun
            Pump action shotgun
            Single barrel shotgun

  SuperShotgun:

    Say:    Super shotgun
            Double barrel shotgun
            Combat shotgun

  Machine Gun:

    Say:    Machine gun
            Enforcer
            M G 88
            M G 88 enforcer
            M G

  Chain Gun:

    Say:    Chain gun
            Mach 2 chain gun
            UAC weapons division mach 2 chain gun
            Saw
            Mini gun
            Gatling gun

  Grenade:

    Say:    Grenade
            Grenades

  Plasma Gun:

    Say:    Plasma gun 
            Plasma rifle

  Rocket Launcher:

    Say:    Rocket Launcher

  BFG:

    Say:    BFG
            BFG-9000
            Bio force gun
            Big fragging gun
            Big freaking gun
            Big fucking gun

  Soul Cube:

    Say:    Soul cube

  Artifact

    Say:    Artifact
            The artifact
            Heart of hell
            Blood stone

  Grabber:

    Say:    Grabber
            Ionized plasma levitator
            IPL unit
            Gravity gun

Holodeck Commands:

  Say:
            Computer, Freeze Program
            Computer, Resume Program
            Computer, Play Program
            Computer, Run Program
            Computer, Continue Program

            Pause Game
            Resume Game
            Unpause Game

        Computer, Arch        
            Computer, Menu

            Computer, End Program
            Computer, Exit
            Computer, Program Complete
            Computer, Cancel Program

Speech Recognition Control:

  Say:      What Can I Say

            Start Listening
            Consecution

            Stop Listening
            Consentient

7) FLICKSYNC


Flicksync is an experimental mode based on the book Ready Player One by Ernest Cline. In the book, players in a virtual environment participate in and act out the lines of their favorite movies, and their virtual performances scored. The Flicksync mode is still a work in progress, so bugs are to be expected.

How Flicksync is played:

In this just for fun mode, the aim is to act out the game's cutscenes by becoming
a character in the game. You must say all of that character's lines exactly at the
appropriate times. Points are earned by saying your lines correctly, clearly, and
at the right time.  

If you don't say the line in time, the other character will repeat the cue (with
subtitles), "Final Dialog Warning" will appear, and the game will pause indefinitely
waiting for you to say it.

If you can't remember the line, pull the trigger to use a Cue Card Power-Up (if you
have one).  The Cue Card will show you what you need to say (phonetically) in white
near the top.

If you don't have a Cue Card Power-Up, or the speech recognition can't recognize the
way you say it, you can press the PDA or menu button to give up that line and lose 
10 points. After you give up twice in a row, it will say "Final Warning". A third failure
is GAME OVER.

Pressing the PDA or menu button while it's not waiting for a line, will skip the 
cutscene like normal.

When you say the line correctly, you get 100 points. If you say the line clearly and at
roughly the right time, you get another 50 bonus points. If you get 7 lines right in a
row, you get another Cue Card Power-Up, up to a maximum of 5.

There are no action bonuses yet, and you automatically follow the character's path.

If the cutscene seems to finish, but it won't let you move, it's still waiting for you
to say the last line of the cutscene ( or to skip it ).

When you have finished all the cutscenes you chose, you win, and it will say "Flicksync
Complete". If you were playing in Cutscenes Only mode, then all the NPCs and monsters
will disappear and you will go back to being yourself instead of your character. You 
can then walk around the empty level and use the level's exit to return to the main 
menu, or use the pause menu to exit.

Starting a Flicksync game:

To start a Flicksync game, choose Campaign from the main menu, then select Flicksync.

Choose which character you will be.

Choose how many Cue Cards you start with.

Choose whether to play just the Flicksync cutscene parts, or play the normal Doom 3 game
with Flicksync mode for the cutscenes, or a non-Flicksync game with no cutscenes.
The "no cutscenes" mode carries over into regular games, so don't leave it set to no 
cutscenes if you want cutscenes.

Choose which scenes you want to play.

  You can play:

      All the cutscenes
          Just the cutscenes for your character's expansion
          All the scenes starting from your character's first scene,
          All the scenes related to your character's story arc
          Just the scenes with your character in them.

  There's currently a bug where you must watch the first cutscene of a map if that
  cutscene starts automatically on map startup, and you have a scene in a later
  cutscene of that map.

Then choose the highest level you have reached in the game if you want to avoid spoilers.

Choose Play.

You will start from a different point depending on which character or scenes you choose.

You can also watch the cutscenes from the POV of the player character(s) by choosing Player,
or you can just watch all the cutscenes by setting Character to None and Game Mode to
Cutscenes Only.

Flicksync settings carry over if you start a map from the DEV menu, so you may want to change them back to normal first.

Starting a new game from the Campaign / New game menu will clear the flicksync settings, except for the "no cutscenes" option. You will see SCORE: 0 on the menus if you are in Flicksync mode.


8) VR Options


VR Related game changes can be made from the Settings->VR Options menu.

Menu: Character Options:

  Body Mode:  

    Full Body + Arms:

        The full player body will be displayed in game, with 
        ( very ) basic IK for the arms.  While playing,
        if the arms seem misaligned with the body, move in any direction
        to align the body direction with the movement direction.  Alternatively,
        you can press or say the button/command to reset the view. ( Left Y on Touch,
        or say Reset View)

    Hands + Weaps:

        If you do not wish to see the player body ( perhaps the basic arm IK
        is too basic :) ), select this option to display your hands and weapons only.

    Weapons Only:

        Selection this option will display only the weapons in game, no player body
        or hands.  ( Hands will be displayed if there is currently no weapon selected,
    if the fists are selected, or if interacting with a GUI.)

    Note that Body Mode also affects Flicksync. But in Flicksync you will be fully 
    invisible if you chose Hands + Weaps or Weapons Only.

  Flashlight Mount:

        Select where the flashlight will be mounted during the game.

        Options: 

          Hand -    Hold the flashlight in the non weapon hand.
                    Flashlight can be aimed with motion controls.

              Body -    The flashlight will be mounted to the body,
                    and shine in the direction the body is facing.

              Head -    The flashlight will be mounted to the head
                    and shine where you are looking.

              Weapon-   The flashlight will be mounted to the muzzle of
                    your weapon.  In the event the weapon has no muzzle
                    ( grenade, chainsaw, soul cube, etc ) the flashlight
                    will temporarily move to your head.

        You can change this in-game by manually grabbing your flashlight and 
    placing it where you want it (except for on the weapon), if Holster 
    Slots are enabled.

  Weapon Hand

        Select the handedness of the game.

        Options:

          Right -   The weapon will default to the right hand,
                    flashlight / PDA will be in the left.

              Left -    The weapon will default to the left hand,
                    the flashlight / PDA will be in the right.

        You can change this in-game by manually grabbing the holster on the 
    opposite side, if Holster Slots are enabled.

  Holster Slots

        Enable or Disable the ability to use the holster slots located on your body.

        Options:

        Enable

                Disable

  Use Height

        Custom Eye Height:  The player's view height (specified above) will be the
                same height as your real eyes. This might make you feel
                like you're floating above the floor.

        Marine eye height:  Your eyes will be at the Doom marine's eye height.
                            This is 5 inches higher than the view height in the 
                original Doom 3.

        Normal view height: Your eyes will be at the original height specified by
                the game.

        Crouch to your height:  The virtual floor will always be at the same height as
                the real floor. The Doom marine crouches if you're shorter
                than he is.

        Scale to your height:   The virtual floor will always be at the same height as the
                real floor.  The whole world is scaled to make the Doom 
                marine your height.

  Custom Eye Height

        Change the height of the player view, measured in real world units.
        Use this option if you are taller or shorter than the default view.
        This setting is now saved between maps and sessions.
        It has no effect in "Scale to your height" mode.

  World Scale Adjust:   

    Multiply the size of the world by this. ( This works now. )   

Menu: Comfort Options

  This menu allows the player select options intended to combat motion sickness,
  either due to locomotion or game effects. There are also options to help prevent
  damage to your controllers when using motion controls by activating the Guardian
  or Chaperone grids as needed.

  Teleport:

        Change teleport aiming

        Options:

          Right Hand -  The teleport aiming beam will originate from the 
                            right hand, or device in the right hand.

              Left Hand -   The teleport aiming beam will originate from the 
                            left hand, or device in the left hand.

              Head -            Use you view to aim the teleport beam.

              Disabled -    Disable teleport and teleport aiming.

              Gun Sight -   Do not use the parabolic teleport aiming beam,
                    instead use the weapon sight.  The laser reticle
                will change to indicate if you are able to teleport
                to a location. You must set the weapon sight to dot
                mode to use this option. This option may also hurt
                frame rate, as the teleport destination is always
                being scanned.

        If you swap hands using the weapons slots, the teleport aiming will swap as well.

  Teleport Mode:

      Choose whether to teleport instantly, or slow time and warp along the path.

      Options:

          Blink -       Aiming is like normal, teleporting is instant and 
                    covered by a blink.

              QuakeCon -    Time is slowed while aiming. Teleport by moving at 
                    warp speed to the destination. This style was used
                in a Doom (2016) VR demo at QuakeCon.

                http://www.gamespot.com/articles/
                doom-may-have-solved-vrs-traversal-problem/1100-6442439/

  Turning:

        Change the turning mode. Changing the turning menu option will remap your control 
        bindings for whatever controls you assigned to turning to support the selected mode.
        If you want to use a combination of Analog and Comfort turning, you can adjust the
        control bindings yourself in Settings->Controls->Key Bindings.

        This setting only affects motion controllers. Set Key Bindings for keyboard or 
    gamepad.

        Options:

          Snap ( 10 - 180 ) Comfort turning will be used. Each turn will move the
                    view/reset the selected number of degrees.

              Real Life -   No artificial turning will be used, the player will 
                    need to turn in real life to turn in the game. 

              Analog -      The analog stick can be used to turn the player smoothly.
                            This option is causes the most motion sickness. It is not
                recommended for the regular user, and should only be
                used by people who never experience VR sickness.

  Walk Speed Adjust:

        Adjust the movement speed of the player.

        This value can be changed to increase or decrease the maximum walk speed
        of the player from the normal value of 140. Negative values slow movement,
        positive values will increase it. This value persists throughout the game.
        There's an alternative to "Walk Speed Adjust" in the next option, which slows
        time instead. If you opt to use that, you can set Walk Speed Adjust here to 0.

  Motion Sickness Aid:

        If you experience any form of VR sickness, this is one of the most important
    options to experiment with. It applies an effect whenever you're moving 
    artificially, whether using the joystick, jumping, crouching, or because you
    were pushed by something in the game, or you fell off a ledge, or you tried
    to walk in real life through a solid virtual object. Some effects can work in
    combination with other effects.

        There are a variety of options to ( hopefully ) assist in preventing motion
    sickness during player movement. The best way to avoid motion sickness is to
    play standing up, walking, turning, and crouching in real life, while using 
    teleportation and third person mode for all artificial movement. You can play
    this way even if using a gamepad.

        The most common cause of motion sickness is using the analog stick to turn the
    view, so this should be avoided whenever possible if you are susceptible to VR
    sickness. There are some places where you have to use artificial movement though,
    such as climbing ladders, jumping across gaps, and some glitchy areas not 
    accessible via teleport, so hopefully these menu options can help.

        Options:    
         Third Person - When artificial motion is used, the player view will 
                    remain stationary, and the player character will be 
                controlled in the third person via analog controls.
                When the character stops moving, the player view will
                fade to the new character location. This is a very 
                effective way to combat motion sickness.  There is
                currently one drawback: Moving backwards is not well
                implemented (yet).  If you move backwards, you will 
                not be able to see the character you are controlling
                unless you turn around, so it is recommended to only
                move backwards in short hops.

              None -        If you are fortunate enough to never experience motion
                    sickness, you can select this option to disable all
                motion sickness aids. Be warned, this is only for those
                who truly have 'VR legs'.

              Chaperone -   Turns on the Chaperone ( or Guardian ) grid whenever you
                    are Moving artificially. Any grid that's solidly locked
                to the real world is supposed to help with motion 
                sickness. The other methods may be more effective or less
                intrusive. Chaperone can be combined with other effects
                ( including "Black Screen" if you don't like the empty 
                void).

              Reduce Fov -  Reduce FOV, or "Tunnel vision" will block out your 
                    peripheral vision when moving, which for some people
                is where most motion sickness comes from. It can be
                combined with other effects such as Chaperone.

              Black Screen -    The only 100% effect mode, it completely blacks out 
                    your view while moving artificially, so there's no
                vection and no motion sickness. It will strobe a brief
                frame a couple of times per second. ( The strobe time
                can be adjusted with the console variable vr_strobeTime
                            which is in ms). Obviously blacking out the screen makes
                it harder to navigate and see what you're doing, but if
                you are not using artificial navigation much ( only when
                you cant teleport ) it can be useful.

              Black + Chaperone-

                Combine the Black Screen and Chaperone aids.

              FOV + Chaperone-  Combine FOV Reduction and Chaperone aids.

              Slo Mo-       Slows time while you are moving, to make it feel like 
                    you are moving slower, but without harming your ability
                to dodge and escape from monsters. The faster you move,
                the more time is slowed. The downside of this mode is 
                that all the sound and voices are slowed down. This 
                effect can be combined with Chaperone and/or Reduce FOV.

              SloMo + Chaperone-

                Combine Slo-Mo with Chaperone.

              Slo Mo + FOV- Combine Slo-Mo with FOV Reduction.

              Slo+FOV+Chaperone-

                Combine Slo-Mo, FOV Reduction, and Chaperone effects.

  [Chaperone:]

      This setting has moved to the VR Options > Rendering Options menu.

  Knockback and Head Kick:

      Knockback and Headkick are Doom 3's effects that push your view. Knockback is when 
      your entire player body is moved due to impact. Head Kick is when your view 'Kicks'
      due to an impulse such as firing a weapon or being struck. They don't work well in 
      VR, and can contribute to motion sickness, so they are disabled by default. They 
      can be enabled if desired.

        Options:

          Knockback Only-   The player body will be knocked back due to impacts.

              Headkick Only-    The player view can kick due to impulses.

              Enabled-      Both Knockback and Headkick will be enabled.

              Disabled-     either Knockback or Headkick are enabled.

  Step Smooth and Jump Bounce:

      Affect the player view when going up and down steps, or after landing from a
      jump or fall.

        Options:

              Step Smooth Only-

                Step Smooth makes climbing stairs smooth instead of jarring.
            Smooth motion increases motion sickness, but in this case can 
                        be jarring without it. Enabled by default, but can be turned 
                        off if you prefer. This option enables smooth steps and 
                        disables jump bouncing.

              Jump Bounce Only-

                Jump Bounce is when your view bounces when landing after jumping.
                        It can be uncomfortable, so it's disabled by default, but this
            option enables the jump bounce but not smooth stepping.

              Enabled-

            Steps will be smooth and the view will bounce when landing.

              Disabled- 

            Steps will be instant, and the view will not bounce when landing.

  Shake Amplitude:

      Doom 3 has screen shaking effects in some areas of the game. You can adjust
      the amplitude of these effects. Moving the slider all the way to the left
      disables the effect completely, and moving the slider to the right will 
      increase the effect until it reaches full power.

      This effect can be very uncomfortable, so it is disabled by default.

Menu: Control Options:

  Options for how the player controls the game.

  Controller Type:

      Select the default controller type.

        Options:

            Motion Controllers-

                Motion controls will be used if present

            Standard Controller-

                A gamepad (or keyboard and mouse) will be the default
                    control device.

      It's recommended to leave it set on Motion Controllers, because in that mode it
      will switch to gamepad automatically when you start using it, and switch back if
      you use motion.

  Move Mode:

      Select the default movement mode:

        Options:

            Standard Stick Move-

                The joysticks or pads will control the character
                        like a standard gamepad.  Pressing forward will move
                        the player forward in relation to the body.

            Off Hand = Forward-

                Forward motion is relative to the direction the off hand
                        controller is pointing. ( 'Onward' style movement. )

            Look = Forward-

                Forward motion is relative to the direction the player is 
                        looking.

  Crouch Mode:

      Select the default crouch mode.  Note that at any time crouching may be
      accomplished by using the button assigned to crouch.

        Options:

            Full Motion Crouching-

                The player can crouch in real life to crawl through
            ducts or narrow passages.

            Crouch Trigger-

                If the player in real life crouches a distance greater than
                        the number of inches defined by 'Crouch Trigger', it will act
                        as if the crouch button has been pressed.

  Crouch Trigger Dist:

            The number of inches they player must crouch in real life
            in order to trigger a full crouch when using 'Crouch Trigger'
            mode.

  Weapon Pitch:     You can change this value to adjust the default pitch of the 
                    weapon to suit your preference.

  Flashlight Pitch: You can change this value to adjust the default pitch of the 
                    flashlight to suit your preference.

  Talk Mode:

      Select how the player interacts with NPCs.

        Options:

            Voice Only -    The player must speak in real life to talk to NPCs.
                            The focus cursor will be displayed.

            Voice, No Cursor-   The player must speak in real life to talk to NPCs.
                            The focus cursor will not be displayed.

            Buttons Only-   The player must use buttons ( attack ) to talk to NPCs.

            Buttons or Voice-   The player may speak in real life or use buttons to 
                            speak with NPCs.

  Voice Commands:

      Select how Speech Recognition will be used to implement commands.

        Options:

            Menus and Weapons-  Speaking will allow the player to enter and exit
                    menus, as well as select menus.

            Disabled-       Voice Commands will not be utilized.

            Menus Only-     Voice Commands will only activate menus, weapons will 
                            need to be selected manually.

Menu: UI Options:

  Select user interface options.

  HUD Options Menu:

    Modify how the HUD is displayed.

    Location:           

      Where the HUD will be positioned.

        Options:

            Lock to Body-   The hud position is relative to the player body.

            Lock to View-   The hud position is relative to the player view.

    Hud Mode:

      When the hud is displayed.

        Options:

            Pitch Activate- The HUD will remain invisible until the player
                    tilts their head ( looks down ) beyond the angle
                defined by Reveal Angle.

            Disabled-       The HUD will not be displayed.  

            Full On-        The HUD will always be displayed.

    Reveal Angle:

        If the HUD is in Pitch Activate mode, tilting your head beyond this angle 
        will cause the hud to be displayed.

    Low Health Reveal:

        If the HUD is in Pitch Activate mode, it will be switched on regardless of
    tilt if player health drops below the value defined here. ( 0 = Disabled ) 

    Menu: Adjust Hud Position:

        Options for changing the location and size of the HUD.
        Values are in inches

        HUD Position Dist:  How far in front of the view or body the HUD is
                displayed.

        HUD Position Vert:  How far up or down from default in relation to
                the view or body the HUD will be displayed.

        HUD Position Horiz: How far to the left or right from default in 
                relation to the view or body the HUD will be
                displayed.

        HUD Pitch:      The pitch of the HUD screen.

        HUD Scale:      Size of the Hud

        Talk Cursor Adj:    Adjust the position of the Talk Cursor ( The 
                cursor that identified the names of NPCs )
                as a % of HUD vertical size.

  PDA Options Menu:

    Modify the PDA position.

    PDA Location:

      Where the PDA will be displayed

        Options:

          Hold in Hand-     When active, the PDA will be held in the non weapon
                hand, and can be moved via motion controls.

          Fix in Space-     When Active, the PDA will be fixed in space in front
                of the player and will not move.

          PDA Position Dist:    How far in front of the view or body the PDA will be
                displayed if Fix In Space is selected.

          PDA Position Vert:    How far up or down from default in relation to the
                view or body the PDA will be displayed if Fix In Space
                is selected.

          PDA Position Horiz:   How far to the left or right from default in relation
                to the view or body the PDA will be displayed if
                Fix In Space is selected.

          PDA Pitch:        The pitch of the PDA screen if Fix In Space is selected.

  Heading Beam:

    The heading beam is an optional directional indicator that may aid the player
    when controlling the character.

      Options:

          Disabled-     The heading beam will not be displayed.

          Solid-        A solid heading beam will be displayed.

          Arrows-       A heading beam with arrows will be displayed.

          Scrolling Arrows- A heading beam will scrolling arrows will be displayed.

  Weapon Sight:

    Various weapon sights are available.

      Options:
          Disabled-     No laser sight.

          Laser Beam-       A laser beam will emit from the weapon to aim with.

          Red Dot-      A red laser dot will be projected into the world
                to aim with.

          Circle Dot-       A reticle with a red circle with a dot in the center
                will be projected into the world to aim with.

          Crosshair-        A red crosshair will be projected into the world to
                aim with.

          Laser + Dot-      Both the dot and the laser beam.

          Laser + Circle-   Both the circle dot and the laser beam.

          Crosshair + Circle-   Both the crosshair and the laser beam.

  Sight to Surface:

    If using one of the reticles instead of the Laser Sight, enabling this will align
    the reticle to the surface it hits.

  Laser Sight Source:

    Choose whether the laser sight comes out of the barrel, or an emitter elsewhere
    on the weapon. Just like with a real laser sight, you will have to manually compensate
    your aim based on the location of the emitter.

      Options:

        Laser Emitter-  The laser sight comes from a different part of the gun,
                but is parallel to where the bullets will go. You must
                take note of where the baarrel is actually aiming
                relative to the laser for perfect shots.

            Barrel-     The laser comes out of the gun's barrel and shows exactly
                        where the bullets will go. This makes aiming easier, but
                        is less realistic.

  Haptic Feedback:

    Enable or disable haptic feedback on the game controller.

  GUI mode:

    Select how in game GUIS will be interacted with.

      Options:

          Touch Activated-  When the player gets close to a GUI and looks at it,
                            the weapon will lower and the weapon hand will change
                            to a pointer finger.  The GUI can be used as a virtual 
                        touchscreen.

          Aim Activated-    When the player approaches a GUI and aims the weapon at
                it, the weapon will lower, but aiming the weapon will
                control the cursor on the GUI screen.  Fire will click
                the screen.  If the current weapon doesn't have a muzzle
                ( grenade, fists, chainsaw, soul cube, artifact), the
                player gaze will control the cursor.

          Look Activated-   When the player approaches a GUI and looks at it, the
                weapon will lower and the player look direction will
                be used to control the cursor.

Menu: Rendering Options:

  Options that affect VR graphics.

  Pixel Density -   A multiplier used to increase the resolution of the rendered
            image. Increasing this setting will dramatically impact
            performance. Note that this setting will be used ON TOP OF any
            setting in your HMD drivers.  If you are using some form of
            supersampling by default in your HMD software, you may want
            to set this to 1.

  MSAA Level-       Disable MSAA, or set the desired level of sampling.

  Chaperone:

      This setting has moved here from the VR Options > Comfort + Safety Protocols.

      This setting is more about safety than motion sickness. It lets you turn the
      Chaperone or Guardian grid on all the time, or only when you're throwing
      grenades, or when you're swinging around virtual Melee weapons. The grid
      can't be disabled completely, but it can be set to "Near" for normal chaperone
      behaviour. I broke my TV throwing things in Budget Cuts, so I recommend forcing
      the chaperone on when throwing, at least. The options from most reckless to
      safest are: "Near", "Throw", "Melee", or "Always". The default is "Melee",
      which means the grid will be on whenever you're using grenades, the grabber,
      the chainsaw, or fists.

        Options:

        Melee-      The Chaperone or Guardian grid will be on when using
                melee weapons. ( Grenades, grabber, chainsaw, or fists.)

                Always-     The Chaperone or Guardian grid will always be on.

                Near-       Normal Chaperone or Guardian behavior, the grid will
                            appear when you or your controllers are too close to
                            the virtual boundary.

                Throwing-   On when throwing grenades.

  Asynchronous SpaceWarp:

    Oculus only! Adjust how the game handles low framerates.

        Options:

          Default-      Don't mess with the Oculus default.

          Disabled-     use Asynchronous TimeWarp (works at any FPS)
                    instead of Asynchronous SpaceWarp (recommended).

          Enabled-      use Asynchronous SpaceWarp at 45 FPS whenever
                    FPS drops below 90 FPS.

          45 FPS ATW-   Always use Asynchronous TimeWarp, locked to 45 FPS

          45 FPS ASW-   Always use Asynchronous SpaceWarp, locked to 45 FPS

  3D Guis-  The in game GUIS can look flat - enabling this setting adds some
            depth.  May be disabled if effect is disagreeable.

Menu: VR Profile Options:

  Active Profile:

    This works now. Select profile.

      Options:

          Official Profile- Use the IPD and height provided by the HMD runtime.

          Manual Profile-   Use the IPD and Height defined in the Manual Profile
                entries.

  Oculus Profile IPD:   The IPD reported by the HMD runtime. 

  Manual Profile IPD:   This IPD will be used if Active Profile is set to Manual.

9) CONSOLE VARIABLES AND COMMANDS


Access the console with the ~` key, or you can add these to your config file in: %UserProfile%\Saved Games\id Software\DOOM 3 BFG\Fully Possessed\vr_oculus.cfg (or vr_openvr.cfg)

Commands:

restartMap -    Restart the map, preserving your inventory. Use this if you get stuck,
        or you load a game from another mod and you were near the start, to get
        rid of the glitches. Or use this if the glitches make it impossible to
                continue.

endLevel-   Win this map and continue to the next level, with all your inventory
        and the level's important items. Use this if you get stuck near the
        end of a map, due to glitches. I consider this to be sort of cheating.

noclip-     Toggle no-clipping mode, in case you accidentally teleport somewhere
        you can't get out of

listDevices-    lists all detected audio playback devices.
        ( use cvar s_device to select and audio device from this list )

showDeviceInfo- display detailed information about current audio playback device.

r_listVoiceCommands- list all phrases defined for speech recognition

Below are some console variables used by the game. Many of these can be adjusted via the in game menus.

vr_chibi 1 FLOAT- changes the size of human heads (sometimes good to change if you changing the world scale made heads look weird).

vr_scale 1 FLOAT - scale of the virtual world. 1 = scale of previous version and original Doom 3. 0.93 = slightly smaller and more comfortable size (like in Leyland's mod).

vr_useFloorHeight 0 BOOL - keep the virtual floor level with the real floor.

vr_normalViewHeight 73 FLOAT - The player view height in real world inches.

vr_laserSightUseOffset 1 BOOL - Emit laser sight from the gun's laser sight emitter instead of the gun's barrel.

com_fixedTic 0 BOOL - run a single game frame per render frame. Fixes frame dropping in VR.

vr_asw 0 INTEGER - Oculus Asynchronous SpaceWarp. 0 = force off (hack), 1 = enabled, 2 = 45 FPS ATW, 3 = 45 FPS ASW

com_showFPS 0,1,2 : Show frames rendered per second. 0: off 1: default bfg values, 2: only show FPS (classic view)

vr_comfortRepeat 100 INTEGER - Delay in MS between repeating comfort snap turns.

vr_joyCurves 0 INTEGER - Joy powercurves. 0 = Doom default 1 = Mixed curve with vr_joyCurveSensitivity and vr_joyCurveLin

vr_joyCurveSensitivity 9 FLOAT - Sensitivity val 0 - 9

vr_joyCurveLin 4 FLOAT - Linear point for joyCurves sens < lin = power curve , sens = lin = linear , sens > lin = frac power curve.

vr_grabberBeamWidth 4 INTEGER - Beam width for grabber in VR. Default 4.

vr_guiFocusPitchAdj 7 FLOAT - View pitch adjust to help activate in game touch screens

vr_slotDebug 0 BOOL - slot debug visualation

vr_slotMag 0.1 FLOAT - slot vibration magnitude (0 is off)

vr_slotDur 18 INTEGER - slot vibration duration in milliseconds

vr_slotDisable 0 BOOL - disable using slots.

vr_blink 1 FLOAT - Darkens the screen when head bumps walls and objects.

vr_throwPower 4.0 FLOAT - Throw power when motion throwing objects. Higher power will throw farther with same motion. vr_guiH unused vr_guiA unused vr_rumbleDiv 1 FLOAT - rumble divisor - no need to adjust vr_rumbleSkip 1 FLOAT - frames to skip - no need to adjust

vr_rumbleEnable 1 BOOL - Enable VR controller rumble

vr_openVrStuckPadAxisFix 1 BOOL - Check for openVR controller stuck pad axis.

vr_openVrStuckPadAxisFixThresh 12 INTEGER - # of identical non zero input polls before axis flagged as stuck.

vr_mouseCapture 0 INTEGER - Constrain the mouse to the game window while running if true.

vr_debugTouchCursor 0 BOOL - Show the cursor position when using touch screen mode.

vr_pixelDensity 1.25 FLOAT - VR supersampling level. If the Oculus Runtime or OpenVR have been configured to provide supersampling, set this to 1!

vr_vignette 1 INTEGER - unused

vr_enable 1 INTEGER - Enable VR mode. 0 = Disabled 1 = Enabled.

vr_FBOscale 1.0 FLOAT - unused

vr_useOculusProfile 1 INTEGER - Use official Profile values. 0 = use user defined profile, 1 = use official profile.

vr_manualIPDEnable 0 INTEGER - Override the HMD provided IPD value with value in vr_manualIPD 0 = disable 1= use manual iPD vr_manualIPD 64 FLOAT - User defined IPD value in MM

vr_manualHeight 70 FLOAT - User defined player height in inches

vr_minLoadScreenTime 6000 FLOAT - Min time to display load screens in ms. 0.0f, 10000.0f

vr_clipPositional 1 BOOL - Clip positional tracking movement . 1 = Clip 0 = No clipping.

vr_armIKenable 1 BOOL - Enable IK on arms when using motion controls and player body is visible. 1 = Enabled 0 = disabled

vr_weaponHand 0 INTEGER - Which hand holds weapon. 0 = Right hand 1 = Left Hand 0, 1

vr_flashlightMode 3 INTEGER - Flashlight mount. 0 = Body 1 = Head 2 = Gun 3= Hand ( if motion controls available.)

vr_flashlightBodyPosX 0 FLOAT - Flashlight vertical offset for body mount.

vr_flashlightBodyPosY 0 FLOAT - Flashlight horizontal offset for body mount.

vr_flashlightBodyPosZ 0 FLOAT - Flashlight forward offset for body mount.

vr_flashlightHelmetPosX 6 FLOAT - Flashlight vertical offset for helmet mount.

vr_flashlightHelmetPosY -6 FLOAT - Flashlight horizontal offset for helmet mount.

vr_flashlightHelmetPosZ -20 FLOAT - Flashlight forward offset for helmet mount.

vr_offHandPosX 0 FLOAT - X position for off hand when not using motion controls. vr_offHandPosY 0 FLOAT - Y position for off hand when not using motion controls. vr_offHandPosZ 0 FLOAT - Z position for off hand when not using motion controls.

vr_forward_keyhole 11.25 unuser

vr_PDAfixLocation 0 BOOL - Fix PDA position in front of player instead of holding in hand.

vr_weaponPivotOffsetForward 3 FLOAT - weaponPivotOffset CVars define the position of the weapon hand when using a gamepad vr_weaponPivotOffsetHorizontal 0 FLOAT - vr_weaponPivotOffsetVertical 0 FLOAT - vr_weaponPivotForearmLength 16 FLOAT -

vr_guiScale 1 FLOAT - ( dont change ) scale reduction factor for full screen menu/pda scale in VR 0.0001f, 1.0f

vr_guiSeparation .01 FLOAT -( dont change ) Screen separation value for fullscreen guis.

vr_guiMode 2 INTEGER - Gui interaction mode. 0 = Weapon aim as cursor 1 = Look direction as cursor 2 = Touch screen

vr_hudScale 1.0 FLOAT - Hud scale 0.1f, 2.0f

vr_hudPosHor 0 FLOAT - Hud Horizontal offset in inches

vr_hudPosVer 7 FLOAT - Hud Vertical offset in inches

vr_hudPosDis 32 FLOAT - Hud Distance from view in inches

vr_hudPosAngle 30 FLOAT - Hud View Angle

vr_hudPosLock 1 INTEGER - Lock Hud to: 0 = Face, 1 = Body

// The following cvars allow individual hud elements to be enabled or disabled.

vr_hudType 2 INTEGER - VR Hud Type. 0 = Disable. 1 = Full 2 = Look Activate 0, 2

vr_hudRevealAngle 48 FLOAT - HMD pitch to reveal HUD in look activate mode.

vr_hudTransparency 1 FLOATHud transparency. 0.0 = Invisible thru 1.0 = full 0.0, 100.0

vr_hudOcclusion 1 BOOLHud occlusion. 0 = Objects occlude HUD, 1 = No occlusion

vr_hudHealth 1 BOOL - Show Armor/Health in Hud.

vr_hudAmmo 1 BOOL - Show Ammo in Hud.

vr_hudPickUps 1 BOOL - Show item pick ups in Hud.

vr_hudTips 1 BOOL - Show tips Hud.

vr_hudLocation 1 BOOL - Show player location in Hud.

vr_hudObjective 1 BOOL - Show objectives in Hud.

vr_hudStamina 1 BOOL - Show stamina in Hud.

vr_hudPills 1 BOOL - Show weapon pills in Hud.

vr_hudComs 1 BOOL - Show communications in Hud.

vr_hudWeap 1 BOOL - Show weapon pickup/change icons in Hud.

vr_hudNewItems 1 BOOL - Show new items acquired in Hud.

vr_hudFlashlight 1 BOOL - Show flashlight in Hud.

vr_hudLowHealth 20 INTEGER = Disable, otherwise force hud if heath below this value.

vr_voiceRepeat 0 BOOL - 1 = computer speaks back whatever commands or lines you say

vr_voiceCommands 2 INTEGER - Enable voice commands. 0 = none, 1 = menus, 2 = menus and weapons

vr_voicePushToTalk 0 BOOL - Push to Talk' button must be pressed before voice commands recognized 0 = disabled, 1 = enabled

vr_talkWakeMonsters 1 INTEGER - Talking wakes monsters. 0 = no, 1 = both methods, 2 = like flashlight, 3 = like weapon. This was broken before but is now fixed.

vr_talkWakeMonstersRadius - radius in inches within which talking quietly will wake enemies. Talking louder wakes monsters further than this.

vr_talkMode 2 INTEGER - Talk to NPC 0 = buttons, 1 = buttons or voice, 2 = voice only, 3 = voice no cursor

vr_tweakTalkCursor 25 FLOAT - Tweak talk cursor y pos in VR. % val 0 to 99 ( talk cursor is NPC name display )

vr_flicksyncCharacter 0 INTEGER - Flicksync character. 0 = none, 1 = Betruger, 2 = Swan, 3 = Campbell, 4 = DarkStar, 5 = Tower, 6 = Reception, 7 = Kelly, 8 = Brooks, 9 = Mark Ryan, 10 = Ishii, 11 = Roland, 12 = McNeil, 13 = Marine w PDA, 14 = Marine w Torch, 15 = Point, 16 = Bravo Lead, 17 = Player

vr_flicksyncCueCards 0 INTEGER - How many Cue Card Power-Ups to start with. Default = 0, max = 5

vr_cutscenesOnly 0 INTEGER - Skip action and only show cutscenes. 0 = normal game, 1 = cutscenes only, 2 = action only

vr_flicksyncScenes 1, INTEGER - 0 = all scenes, 1 = my chapter, 2 = from my start, 3 = my storyline, 4 = my scenes only

vr_flicksyncSpoiler 0 INTEGER - Don't show any cutscene past this point. 0 = allow spoilers, cutscene number = limit

g_stopTime 0 BOOL - Freeze time. This is used by the Flicksync to pause cutscenes. If there's a bug and everything is frozen try setting it to 0.

vr_wristStatMon 1 INTEGER - Use wrist status monitor. 0 = Disable 1 = Right Wrist 2 = Left Wrist

vr_listMonitorName 0 BOOL - List monitor name with resolution. ( no longer as useful with direct mode)

vr_disableWeaponAnimation 1 BOOL - Disable weapon idle animations in VR. ( 1 = disabled )

vr_headKick 0 BOOL - Damage can 'kick' the players view. 0 = Disabled in VR.

vr_joystickMenuMapping 1 BOOL - Use alternate joy mapping in menus/PDA. 0 = D3 Standard 1 = VR Mode. (Both joys can nav menus, joy r/l to change select area in PDA.

vr_deadzonePitch 90 FLOAT - Vertical Aim Deadzone 0, 180 ( deadzone used with gamepad mode to define how far you can aim before view moves.)

vr_deadzoneYaw 30 FLOAT - Horizontal Aim Deadzone 0, 180

vr_comfortDelta 10 FLOAT - Comfort Mode turning angle 0, 180

vr_headingBeamMode 3 INTEGER - 0 = disabled, 1 = solid, 2 = arrows, 3 = scrolling arrows

vr_weaponSight 0 INTEGER - Weapon Sight. 0 = Lasersight 1 = Red dot 2 = Circle dot 3 = Crosshair

vr_weaponSightToSurface 1 INTEGER - Map sight to surface. 0 = Disabled 1 = Enabled

vr_motionWeaponPitchAdj 40 FLOAT - Weapon controller pitch adjust ( use to change the default pitch of the weapon to your liking )

vr_motionFlashPitchAdj 40 FLOAT - Flashlight controller pitch adjust ( use to change the default pitch of the flashlight to your liking )

vr_nodalX -3 FLOAT - Forward offset from eyes to neck ( In the real world, if you stand still and tilt your head, you don't want the character body to move. Nodal X and Y are used to define the base of the neck based on head orientation. If you stand still in the game, and tilting your head moves the player you can adjust these so this won't happen.)

vr_nodalZ -6 FLOAT - Vertical offset from neck to eye height

// vr_vcx,y,and z define the distance from the tracked point on the controller to the center of the controller handle.
will be different for Oculus or Vive.

vr_vcx -3.5 FLOAT - Controller X offset to handle center // these values work for steam vr_vcy 0 FLOAT - Controller Y offset to handle center vr_vcz -.5 FLOAT - Controller Z offset to handle center

vr_mountx 0 FLOAT - If motion controller mounted on object, X offset from controller to object handle. (Eg controller mounted on Topshot)

vr_mounty 0 FLOAT - If motion controller mounted on object, Y offset from controller to object handle. (Eg controller mounted on Topshot)

vr_mountz 0 FLOAT - If motion controller mounted on object, Z offset from controller to object handle. (Eg controller mounted on Topshot)

vr_mountedWeaponController 0 BOOL - If physical controller mounted on object (eg topshot), enable this to apply mounting offsets 0=disabled 1 = enabled

vr_3dgui 1 BOOL - 3d effects for in game guis. 0 = disabled 1 = enabled

vr_shakeAmplitude 1.0 FLOAT - Screen shake amplitude 0.0 = disabled to 1.0 = full 0.0f, 1.0f

vr_controllerStandard 0 INTEGER - If 1, use gamepad, not motion controllers Restart after changing

vr_padDeadzone .25 FLOAT - Deadzone for steam pads. 0.0 = no deadzone 1.0 = dead

vr_padToButtonThreshold .7 FLOAT - Threshold value for pad contact to register as button press .1 high sensitiveity thru .99 low sensitivity

vr_knockBack 0 BOOL - Enable damage knockback in VR. 0 = Disabled, 1 = Enabled

vr_jumpBounce 0 FLOAT - Enable view bounce after jumping. 0 = Disabled, 1 = Full 0.0f, 1.0f // Carl

vr_stepSmooth 1 FLOAT - Enable smoothing when climbing stairs. 0 = Disabled, 1 = Full 0.0f, 1.0f // Carl

vr_walkSpeedAdjust -20 FLOAT - Player walk speed adjustment in VR. (slow down default movement)

vr_wipPeriodMin 10.0 FLOAT - unused vr_wipPeriodMax 2000.0 FLOAT - unused vr_wipVelocityMin .05 FLOAT - unused vr_wipVelocityMax 2.0 FLOAT - unused vr_headbbox 10.0 FLOAT - unused

vr_pdaPosX 20 FLOAT - When using the PDA in fixed mode, instead of freehand mode, these values position the PDA in relation to the player. vr_pdaPosY 0 FLOAT - vr_pdaPosZ -11 FLOAT - vr_pdaPitch 30 FLOAT -

vr_movePoint 0 INTEGER - If enabled, move in the direction the off hand is pointing. ( enabled = Onward style movement )

vr_moveClick 0 INTEGER0 = Normal movement. 1 = Click and hold to walk, run button to run. 2 = Click to start walking, then touch only. Run btn to run. 3 = Click to start walking, hold click to run.
4 = Click to start walking, then click toggles run

vr_playerBodyMode 0 INTEGER - Player body mode: 0 = Display full body 1 = Just Hands 2 = Weapons only

vr_bodyToMove 1 BOOL - Lock body orientaion to movement direction.

vr_crouchMode 0 INTEGER - Crouch Mode: 0 = Full motion crouch (In game matches real life) 1 = Crouch anim triggered by smaller movement.

vr_crouchTriggerDist 10 FLOAT - Distance ( in inches ) player must crouch in real life to toggle crouch if crouchmode set to 1

vr_frameCheck 0 INTEGER - 0 = bypass frame check

vr_forceOculusAudio 1 BOOL - Request openAL to search for Rift headphones instead of default device. Fails to default device if rift not found.

vr_stereoMirror 1 BOOL - Render mirror window with stereo views. 0 = Mono , 1 = Stereo Warped

vr_APISelect 0 INTEGER - VR API Select: 0 = Autodetect ( Oculus Native then OpenVR ) , 1 = Oculus Native Only 2 = OpenVR only

vr_teleport 2 INTEGER - Player can teleport at will. 0 = disabled, 1 = gun sight, 2 = right hand, 3 = left hand, 4 = head 0, 4

vr_teleportMode 0 INTEGER - Teleport Mode. 0 = Blink (default), 1 = QuakeCon style (slow time and warp speed)

vr_teleportMaxTravel 950 INTEGER - Maximum teleport path length/complexity/time. About 250 or 500 are good choices, but must be >= about 950 to use tightrope in MC Underground. 150, 5000

vr_teleportThroughDoors 0 BOOL - Player can teleport somewhere visible even if the path to get there takes them through closed (but not locked) doors.

ai_debugMove 0 BOOL - Debug teleporter and monster navigation by showing teleport path

vr_teleportSkipHandrails 0 INTEGER - Teleport aim ingnores handrails. 1 = true

vr_teleportShowAimAssist 0 INTEGER - Move telepad target to reflect aim assist. 1 = true

vr_teleportButtonMode 0 BOOL - 0 = Press aim, release teleport. 1 = 1st press aim, 2nd press teleport

vr_teleportHint 0 BOOL - internal use.

vr_teleportVel 650 FLOAT ( these teleport cvars used to define the shape of the teleport aiming beam )

vr_teleportDist 60 FLOAT vr_teleportMaxPoints 24 FLOAT - vr_teleportMaxDrop 360 FLOAT -

vr_motionSickness 10 INTEGER - Motion sickness prevention aids. 0 = None, 1 = Chaperone, 2 = Reduce FOV, 3 = Black Screen, 4 = Black & Chaperone, 5 = Reduce FOV & Chaperone, 6 = Slow Mo, 7 = Slow Mo & Chaperone, 8 = Slow Mo & Reduce FOV, 9 = Slow Mo, Chaperone, Reduce FOV, 10 = Third Person, 11 = Particles, 12 = Particles & Chaperone 0, 12

vr_strobeTime 500 INTEGER - Time in ms between flashes when blacking screen. 0 = no strobe

vr_instantAccel 1 BOOL - optional instant player acceleration/decelaration when using artifical movement (to reduce motion sickness)

timescale 1.0 FLOAT - game speed multiplier. Used by slow mo motion sickness fix. If there's an issue with it, you may need to set timescale 1

vr_chaperone 2 INTEGER - Chaperone/Guardian mode. 0 = when near, 1 = when throwing, 2 = when melee, 3 = when dodging, 4 = always 0, 4

vr_handSwapsAnalogs 0 BOOL - Should swapping the weapon hand affect analog controls (stick or touchpad) or just buttons/triggers? 0 = only swap buttons, 1 = swap all controls

vr_autoSwitchControllers 1 BOOL - Automatically switch to/from gamepad mode when using gamepad/motion controller. Should be true unless you're trying to use both together, or you get false detections. 0 = no, 1 = yes.

vr_headshotMultiplier 2.5 FLOAT - Add headshot damage multiplier for projectile weapons with no splash damage (and fists). Damage inflicted by the fists, pistol, shotgun, machinegun, chaingun, and plasmagun will be multiplied by this factor when enemy is hit in the head. Multiplier only affects enemies who already had a defined head damage zone with > 1 damage scale, so it does not affect most boss monsters (cyberdemon, guardian, seekers, maledict and saboath). Also does not affect the pinky, trite, tick, cacodemon and lost soul enemies. 1.0f thru 5.0f. Setting cvar to 1.0 adds no additional damage.

vr_shotgunChoke 0 FLOAT - This enables an optional 'choke' for the shotgun, by reducing the spread. The shotgun is supposed to be a closeup weapon in the game, but the depth provided in VR really changes how it feels. IMO, it seems underpowered unless you are on top of an enemy, due to the extreme pellet spread. % To choke shotgun. 0 = None, 100 = Full Choke

vr_useHandPoses 0 BOOL - If using oculus touch, enable finger poses when hands are empty or in guis

vr_cinematics 0 INTEGER - Cinematic type. 0 = Immersive, 1 = Cropped, 2 = Projected

r_useShadowMapping 0 - Use soft shadow mapping instead of hard stencil shadows


10) KNOWN ISSUES


See https://github.com/KozGit/DOOM-3-BFG-VR/issues

Doom 3 wasn't designed to work with shadow maps so:


11) GETTING THE SOURCE CODE


This project's GitHub.net Git repository can be checked out through Git with the following instruction set:

> git clone https://github.com/KozGit/DOOM-3-BFG-VR.git

If you don't want to use git, you can download the source as a zip file at https://github.com/KozGit/DOOM-3-BFG-VR/archive/master.zip

Init/Update the submodules in Git to get OpenVR.


12) COMPILING ON WINDOWS WITH VISUAL C++ 2013, 2015, OR 2017 EXPRESS / COMMUNITY


  1. Download and install the free Express or Community version of Visual C++ 2013, 2015, or 2017.

  2. Download and install the DirectX SDK (June 2010) here: http://www.microsoft.com/en-us/download/details.aspx?id=6812

  3. Download and install the latest CMake, saying YES to adding CMake to your path.

  4. Generate the VC projects using CMake by doubleclicking a matching configuration .bat file in the neo/ folder. eg. cmake-vs2013-64bit.bat (it will erase your build folder)

  5. (UPDATED) Go to https://developer.oculus.com/downloads/pc/1.17.0/Oculus_SDK_for_Windows/ then download and extract it somewhere. Copy the LibOVR folder to DOOM-3-BFG-VR/neo/libs

  6. (UPDATED) Init/Update the submodules in Git to get OpenVR. In TortoiseGit, right click in the folder then choose TortoiseGit > Submodule Update... then press OK.

  7. Open the following file in Visual Studio and compile it: DOOM-3-BFG-VR/build/Doom3BFGVR.sln

  8. (UPDATED) Download ffmpeg-4.0-win32-shared.zip from https://ffmpeg.zeranoe.com/builds/win32/shared/ and/or ffmpeg-4.0-win64-shared.zip from https://ffmpeg.zeranoe.com/builds/win64/shared/

  9. Extract the FFmpeg DLLs to your current build directory (eg. Release) under DOOM-3-BFG-VR/build/

  10. Copy the Fully Possessed folder from Doom3-BFG-VR\vr_assets\ to your DOOM 3 BFG Edition folder.

  11. (OPTIONAL) If Doom 3 BFG wasn't installed from Steam or GOG, set the path in Visual Studio. Right click project Doom3BFGVR, click Properties. Set Configuration to All Configurations. Choose Debugging, set Command Arguments to: +set fs_basepath "C:\Program Files (x86)\Steam\steamapps\common\DOOM 3 BFG Edition" or wherever you installed Doom 3 BFG edition

  12. To create the installer, download and install NSIS. Build the release version in visual studio. Right click on the installer.nsi file and choose Compile NSIS Script.


13) COMPILING ON LINUX


LINUX VR:

build the engine:

cd neo
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release .. # -DCMAKE_BUILD_TYPE=Debug has really bad VR performance
make -j$(nproc)

symlink binary + mod files to wine steam installation and run

cd steam/SteamApps/common/DOOM\ 3\ BFG\ Edition
ln -s ~/DOOM-3-BFG-VR/neo/build/Doom3BFGVR .
ln -s ~/DOOM-3-BFG-VR/vr_assets/Fully\ Possessed/ .
export MESA_GL_VERSION_OVERRIDE=4.5COMPAT MESA_GLSL_VERSION_OVERRIDE=450 #mesa needs to fake a compat profile
./Doom3BFGVR

Use enter (have to look at the menu?) and the keyboard to get past the menu and start a game

KNOWN LINUX ISSUES:

Controller buttons don't work

*** The following instructions were for an older version of Doom 3 BFG and probably no longer apply.

  1. You need the following dependencies in order to compile Doom3BFGVR with all features:

    On Debian or Ubuntu:

    > apt-get install cmake libsdl2-dev libopenal-dev libavcodec-dev libavformat-dev
    libavutil-dev libswscale-dev

    On Fedora

    // TODO add ffmpeg libs for bink videos
    
    > yum install cmake SDL-devel openal-devel

    On openSUSE (tested in 13.1)

    > zypper in openal-soft-devel cmake libSDL-devel libffmpeg1-devel
    
    For SDL 2 replace "libSDL-devel" with "libSDL2-devel".
    "libffmpeg1-devel" requires the PackMan repository. If you don't have that repo,
    and don't want to add it, remove the "libffmpeg1-devel" option and compile without
    ffmpeg support. If you have the repo and compiles with ffmpeg support, make sure
    you download "libffmpeg1-devel", and not "libffmpeg-devel".

    Instead of SDL2 development files you can also use SDL1.2. Install SDL 1.2 and add to the cmake parameters -DSDL2=OFF

    SDL2 has better input support (especially in the console) and better support for multiple displays (especially in fullscreen mode).

  2. Generate the Makefiles using CMake:

    cd neo/ ./cmake-eclipse-linux-profile.sh

  3. Compile DOOM-3-BFG targets with

    cd ../build make


14) BUG REPORTS


DOOM-3-BFG VR: Fully Possessed is not perfect, it is not bug free just like all other software. To fixing as many problems as possible, we need as many bug reports as possible. We cannot fix anything if we don't know it's broken :).

The best way to tell us about a bug is by submitting a bug report at our GitHub bug tracker page:

https://github.com/KozGit/DOOM-3-BFG-VR/issues

The most important fact about this tracker is that we cannot simply forget to fix the bugs which are posted there. It is also a great way to keep track of fixed issues.

If you want to report an issue with the game, you should make sure that your report includes all information useful to characterize and reproduce the bug.

* What version you are using, and what mods you have installed.
* What hardware are you using ( Vive, Rift, Touch, Gamepad etc. )
* Search on Google
* Include the computer's hardware and software description ( CPU, RAM, 3D Card, distribution,
    kernel etc. )
* If appropriate, send a console log, a screenshot, an strace ..
* If you are sending a console log, make sure to enable developer output:

          Doom3BFGVR.exe +set developer 1 +set logfile 2

NOTE: We cannot help you with OS-specific issues like configuring OpenGL correctly, configuring ALSA or configuring the network.


15) LICENSE


See COPYING.txt for the GNU GENERAL PUBLIC LICENSE

ADDITIONAL TERMS: The Doom 3 BFG Edition GPL Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU GPL which accompanied the Doom 3 BFG Edition GPL Source Code. If not, please request a copy in writing from id Software at id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.


16) CODE LICENSE EXCEPTIONS - The parts that are not covered by the GPL:


EXCLUDED CODE: The code described below and contained in the Doom 3 BFG Edition GPL Source Code release is not part of the Program covered by the GPL and is expressly excluded from its terms. You are solely responsible for obtaining from the copyright holder a license for such code and complying with the applicable license terms.

JPEG library

neo/libs/jpeg-6/*

Copyright (C) 1991-1995, Thomas G. Lane

Permission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions: (1) If any part of the source code for this software is distributed, then this README file must be included, with this copyright and no-warranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation. (2) If only executable code is distributed, then the accompanying documentation must state that "this software is based in part on the work of the Independent JPEG Group". (3) Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind.

These conditions apply to any software derived from or based on the IJG code, not just to the unmodified library. If you use our work, you ought to acknowledge us.

NOTE: unfortunately the README that came with our copy of the library has been lost, so the one from release 6b is included instead. There are a few 'glue type' modifications to the library to make it easier to use from the engine, but otherwise the dependency can be easily cleaned up to a better release of the library.

zlib library

neo/libs/zlib/*

Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

Base64 implementation

neo/idlib/Base64.cpp

Copyright (c) 1996 Lars Wirzenius. All rights reserved.

June 14 2003: TTimo ttimo@idsoftware.com modified + endian bug fixes http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=197039

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

IO for (un)compress .zip files using zlib

neo/libs/zlib/minizip/*

Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )

Modifications of Unzip for Zip64 Copyright (C) 2007-2008 Even Rouault

Modifications for Zip64 support Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

MD4 Message-Digest Algorithm

neo/idlib/hashing/MD4.cpp Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All rights reserved.

License to copy and use this software is granted provided that it is identified as the "RSA Data Security, Inc. MD4 Message-Digest Algorithm" in all material mentioning or referencing this software or this function.

License is also granted to make and use derivative works provided that such works are identified as "derived from the RSA Data Security, Inc. MD4 Message-Digest Algorithm" in all material mentioning or referencing the derived work.

RSA Data Security, Inc. makes no representations concerning either the merchantability of this software or the suitability of this software for any particular purpose. It is provided "as is" without express or implied warranty of any kind.

These notices must be retained in any copies of any part of this documentation and/or software.

MD5 Message-Digest Algorithm

neo/idlib/hashing/MD5.cpp This code implements the MD5 message-digest algorithm. The algorithm is due to Ron Rivest. This code was written by Colin Plumb in 1993, no copyright is claimed. This code is in the public domain; do with it what you wish.

CRC32 Checksum

neo/idlib/hashing/CRC32.cpp Copyright (C) 1995-1998 Mark Adler

OpenGL headers

neo/renderer/OpenGL/glext.h neo/renderer/OpenGL/wglext.h

Copyright (c) 2007-2012 The Khronos Group Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Materials.

THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.

Timidity

neo/libs/timidity/*

Copyright (c) 1995 Tuukka Toivonen

From http://www.cgs.fi/~tt/discontinued.html :

If you'd like to continue hacking on TiMidity, feel free. I'm hereby extending the TiMidity license agreement: you can now select the most convenient license for your needs from (1) the GNU GPL, (2) the GNU LGPL, or (3) the Perl Artistic License.