Giter Club home page Giter Club logo

doom-3-bfg-vr's Introduction

    ____                           _____  ____   ______ ______ _    __ ____   
   / __ \ ____   ____   ____ ___  |__  / / __ ) / ____// ____/| |  / // __ \ 
  / / / // __ \ / __ \ / __ `__ \  /_ < / __  |/ /_   / / __  | | / // /_/ /
 / /_/ // /_/ // /_/ // / / / / /___/ // /_/ // __/  / /_/ /  | |/ // _, _/
/_____/ \____/ \____//_/ /_/ /_//____//_____//_/     \____/   |___//_/ |_|

							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.



- Motion Controls: Full motion controls are supported.
		
	Independent	weapon and flashlight control via motion controllers.
	
	All in game GUIs ( including the in game PDA ) can be interacted with as touch screens.
	
	Game and VR settings can be adjusted in game via a touch screen interface.
	
	A weapon slot system has been implemented.  The player may use motion controls to stash or 
	retrieve a weapon or the PDA from virtual holsters located on the player body.  The player
	may also use motion controls to grab or place the flashlight on the head or the body, and 
	then pick it back up in the hand later.  
	
	Full room-scale support.  ( See locomotion ) 
	

	
- Locomotion:  Multiple locomotion options are supported.

	Teleportation support:
	  
	  A parabolic aiming beam identifies areas the player can teleport to, as identified by
	  the game AAS system. Teleporting to a location will cause the player to activate all in
	  game 'triggers' along the path the player would walk to reach the destination.  This 
	  includes activating cutscenes, alerting or activating monsters, triggering any in game
	  scripted events, and taking any environmental damage that the player would incur along
	  this route. Players may not teleport through closed doors, or to areas the AAS system
	  has marked as unreachable by the player.
	  
	  LIMITATIONS:  Doom 3 was not initially designed with the idea of teleportation in mind.
	  Doom 3 uses an Area Awareness System (AAS) to determine if a location is reachable by a
	  character in the game, and then generate a path to that point. AAS files have been 
	  generated for the player for most of the levels in the game, but there are limitations.
	  Issues can happen for example if trying to teleport onto a desk - you will teleport to 
	  the desk but then be bounced to the floor, just as if you had tried to jump on the desk.
	  The AAS system is also currently unable to identify areas that are only reachable by 
	  ladder, so it is not currently possible to teleport to an area if the only way to reach 
	  it is via ladder. Additionally, there are a few small	areas in the game the AAS system 
	  is not aware of, and therefore cannot be teleported to. In these instances, the player
	  will need to use normal locomotion to reach these areas and continue the game.

	Full room-scale support.
	  
	  Your character can walk around and crouch using your real life motion. Walking in real
	  life allows you to walk around in the game, including walking up and down stairs or off
	  ledges.  You can push small shipping containers and other items with real life motion.
	  Solid objects cannot be walked through, but they can be leaned over to some degree. 
	  Jumping via real life motion is not supported.

	Gamepad and Motion Controller locomotion:
	
	  Gamepad or Motion Controller Pads, Sticks, or Buttons can be used for artificial 
	  locomotion.  Options are included for controller relative movement ( Onward style ),
	  and normal gamepad style movement controls.  There are a variety of options available
	  to the player, including smooth turning, comfort (snap) turning, and multiple comfort
	  options to reduce the effects of VR sickness when using artificial movement.  All of the
	  controls can be rebound or disabled ( for example, turning or strafe can be removed 
	  completely from the controllers ), and the various comfort options enabled or disabled.
	  These changes can be easily made in game via touch screen access to VR specific game 
	  menus using the PDA.

	Comfort Options:
	
	  There are various locomotion options available to assist in preventing motion sickness,
	  including comfort ( snap ) turning, third person movement, movement based FOV reduction,
	  slow motion movement, and using the Chaperone boundaries to provide a static reference.
	  
- Voice Commands:

	DOOM3-BFG VR : Fully Possessed supports voice commands via the Windows speech recognition
	engine.  System commands such as pause, resume, and menu are accessible by speaking.  
	Additionally, the player may 'Talk' to NPC's simply by speaking to them when they are in
	focus.  ( Talking does not imply the NPCs carry out an actual conversation - speaking to
	them prompts them to say their predetermined lines.)  All weapons can be selected by 
	saying their name, and can also be reloaded by voice command.  Phrases that activate each
	voice command are defined in a plaintext file that can be modified by the user to customize
	behavior.
	

	
- Character and Weapon Options:

	The player may choose to display the full character body while playing.  Basic IK is 
	implemented for the player head, arms, and crouch height, so movement in real life is
	replicated in the game to some degree. Note that the IK is extremely basic, and often
	results in incorrect poses.  
	
	If they player does not wish to see their body while playing ( for example if the incorrect
	arm IK is found to be to distracting, annoying, or just silly ), the player body may be 
	disabled. There are options to instead display only the active weapon with hands and a stat
	watch, or just the active weapon with no hands.	
	
	The stat watch is a display located on the player wrist that indicates the current ammo 
	status for the active weapon, as well as vertical Health and Armor bars to monitor player 
	status.  The Health bar is located on the left side of the statwatch, and the Armor bar is
	on the right.  The bars will shrink and change color as health and armor are depleted.  
	
	
	
