Skip to content

Commit

Permalink
Merge pull request #94 from CarlKenner/release
Browse files Browse the repository at this point in the history
Last minute fixes to turn mode, readme, and aas files
  • Loading branch information
KozGit authored Mar 2, 2017
2 parents 40ddcd4 + 542ad31 commit d61f7b7
Show file tree
Hide file tree
Showing 6 changed files with 1,819,890 additions and 900,764 deletions.
14 changes: 14 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.c text
*.cpp text
*.h text

# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf
*.aas_player eol=lf

# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.tga binary
51 changes: 39 additions & 12 deletions README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -243,14 +243,13 @@ Native support for the Oculus Rift and Touch via the Oculus SDK when detected.
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 locked doors, or
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. The AAS system may report an area is reachable by the player, but the object
itself is marked as 'noclip' or unreachable. This can happen for example if trying to teleport onto a desk -
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
Expand Down Expand Up @@ -393,6 +392,10 @@ __________________________________________
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
Expand Down Expand Up @@ -464,7 +467,7 @@ Default controls for the Oculus Touch, HTC Vive, and Gamepad :
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 can induce VR sickness for many people, so teleportation
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.

Expand Down Expand Up @@ -493,6 +496,7 @@ Default controls for the Oculus Touch, HTC Vive, and Gamepad :

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.
Expand All @@ -516,6 +520,7 @@ Default controls for the Oculus Touch, HTC Vive, and Gamepad :
Press: Jump

Right Trigger: Attack / Fire
Use Cue Card Power-Up in Flicksync

Right A: Reload

Expand Down Expand Up @@ -543,7 +548,7 @@ Default controls for the Oculus Touch, HTC Vive, and Gamepad :
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 can induce VR sickness for many people, so teleportation
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.

Expand All @@ -565,6 +570,7 @@ Default controls for the Oculus Touch, HTC Vive, and Gamepad :

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.



Expand All @@ -587,6 +593,7 @@ Default controls for the Oculus Touch, HTC Vive, and Gamepad :
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)
Expand Down Expand Up @@ -627,7 +634,7 @@ Default controls for the Oculus Touch, HTC Vive, and Gamepad :
B = teleport
X = reload
Y = use
View / Back = PDA.
View / Back = PDA / Skip cutscene
≡ / Start = menu.


Expand Down Expand Up @@ -670,7 +677,7 @@ Default controls for the Oculus Touch, HTC Vive, and Gamepad :
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,
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
Expand Down Expand Up @@ -728,7 +735,7 @@ Default controls for the Oculus Touch, HTC Vive, and Gamepad :
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.
with whichever button is defined (you must say "reset view" on Vive).



Expand Down Expand Up @@ -990,6 +997,8 @@ Starting a Flicksync game:

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.

Expand All @@ -998,8 +1007,11 @@ Starting a Flicksync game:
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.

Then choose the highest level you have reached in the game if you want to avoid spoilers.
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.

Expand All @@ -1012,7 +1024,8 @@ Starting a Flicksync game:
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.
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.