- HUD and GUI options:

	The HUD is now projected into the world as a translucent object.  The HUD can be enabled
	fully, disabled, or can activate when the player looks down past a user defined angle.
	Individual elements of the HUD can be hidden if desired. The HUD position can be adjusted
	by the user, and locked to either the player view or the player body.
	
	In game GUIS such as the PDA, interactive computers, card readers, buttons, or keypads can
	be interacted with simply by touching them with your virtual finger as you would a normal
	touchscreen.  If desired, touchscreen mode can be deactivated, and gui interaction can be
	controlled either by aiming your weapon or via gaze aiming.
	
	
	
- 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.
	
	In this just for fun mode, the player selects a character to portray in the game. The aim
	is to act out the game's cutscenes by becoming that character. 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. ( See the Flicksync section under Controls for
	full instructions .) The Flicksync mode is still a work in progress, so bugs are to be 
	expected.


___________________________________________________

5) CHANGES
__________________________________________

- VR support (Doom 3 only, 1 and 2 use a virtual screen in VR)

- Motion Controls

- Voice Commands

- Flicksync Mode

- Better looking cola cans and video discs

- Mostly uncensored Doom 1 and 2 (still no blue SS soldiers in secret level)

- Fixed Doom 2 extra secret level MAP33: Betray (accessed by pushing a wall in level 2).

- Win64 support

- OpenAL Soft sound backend primarily developed for Linux but works on Windows as well

- Bink video support through FFmpeg

- Soft shadows using PCF hardware shadow mapping

	The implementation uses sampler2DArrayShadow and PCF which usually
	requires Direct3D 10.1 however it is in the OpenGL 3.2 core so it should
	be widely supported.
	All 3 light types are supported which means parallel lights (sun) use
	scene independent cascaded shadow mapping.
	The implementation is very fast with single taps (400 fps average per
	scene on a GTX 660 ti OC) however I defaulted it to 16 taps so the shadows look
	really good which should give you stable 100 fps on todays hardware (2014).

- Changed light interaction shaders to use Half-Lambert lighting like in Half-Life 2 to 
	make the game less dark. https://developer.valvesoftware.com/wiki/Half_Lambert



___________________________________________________
	
6) CONTROLS
__________________________________________


* IMPORTANT * ALL CONTROLS CAN BE EASILY CUSTOMIZED/REMAPPED BY THE USER *

	Un-Binding or Binding controls:
	
	  Any axis or button can be re-mapped to any movement or control function.
	  Rebinding controls is accomplished through the 'Settings->Controls->Key Bindings' menu.
	  This menu is available from the Main Menu when the game is first launched, or
	  by pressing the System Menu button in game, and selecting the 'Settings->Controls->
	  Key	Bindings' menu on the PDA.
	  
	  Be careful not to speak when binding a control, or you will rebind what talking does.
	  You can't rebind specific voice commands. Edit the dict file instead.
	  The thumb rests on the Touch controllers can be bound, so be careful not to bump them.
	  
	  You can use the right joystick and trigger to highlight and select an action.
	  If you are in game and using the PDA to adjust settings, you may use motion controls 
	  and your virtual finger to access the menu as a touch screen.  Touch an entry once to 
	  highlight, and touch again to select.
	  
	  Use the joystick or touch controls to highlight a command and see its current bindings.
	  If available, button graphics will identify a bound control, otherwise a text descriptor 
	  is used. If the list of bindings is longer than the available space in the menu, the full
	  binding list for the selected action is listed (without button graphics) at the bottom 
	  of the screen.
	  
	  Select the highlighted action with the trigger or by tapping. Once selected, you can unbind
	  a currently bound control or add a new binding. To unbind a control, simply press the axis
	  or button you would like to unbind and it will be removed from the list. To bind a control,
	  simply press the desired button or axis and it will be added to the binding list.  If the 
	  desired button/axis	is currently bound to another action, you will be asked if you want to 
	  continue and reassign it to this command ( removing the existing binding ), or to cancel.
	  
	  Changing comfort ( snap ) turning:
	    
	    By default, the game is configured to use comfort or snap turning.
	    This can be easily changed via the Settings->VR Options->Comfort Options
	    menu, under the Turning option.  Cycle through the various options to select the turning
	    mode you prefer.  ( Analog mode provides the typical smooth turning function - however
	    this is one of the most common cause of VR sickness.)
	    
	    Alternative, you may manually rebind Turn Left, Turn Right, Comfort Turn Left, and 
	    Comfort Turn Right in the Settings->Controls->Key Bindings menu.
	      
	  
	  
Default controls for the Oculus Touch, HTC Vive, and Gamepad :

*	Read each section carefully. The controls behave differently depending
	on if you are playing the game or using a menu or the PDA. *
	  
	  
	Walking and crouching in real life are reflected in the game. You can
	walk up and down steps, over ledges, or push small objects by walking in
	real life.  Crouching can also be controlled via button, see below.
	
	By default, the flashlight ( or PDA when active ) are held in the left hand,
	and the weapon is held in the right hand.  This can be changed by picking up the 
	weapon or PDA from it's slot with your other hand, or through the VR Options->
	Character Options: Weapon Hand menu entry.
	
	Grenades are thrown via motion controls - press
	the trigger to start the throw, swing your arm and release the trigger to throw.
	
	
  _________________________________________	  
  Default Control Bindings: Oculus Touch

	*IN MENUS OR PDA:
	
	  Use either stick to highlight menu entries.
	  Press either trigger to select.
	  Press Y or Grip to go back/exit.
	  
	  If you are using the PDA, or the System Menus on the PDA in game,
	  you can use your virtual finger to select menu items just like using
	  a touch screen.
	
	*GAMEPLAY CONTROLS.

	  LEFT Controller:
	  
	    By default, the LEFT controller/hand will aim the flashlight, once equipped.
	    
	    Left Stick: 	The left stick controls player movement.
	    
	    	    The default configuration is motion relative to the direction the 
		    controller is pointing ( Onward style ).  
	            
	            Artificial motion will induce VR sickness for most people, so 
		    teleportation instead of stick control should be considered as a
		    primary form of movement in these instances.
	            
	            For those who find teleportation immersion breaking or uncomfortable,
	            there are a variety of ( optional ) comfort modes available in the VR 
		    menus. These modes include FOV reduction, Slo-Motion, Black Screen and 
		    Chaperone effects to reduce the discomfort caused by mismatched vection.
		    See the VR MENUS section for more details.
	           
	    Left Grip:  	Crouch.
	              
	    
	    Left Stick 
	    Press: 	    Press the left stick down to toggle the flashlight on and off.
	    
	    
	    Left Trigger:	Hold to run.
	    
	    Left Y:		Recenter view/reset height.
	           
		   If you stand up or sit down while playing, press this to adjust the
	            game to your new position.
	            
	            If the player body is visible, use this to reset the body to face the
	            current view direction.
	            
	    
	    Left X:		Activate the PDA if it's in you inventory.
	          
		    Left X also will skip the active cutscene.
	            In a Flicksync, this gives up on the current line.
	                
	        
	    Left ≡ (menu)	Brings up the in game Pause/System menu on the PDA.
	          
		  ( The PDA does not need to be in you inventory to use this function)
	            
	          
	  
	  RIGHT CONTROLLER:

	    By default the RIGHT controller controls the right hand and the weapon 
	    
	    Right Stick
	    Up/Down:		Next / Previous Weapon
	    
	    Right Stick
	    Left/Right:		Snap turn 45 degrees left or right.
	    
	    Right Grip:		Reload
	          
	    Right Stick
	    Press:		Jump
	    
	    Right Trigger:	Attack / Fire
	           
		   Use Cue Card Power-Up in Flicksync
	    
	    Right A:		Reload
	    
	    Right B:		Teleport	  
	         
  _________________________________________	  
  Default Control Bindings: HTC Vive

	*IN MENUS OR PDA:
	
	  Use either pad to highlight menu entries.
	  Press either trigger to select.
	  Press either grip to go back/exit.
	  
	  If you are using the PDA, or the System Menus on the PDA in game,
	  you can use your virtual finger to select menu items just like using
	  a touch screen.
	
	*GAMEPLAY CONTROLS.

	  LEFT Controller:
	  
	    By default, the LEFT controller/hand will aim the flashlight, once equipped.
	    
	    Left Pad:		The left stick controls player movement.  
	    	
		    The default configuration is motion relative to the direction the
		    controller is pointing ( Onward style ).  
	            
	            Artificial motion will induce VR sickness for most people, so 
		    teleportation instead of stick control should be considered as a
		    primary form of movement in these instances.
	            
	            For those who find teleportation immersion breaking or uncomfortable,
	            there are a variety of ( optional ) comfort modes available in the VR
		    menus. These modes include FOV reduction, Slo-Motion, Black Screen and
		    Chaperone effects to reduce the discomfort caused by mismatched vection.
		    See the VR MENUS section for more details.
	           
	    Left Grip:  	Crouch.
	              
	    
	    Left Pad 
	    Press: 	    Press the left pad down to toggle the flashlight on and off.
	    
	    
	    Left Trigger:	Jump
	                      
	        
	    Left ≡ (menu)	Activate the PDA if it's in you inventory.
	           
		    Will skip the active cutscene.
	            In a Flicksync, this gives up on the current line.
	            
	          
	  
	  RIGHT CONTROLLER:

	    By default the RIGHT controller controls the right hand and the weapon 
	    
	    Right Pad
	    Up:			Next Weapon
	    
	    Right Pad
	    Down:		Previous Weapon
	    
	    Right Pad
	    Left/Right:		Snap turn 45 degrees left or right.
	    
	    Right Grip:		Reload
	          
	    Right Pad
	    Press:		Teleport
	    
	    Right Trigger:	Attack / Fire
	           
		   Use Cue Card Power-Up in Flicksync
	    
	    Right ≡ (menu): Brings up the in game Pause/System menu on the PDA.
	           
		   ( The PDA does not need to be in you inventory to use this function)
	


 _________________________________________	  
  Default Control Bindings: Gamepad


	You can play the game in VR using an XBox 360/One gamepad if you don't have motion 
	controllers. The game will automatically switch to gamepad mode when you start 
	using the gamepad. You can use the gamepad for room-scale if you want.

	    Left Stick: 	Movement.
	    
	    	  This can cause motion sickness, So it's recommended to 
	          teleport by holding B, looking where you want to go, and letting go.
	
	    Push left
	    stick in:		Run
	    
	    Left
	    trigger:		Toggle Flashlight

	
	    Right 
	    stick:		Aim weapon, and will turn you if you aim past the 
	    			deadzone threshold.
	    
	    Push right
	    stick in:		Crouch
	    
	    Right
	    trigger:		Attack / Fire weapon
	    
	    Shoulder
	    buttons:		Switch weapons

	    A = jump
	    B = teleport
	    X = reload
	    Y = use
	    View / Back = PDA / Skip cutscene
	    ≡ / Start = menu.
	    
	  
 _________________________________________
  Default Control Bindings: Keyboard / Mouse


	You can play the game in VR using keyboard and mouse if you don't have motion
	controllers.  The game will NOT automatically switch to gamepad mode when you start
	using the keyboard, so you might need to turn on gamepad mode manually in the VR options
	if your arms are weird.	You can't use the mouse for room-scale yet because we haven't
	implemented head aiming.

	    WASD:		Movement. 
	   
	   	  This can cause motion sickness, So it's recommended to 
	          teleport by holding RMB, looking where you want to go, and letting go.
	    
	    Z/X:		Comfort turn 45 degrees left or right
	    C:		  	Crouch
	    Space:		Jump
	
	    Shift:		Run

	    E:			Use (not really needed)
	    R:			Reload
	    F:			Toggle Flashlight
	
	    Arrow 
	    Keys:		Aim weapon, and will turn you if you aim past the 
	    			deadzone threshold.
	    
	    NumPad:		Comfort turn left/right 45 degrees
	    NumPad0:		Teleport
	    
	    LMB:	 	Attack / Fire weapon
	    RMB:		Teleport (aim with head, not mouse)
	    MMB:		Reload
	    Mouse
	    Wheel:		Switch weapons
	    
	    ~:			Console
	    Q:			Soul Cube / Artifact
	    1-0:		Switch weapons
	    
	    Tab:		PDA / Skip cutscene
	    Esc:		menu
	    Pause:		Freeze program
	    F5:			Quick Save
	  
	_________________________________________	  
	Using the PDA: 
	  
	  You can move the PDA around in your hand, while using your right finger to touch the
	  screen to select entries or scroll bars. You can also use the sticks/pads and buttons
	  on each hand to select options.

	  Use Y or grip to put your PDA away again.

	  If the tracking glitches, your PDA can end up far away. If this occurs,  repeatedly
	  press Y or Grip to close the PDA. ( This is a known issue that will be addressed )
	  
	  You can also manually grab the PDA from your left hip using motion controls.
	  When you move the left controller over the correct spot, the right controller 
	  vibrates. Use the grip button to pick up the PDA. Your flashlight will be temporarily
	  holstered on your hip while using the PDA.

	  When you are finished with the PDA, you can place it back the same way, and grab your
	  flashlight. ( Grabbing the PDA before you collect it from Reception brings up the 
	  pause menu instead of the PDA. )
	  
	_________________________________________	  
	Using the System/Pause menu:
	
	  Activating the System/Pause menu ( Press ≡ (menu) on the left Touch or Right Vive )
	  will pause the game and display the system menus on the PDA as above. You can 
	  load/save/exit the game, Change the control bindings via System->Controls->Key Bindings,
	  or adjust the various VR options via VR Options. See the section on VR options for more
	  details.

	  Touch the 'Back' options, or press Y or the Grips to go back/exit.
	  
	  
	_________________________________________	  
	Teleporting:
	
	  You can teleport anywhere you could normally reach by walking, ducking, or jumping
	  onto things.  When you teleport, your character will trigger any in game events and
	  take any environmental damage that the player would incur by walking the route to the
	  destination.
	  
	  You can't teleport across gaps you have to jump across, or onto the tightrope in the
	  Mars City Underground level. There is a path length/complexity limit on how far you
	  can teleport in one hop, but it's fairly far. There are some bugs in the Player AAS
	  files, and some levels are missing, so there are instances where you can't teleport
	  places you should be able to. In these instances, walk in real life or move forward
	  with the stick/pad a little until you can teleport again. If you didn't install the
	  Player AAS files at install, you will only be able to teleport places a Zombie can go.
	  
	  To teleport, push in the right touchpad, or hold down B on Touch, then move your hand
	  to aim the parabola where you want to go. Release the stick or touchpad to teleport 
	  there. Pressing the trigger while the aiming beam is active will cancel the teleport.
	  If the teleport target is red, you will need to duck/crouch before teleporting to the 
	  destination.	If there's no circle, that means you can't teleport there from your current
	  location.
	  
	  There are two teleportation modes. "Blink" teleports you instantly. "QuakeCon" slows 
	  time and warps you there.
	  
	_________________________________________	  
	Using Slots:
	
	  Slots are locations defined on the player body you can stash or retrieve weapons, the PDA,
	  or the flashlight by using motion controls to grab/stash them.  When a motion controller
	  is inside of a slot area, the right controller will vibrate.  When the controller 
	  vibrates, press the grip button on the controller in the slot to grab/place/swap the item.
	      
	  You can manually place the flashlight on your left shoulder or your head using the slots,
	  and then later retrieve it from those places the same way.

	  You can swap your hands by grabbing the holster on your right hip with your left hand. 
	  This will transfer the flashlight to your right side and pick up any holstered weapon in
	  your left. Swapping hands will swap most of the controls, but does not swap the analog
	  sticks/touchpads.


	  You can manually grab the holster on your right hip to holster your weapon.
	  If there's already a weapon holstered there, the weapons will swap.

	  You can grab behind your weapon hand's shoulder to switch to the next weapon.
	  You can grab behind your weapon hand's lower back for previous weapon.

	  You can also grab the PDA on your left hip with your right hand, if you prefer.
	  You can then put it back on the same side like normal, or holster PDA on the right
	  to switch hands.
	  
	_________________________________________	
	Interacting with Guis:
	
	  To use a touchscreen/gui, walk up to the screen and look at it.  When you have 
	  focused on the gui, your weapon will lower and your hand will point a finger and 
	  raise to the gui. You can now reach out and use the gui like a normal touchscreen.
	  
	  To exit the gui, walk backwards or teleport.


	
	_________________________________________	
	Motion Control Errata:
	
	Currently, you cannot use motion controls to pick up items in the environment, or to 
	punch/melee attack. ( These features are being worked on)

	If you are displaying the player body, and the arms look strange due to a bad IK pose,
	use the controller to move the character forward. This will make your body face the
	correct direction. If your body isn't attached to your neck properly, try jumping.  
	If things just seem out of alignment, or to switch from seated to standing mode,
	Recenter view/reset height with whichever button is defined (you must say "reset view"
	on Vive).


	

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:

- Some lights cause shadow acne with shadow mapping
- Some shadows might almost disappear due to the shadow filtering

____________________________________________

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 <[email protected]>
	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.  


doom-3-bfg-vr's People

Contributors

abergmeier avatar bielbdeluna avatar carlkenner avatar christophhaag avatar codes4fun avatar coldtobi avatar danielgibson avatar danmcgoo avatar davidfoerster avatar dsalt avatar ericabxy avatar jamesdunne avatar jansimek avatar jckhng avatar johnr14 avatar jonathangray avatar jpcy avatar kozgit avatar linagkar avatar ljbade avatar marksheehan avatar palmalcheg avatar raynorpat avatar robertbeckebans avatar something15525 avatar thelonerd avatar tinosm avatar unkier avatar wintermute0110 avatar yamagi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

doom-3-bfg-vr's Issues

voice commands + main menu not working

holy shit this is frustrating ive been screaming my head off with voice commands for the past hour how do i get them working they worked for me before i updated my game with the latest update. and how do i open main menu once ive recieved the PDA i can only open it before i recieve it.

Hand presence: fingers should move in response to Touch

Currently only pulling the trigger seems to be implemented.

Also, when using hands, I'd like to be able to close my hand to make it a fist for punching, or open my hand to make it just a normal hand.