Expand Down Expand Up @@ -1049,6 +1062,8 @@ VR Related game changes can be made from the Settings->VR Options menu.
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:
Expand All @@ -1069,6 +1084,8 @@ VR Related game changes can be made from the Settings->VR Options menu.
( 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

Expand All @@ -1080,6 +1097,9 @@ VR Related game changes can be made from the Settings->VR Options menu.
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.
Expand Down Expand Up @@ -1134,6 +1154,8 @@ VR Related game changes can be made from the Settings->VR Options menu.
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.

Expand Down Expand Up @@ -1310,10 +1332,13 @@ VR Related game changes can be made from the Settings->VR Options menu.

Options:

Motion Controllers- Motion controls will be used
Motion Controllers- Motion controls will be used if present

Standard Controller- A gamepad will be the default control device.

I recommend leaving 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:
Expand Down Expand Up @@ -1783,6 +1808,8 @@ ___________________________________________________
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
Expand Down
56 changes: 36 additions & 20 deletions neo/d3xp/menus/MenuScreen_Shell_VR_Safety_Protocols.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -390,12 +390,16 @@ void idMenuScreen_Shell_VR_Safety_Protocols::idMenuDataSource_Shell_VR_Safety_Pr
static const int values[numValues] = { 0, 1, 10, 30, 45, 90, 180 };
int value = (int)(vr_comfortDelta.GetFloat() + 0.5f);
int comfortCount = 0, analogCount = 0;
for (int k = K_JOY1; k < K_JOY_DPAD_RIGHT; k++)
for (int k = K_JOY17; k < K_R_STEAMVRTRIG; k++)
{
if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_impulse34" ) == 0 || idStr::Icmp( idKeyInput::GetBinding( k ), "_impulse35" ) == 0 )
comfortCount++;
if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_right" ) == 0 || idStr::Icmp( idKeyInput::GetBinding( k ), "_left" ) == 0 )
analogCount++;
// Don't count gamepad, because it has both modes mapped at once
if (k < K_JOY_STICK1_UP || k > K_JOY_TRIGGER2)
{
if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_impulse34" ) == 0 || idStr::Icmp( idKeyInput::GetBinding( k ), "_impulse35" ) == 0 )
comfortCount++;
if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_right" ) == 0 || idStr::Icmp( idKeyInput::GetBinding( k ), "_left" ) == 0 )
analogCount++;
}
}
if ( analogCount > comfortCount )
value = 1;
Expand All @@ -417,25 +421,33 @@ void idMenuScreen_Shell_VR_Safety_Protocols::idMenuDataSource_Shell_VR_Safety_Pr
{
// continuous: unbind comfort mode turns and rebind normal turns
vr_comfortDelta.SetFloat( 10.0f );
for (int k = 0; k < K_LAST_KEY; k++)
for (int k = K_JOY17; k < K_R_STEAMVRTRIG; k++)
{
if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_impulse34" ) == 0 )
idKeyInput::SetBinding( k, "_right" );
else if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_impulse35" ) == 0 )
idKeyInput::SetBinding( k, "_left" );
// Don't change gamepad, because it has both modes mapped at once
if (k < K_JOY_STICK1_UP || k > K_JOY_TRIGGER2)
{
if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_impulse34" ) == 0 )
idKeyInput::SetBinding( k, "_right" );
else if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_impulse35" ) == 0 )
idKeyInput::SetBinding( k, "_left" );
}
}
}
else
{
// enable snap turns
// unbind normal turns and rebind comfort mode turns
vr_comfortDelta.SetFloat( value );
for (int k = 0; k < K_LAST_KEY; k++)
for (int k = K_JOY17; k < K_R_STEAMVRTRIG; k++)
{
if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_right" ) == 0 )
idKeyInput::SetBinding( k, "_impulse34" );
else if ( idStr::Icmp(idKeyInput::GetBinding( k ), "_left" ) == 0 )
idKeyInput::SetBinding( k, "_impulse35" );
// Don't change gamepad, because it has both modes mapped at once
if (k < K_JOY_STICK1_UP || k > K_JOY_TRIGGER2)
{
if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_right" ) == 0 )
idKeyInput::SetBinding( k, "_impulse34" );
else if ( idStr::Icmp(idKeyInput::GetBinding( k ), "_left" ) == 0 )
idKeyInput::SetBinding( k, "_impulse35" );
}
}
}
break;
Expand Down Expand Up @@ -522,12 +534,16 @@ idSWFScriptVar idMenuScreen_Shell_VR_Safety_Protocols::idMenuDataSource_Shell_VR
{
float f = vr_comfortDelta.GetFloat();
int comfortCount = 0, analogCount = 0;
for (int k = K_JOY1; k < K_JOY_DPAD_RIGHT; k++)
for (int k = K_JOY17; k < K_R_STEAMVRTRIG; k++)
{
if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_impulse34" ) == 0 || idStr::Icmp( idKeyInput::GetBinding(k), "_impulse35" ) == 0 )
comfortCount++;
if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_right" ) == 0 || idStr::Icmp( idKeyInput::GetBinding(k), "_left" ) == 0 )
analogCount++;
// Don't count gamepad, because it has both modes mapped at once
if (k < K_JOY_STICK1_UP || k > K_JOY_TRIGGER2)
{
if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_impulse34" ) == 0 || idStr::Icmp( idKeyInput::GetBinding(k), "_impulse35" ) == 0 )
comfortCount++;
if ( idStr::Icmp( idKeyInput::GetBinding( k ), "_right" ) == 0 || idStr::Icmp( idKeyInput::GetBinding(k), "_left" ) == 0 )
analogCount++;
}
}

if (f < 0.5f || (analogCount==0 && comfortCount==0))
Expand Down
Loading

0 comments on commit d61f7b7

Please sign in to comment.