Oh, and pulling the trigger to use the flashlight is weird when I can clearly see the button is on top, just under my thumb.

Motion control joy/pad intermittent issue.

Intermittent issue with motion controls where the joystick ( or pad in the case of the vive ) axes don't seem to be correctly reporting zero values or just miss input changes, which can result in the player spinning in place or moving constantly when no control is being pressed.

Saved games from old version with texture pack not loading

Unfortunately I having large issues with the new update. I have everything backed up but would really like to get the new fixes and features working. Previously I had the last version 015 and the allinone + ultimateHD pack installed. I have several save games quite a few hours into the game.

I used the installer and checked the AAS options. Installer completed without any issue. Upon first loading I get an error message that there is a problem with my profile and a new one is being created. All of my save games show up but clicking on them does nothing. Just here a small clicking sound and nothing at all happens.

I know that save games are dependant on files but Samson did say after the last release we wouldn't lose them again. Hopefully this is a quick fix. Any help greatly appreciated.

Worth mentioning I tried deleting the generated files and the regular suggestions to no avail.

https://forums.oculus.com/community/discussion/comment/499989/#Comment_499989

Dropping a grenade over a railing often fails (fatally)

Often when you try to drop a grenade over a railing (eg. Mars City Underground crane area), it fails and drops at your feet instead, killing you.

This is good for when you stick your hand through a solid glass window, but it's bad for sticking your hand over a railing.

Starting game

Hi Samson, the game is working fantastically with the new update for OpenVR. Haven't found any problem yet apart from the start screen where it says face forward and press any key. For some reason it takes a lot of key presses to recognize the press and the length of time varies every time.

Head Bobbing

Recent code changes disabled the addition of the viewBob delta in GetViewPosVR unless knockbacks are enabled.

This had the side effect of eliminating vertical smoothing on transitions over steps/bumps, which can be very jarring.

I've temporarily eliminated the check for knockbacks here so going up/down steps will be smooth again.

In the meantime, normal walk/run headbobs can be ( and I think currently are) eliminated with the pm_walkbob, pm_runbob etc cvars until we can implement something better.

Other less sickening locomotion options

This is less important now that we have teleportation. But it would still be nice.

I'd like to see other locomotion options that are less sickening:

  • reduce FOV while virtually moving (Dolphin VR does this badly, Google Earth does this well)
  • show chaperone grid while virtually moving (it's a bit like a cockpit, but it doesn't help much)
  • black out screen while virtually moving (probably not great for moving around, but easy to implement and guaranteed not to make you sick)
  • third person while virtually moving (your view stays still, but your body moves out from under you while you are using the joystick, until you stop touching the stick, at which point your view teleports back to your body)
  • virtually move in jumps (like comfort mode)
  • floating objects in the air (dust?) that stay locked to the real world

Body rotation doesn't follow hands and head

In real life, it's impossible for me to turn my head past 50 degrees without turning my torso, and impossible to turn my head past 130 degrees without turning my feet.

There are also many hand positions and orientations that are impossible without turning my torso and/or my feet.

Once you turn your head 40 degrees past where your body is pointing, the body should rotate to catch up.

Ideally, the head and torso should be part of the same IK system as the arms, and perhaps even the legs, so your virtual body always behaves in a way that's at least biologically possible, even if it doesn't always match your real body exactly.

vr_talkWakeMonsters affecting monster spawns

Important!! 3-3-2017
A setting was inadvertantly left on in this build that affects monster spawns.
You will most likely want to disable this.
From the console ( press ~ to open console ) type:
vr_talkWakeMonsters 0

Then press enter. This will prevent voice commands from waking monsters.

i think something may be wrong with the update.....some of enemies spawn before you do the required scripted events that you would normally do....it seems like they all spawn at once..which is actually pretty amusing when i went though a level and was surprised by how many mobs came at me in the administration office withing 5 minutes of starting the level lol.

There was a later addition to the mod that I neglected to highlight in the readme, sorry! There are two new cars, vr_talkWakeMonsters and vr_talkWakeMonstetRadius. If vr_talkWakeMonsters is set to 1 ( which is the default for now) , talking or making noise will wake up all monsters within the vr_talkWakeMonstersRadius. Set to 0 to disable.

Laser sight comes out of barrel, not laser emitter

The pistol has an obvious laser sight emitter below the barrel. You would expect the laser beam or laser dot to come out of there, while the bullets come out of the barrel.

You could make it high tech, and have the laser still aim at the same target, but I would make it low tech and have the laser come out parallel to the barrel and be an inch below the target. Or you could make it somewhere in between and have the laser sight angled up slightly to assume an aim distance.

I'm not sure about the other weapon models.

There should also be an option to only have a laser sight on weapons whose models feature a laser sight, and an option to disable the laser sight completely and just use iron sights.

And you should be able to have both a laser beam and a laser dot.

Game hears "fists" when you don't say it.

also i dunno if there's something up with the control scheme, but it seems that when in the middle of combat my character seems to sometimes change to "fists" during a fight. i disabled auto weapon switch and made sure "fists" didnt have a key binding to weapon swap to so i dont know how it keeps switching to them

Hands don't line up with actual hands on Vive

On the HTC Vive in Steam VR, the virtual hands are too far forward. The tracking point on the Vive controller is near the touchpad, but the centre of your real hands will be further back on the controller.

Also the angle is slightly wrong. I think the Vive considers no rotation to be with the handle horizontal, while the Touch in the Oculus SDK considers no rotation to be the top horizontal while the handle is at an angle. Which means it's off by about 37 degrees.

I don't know if you have HTC Vive or not to test.

I don't know whether the assets in your downloads are different for the HTC Vive and the Rift.

Start menu is black

When I boot this up, all I see is black. Pushing random buttons for a bit, I get the main menu music. Pushing more random buttons eventually boots up the actual game, which works perfectly.

Where are the console logs saved? Maybe there's something failing to load?

Release checklist ?

Looks like we're really close to release. There are a few things I'd like to clean up first:

I need to find/fix the bug with input that causes lost/hung controller inputs. I got hatemail on the first release because of input, I'd like to avoid that as much as possible :)

Need to write documentation in the readme file to explain all the features/menu options.

Need to make sure the vr menus are updated with all the options ( teleportation, slots etc )

I'd like to discuss the default configs. I think I'm leaning towards disabling the slo-mo / view clipping comfort feature as a default - I think at this point a lot of people have already tried this, and it may be off putting. My thinking is an experienced user is going to be upset to have to roll back these settings, and a new user may just be happy the have the options. I shouldn't have been, but I was shocked when I initially released this at how many people were ( very vocally ) upset by default options that were easily changed.

Maybe the game, or the installer you're working on, can prompt the user on install/first run for what type of control scheme they want. ( hardcore full motion, medium comfort options, max comfort options? ) Could have a couple .cfgs predefined and exec one to set the initial mode.

And I just noticed that when freehanding the PDA, the model does not line up with your real hand at all, I need to fix this.

Any thoughts or anything you want to add to the list?

Consolidated to do list:

Finish documentation ( in progress )
Finish / test installer ( may be complete ? )
Implement third person movement ( Need to improve moving backwards )
Create remaining Touch button icons
Fix bad controller alignment with flashlight model.
Fix bad controller/model alignment when freehanding the PDA
Fix FOV cropping motion fix viewport size mismatch
Fix Chaperone motion sickness mode to prevent unwanted activations
Fix bug where the PDA state gets confused if you try to open the PDA immediately after level or save load

Determine best way for users to re-install the existing hi def mod.

List of Maybes:

Put together a hi def texture mod thats easy to install and doesn't interfere with normal gameplay or
our updated models/scripts.

Create additional .cfg files that users can exec from the console to implement alternate configs. ( For example we could create a maxcomfort.cfg the enables all comfort settings or nocomfort.cfg that disables them all etc.

Create some alternate controller config files ( like smooth turning enabled for the vive ), and update the gamepad selection screen that shows an image with all the buttons labeled for each config and let the user cycle thru the images to pick a control scheme.

The PDAs are inconsistent sizes and appearances

The PDAs aren't all the same size, and their size changes when you pick them up.

Also, the PDAs that other characters hold, or that are lying around, aren't as detailed as the view model you hold.

Ideally, I think all PDAs should be the size of the world model (so we don't have to make our holographic projection so much larger than the actual screen), but should have the same level of detail as the view model.

Then we can adjust the video discs to exactly match the size of the video disc slot.

Saved game folder should be in original folder

Now that we're using a different "base" folder called "Fully Possessed", the saved game folder doesn't need to be in a separate folder anymore. It would make more sense to have the "Fully Possessed" folder inside the original Doom 3 BFG save game folder ("DOOM 3 BFG") instead of inside "DOOM 3 BFG VR Fully Possessed".

Hands should turn into controllers if not held

If your controller is on the ground, has bad tracking, or is too far away, your arms stretch out really long and your hands look uncomfortable.

In other games, your virtual hands turn back into virtual controllers when they are not being held.

Ideally, I'd like to check if your controller is too far from your HMD to be a real hand, or your controller is perfectly stationary with no touches or buttons for a second or more, and in those cases make that hand of your avatar behave like without motion controls, and draw your controller as a controller wherever it is.

That's only for when showing hands. In gun only mode, it's fine to draw the gun at whatever position the controller is.

New release?

(Sorry - I know this isn't an issue as such but there's no other place to post)

I've been following development with keen interest. The locomotion and speech stuff looks amazing. Do you have a rough idea when you'll release a new build? Even an experimental one would be good for those of us that just want to try out the new features without much expectation of stability or completeness.

Teleporting rules

Here's the system I used for teleporting. Let me know if there's anything we should change or make optional:

  • Teleporting is instantaneous. Originally, I thought this would break gameplay too much, but after playing with it, I like it that way. Most monsters have ranged attacks and can adjust to your new position faster than you can, so it's not really cheating. You can rush across the retractable bridge in mars city underground before it finishes opening, but you could probably do that by running anyway, and it doesn't matter because the door is locked and you can jump down.
  • You can teleport anywhere you could reach from your current position by walking, crouching, jumping onto something, or falling without taking damage... if you can aim at the floor there.
  • Any events along the path you would have to take to get there are triggered, including some environmental damage.
  • It doesn't check for physics objects or monsters blocking your path, and you never actually go along that path except to check for doors, windows, and triggers.
  • You can't teleport across gaps that you have to jump across. That's mostly because the AAS can't handle that kind of reachability. But perhaps it's good, because there's supposed to be an element of skill involved.
  • You can't teleport to areas you could reach by climbing ladders. That's not intentional, it's just that the AAS can't handle it.
  • There's an option to choose whether or not you can teleport places you can reach by going through a door that is currently closed but not locked.
  • There's an option to limit teleport path length/complexity so you can't skip half the map, but currently it's set high enough so you can teleport across the railings and tightrope in Mars City Underground. I had to do that because it won't let you teleport onto the tightrope (probably because of the angle of the model surface).
  • You can only teleport places your character can fit. That is handled by the AAS (if there's no player AAS file, you can only teleport places a 48x48 monster could fit.) Currently, it doesn't check whether you need to crouch, unlike Budget Cuts, but Leyland's crawlspace code can handle it. Because of issues with the AAS not recognising many models as solid, and because of some stairs, it's sometimes possible to teleport under some objects you shouldn't be able to. But crawlspace code can handle it.
  • There are issues with the AAS not recognising patches and models, so there's some places, eg. rocky ground, you can't teleport onto, like the Mars surface in Mars City Underground (to collect the adrenaline and armour shards).
  • Trying to teleport close to (or through) a locked door will trigger the locked door event and any other events at the door location, but actually teleport you a comfortable distance away.
  • The AAS doesn't recognise glass windows as solid, so I check the path for them to stop you from teleporting into or through them, even if you stick your hand through the window.
  • The AAS doesn't recognise the hangar walls as solid, but the fact that you can't see through them to aim stops you from teleporting through them, unless you stick your hand through the wall. But you can teleport to the edge of the wall where you are standing half inside the wall, which isn't good.
  • You can always teleport into a nearby elevator. I had to add that because the AAS doesn't handle elevators well. There's still an issue teleporting OUT of elevators that I haven't fixed yet, but if you teleport or walk to the threshold first, you can teleport out.
  • You can't teleport onto a monster or NPC, unless they are dead.
  • Some objects (eg. most medium and small crates) aren't recognised as solid in the AAS, and movable physics objects can obviously never be, but I use the aiming code to check the height of the object, and if it's within jumping height of the AAS floor (and the floor isn't sloped) then I allow you to teleport onto it. If the object in the same AAS area as your current position, then I check the height you are aiming at relative to your current feet position, and if you could jump or fall that far, I let you teleport there. That allows you to climb up stacks of crates, but you have to do it one crate at a time.
  • If aiming at a floor, your aim cursor will be nudged to a nearby valid location if you try to aim too close to a wall or somewhere you can't go. This sometimes causes you to jump futilely if you aim at a desk or ledge within jump height that you can't go onto (because it's marked player clip), but that's what people would try anyway if there was no teleporting, so it's not really a problem.
  • Stairs are at incorrect heights in the AAS file (they're one step above where they should be), but I work around that by using the aim height instead.

If there's no player AAS file, I use the monster AAS file, but that makes it impossible to teleport to many places you should be able to go. If there's no monster AAS file either (only multiplayer maps with no monsters), I let you teleport anywhere you can aim at a floor that's within jump or fall height of your current position. I will generate player AAS files for the multiplayer maps though.

Can you please recreate the Touchpad movement of Onward in this mod ?

First of all, touchpad/touchstick makes a few people sick and that is a big problem, BUT if you do it the right way you can minimise that issue. The good thing is Onward, out of all games, has done the best job of just doing this. Many people who haven't played Onward are always eager to play it off, but the way the movement system in Onward works is undoubtedly the way to go. This was even admitted by Valve themselves : https://youtu.be/kMpQWSqQFK0?t=35m42s

So please please please, get into Onward and try to recreate it's movement system 1 to 1 for this mod.

My controls have become unmapped

Not sure how. Menus work fine but no controls on the Vive wands work. Other than remapping everything by hand - is there a quick fix?

Corrupt video/hung after blood flood cutscene in 1st level of RoE

Starting a new game in RoE, after the player gets the artifact, the next brief cutscene is when the player walks down the hall a few steps, the hall floods with blood and screen turns red.

Screen never fades out of red, and player is unable to continue past this point.

Edit: Thought this may have been due to the changes I made to the fullscreen FX, but looks like this started with your most recent pull. Maybe something in the flicksync code hanging after that particular cutscene? I'll try to look at it later, need to go before I fall asleep at the keyboard.

Oculus tracking glitches cause me to fall to my death

My Oculus trackers never work very well, maybe because I had to plug them into USB 2. Also my third tracker died completely. So occasionally the tracking will jump to something ridiculous, and then jump back a second or split second later. When that happens, I tend to fall to my death.

It would be good to ignore sudden jumps in tracking, for example, if my head moves a foot to the side in one frame, the new position should be considered the new tracking centre, instead of an actual movement, and the same when the tracking snaps back.

Also, when that happens while accessing the menu, my left arm becomes super long and I can't see the menu.

Holster weapons on parts of your body

It should be possible to look down and see your pistol hanging by your side, then pick it up (in either hand), use it, and put it back - like in Oculus Dead and Buried. The same with the other weapons on different parts of your body, and your PDA and flashlight.

Black hourglass

I've been having the exact same problem, but it only seems to have started happening in the past month or so... I'm sure I played a few hour plus sessions a while ago and never had the black hourglass screen pop up.\

Now I seem to get this hourglass screen on the rift, while the game is still playing normally in mirrored window on my monitor.

For some reason I just can't get the Rift to go back to the game.

I also ran into a problem where I couldn't get past the scene in the game where you briefly lose your weapons and need to punch kill everyone in a room. For some reason I just couldn't get the punch mechanic to work properly and couldn't kill everyone.../

So are aadvark and I the only people experiencing this black hourglass screen on the headset, while the game continues playing fine in the mirrored window on the monitor?

I just can't seem to figure out what causes the game to hang and show the hourglass screen, it seems to happen at a specific times, like I can load a game and walk around without any problems, but soon as I kill a certain enemy the screen switches to the black hourglass and I can't seem to get the game to display in the headset anymore

No position tracking on title or menus

There's no position tracking, so you get motion sick when you move your head.

Also, because loading causes it to drop frames, there are timewarp/spacewarp artefacts.

And the loading screen changes to an uncomfortable double vision just before it finishes loading.

For screens that are completely 2D, like the loading screen, it would be best to render it to the eye texture without any VR stuff, then use the Oculus SDK to make it a worldspace quad layer instead of an eye layer. Then the Oculus SDK will handle any framerate, resolution, and position tracking issues for you. For things with actual 3D, you could do the same thing, but it won't look as good (it would be like a 3D TV when you move your head).

Ambiguous docs

The following paragraph: "The combined scipts directory is now included in the install zip as 'all_in_one_script'. Rename the directory 'all_in_one_script' to 'script' and launch the mod."

might either belong to "if you are using the texture pack" or it might be separate and therefore relevant to both "using" and "not using" the texture pack.

Could you fix the formatting so it's clearer which is the case?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.