cancel
Showing results for 
Search instead for 
Did you mean: 

Simple experiments with gamepad controls and VR

mrgreen72
Superstar
I thought I'd share some of the small experiments I'm making with gamepad controls. This is a WIP and nothing ground breaking or very exciting but it's I thought it would be as good a starting point as any for a discussion/collaboration on VR and gamepad controls.

*NEW UPDATE 2014-04-27*

This is based on SDK 0.2.5.

Ugly paste of the description from the readme file:

Simple experiments with VR and gamepad controls by Hugo Tremblay aka Mr.Green.

This has been made using the 360 controller on Windows.


*Press the Back button of the 360 controller to see the control options*

1 - Control Modes

You can cycle through the different control modes by using the left and right
D-Pad buttons of the 360 controller or the + and - keys of the keypad.


1.1 - OculusSDK

This is the default mode of the Oculus SDK. You walk in the direction you're
looking at.

Left analog stick: Walk forward/backward. Strafe left/right.
Right analog stick: Turn left/right.
Left analog click: 180° turn.
Left trigger: Run.

1.2 - FreeHead

This mode lets you look and walk in different directions.

Left analog stick: Walk forward/backward. Strafe left/right.
Right analog stick: Turn left/right.
Left analog click: 180° turn.
Left trigger: Run.

1.3 - FreeHeadLS

This mode is like the FreeHead mode with strafing and turning swapped to give full
control to the left stick.

Left analog stick: Walk forward/backward. Turn left/right.
Right analog stick: Strafe left/right.
Left analog click: 180° turn.
Left trigger: Run.

1.4 - HeadStick

This mode lets you turn with your head when you're moving (walking or strafing).

When you turn your head past a configurable angle (default 20°) to either the
left or right, you beging turning at a configurable senstivity, much like an analog
stick.

You can freely look around normally when not moving.

Also, it assumes that if you're looking up 15° or more, you're probably looking
at something and will NOT turn.

This mode is requires good VR legs.

Left analog stick: Walk forward/backward. Strafe left/right.
Right analog stick: Free.
Left analog click: 180° turn.
Left trigger: Run.

1.5 - FixedAngle

This mode is probably very similar to what CloudHead's VR Comfort Mode. You
walk in the direction you're looking at but you can make broader turns using
the left stick, which turns in fixed increments (default 20°). The angle is
configurable.

Left analog stick: Walk forward/backward. Strafe left/right.
Right analog stick: Turn left/right in fixed increments.
Left analog click: 180° turn.
Left trigger: Run.

1.6 - FixedAngleLS

This mode is identical to the FixedAngle mode except that it gives you full control
with the left stick and puts strafing on the right stick.

The strafing could be put as a button modifier or removed altogether, which would
leave the right stick free for a potentialy more useful role like a free gun aiming
mode for instance.

Left analog stick: Walk forward/backward. Turn left/right in fixed increments.
Right analog stick: Strafe left/right.
Left analog click: 180° turn.
Left trigger: Run.

1.7 - FixedAngleHead

This mode is a mix of FixedAngle and HeadStick.

When you turn your head past a configurable angle (default 20°) to either the
left or right, you will turn in that direction by that angle.

Left analog stick: Walk forward/backward. Strafe left/right.
Right analog stick: Free.
Left analog click: 180° turn.
Left trigger: Run.

1.8 - TurnButton

This mode lets the user set his orientation (walking direction) to where he's
looking at with the press of a button. Initiates a rotation by the delta
between the camera orientation and the "body" orientation. Both the camera and
the body rotate by the same angle, which lets the user recenter his head and have
the new orientation facing forward.

Kinda hard to explain, try it for yourself!

Left analog stick: Walk forward/backward. Strafe left/right.
Right analog stick: Turn left/right.
Left analog click: The Turn Button.
Left trigger: Run.


1.9 - TECHNOLUST

This mode has been demanded by Anticleric over at the Oculus forums for his game
TECHNOLUST.

It's meant as a very simple mode for newcomers. It lets you walk forward simply
by pressing the left bumper or X and goes in the direction you look at. Holding the
right trigger lets you look around freely when walking, and turns you to the
direction you're looking at when you release it.

It also has the FixedAngle functions on the analog sticks.

Left analog stick: Walk forward/backward. Strafe left/right.
Right analog stick: Turn left/right in 45° increments.
Left analog click: 180° turn.
Left trigger: Run.
Left bumper/X: Walk backward.
Right bumper/Y: Walk forward.
Right trigger press: Independent walking/looking directions.
Right trigger release: Sets the walking direction to the looking direction.


2 - Options

2.1 - "Blink" turning

Experimental function to alleviate discomfort while turning with a gamepad.

On [default]: The image goes dark while turning. Simulates the user blinking his eyes.
There's a "deadzone" which lets the user make very slight adjustments
without blinking.
Off [stock OVR SDK]: No change in the camera behavior while turning.

You can toggle this feature by pressing the right analog stick button on the 360
controller or by pressing CapsLock on the keyboard.

2.2 - Turn angle

Specifies by how many degrees fixed angle modes will turn.

For head controlled modes, this is also the angle you need to turn your head
to start turning.

Default is 20°. A minimum of 30° is recommended for the FixedAngleHead mode.

Home: Increases turn angle
End: Decreases turn angle.

2.3 - Smooth Turns

This applies to the automatic turning initiated by multiple functions: (Fixed angle
turns, 180° turns, Turn Button).

You can activate smooth turns if instant changes in the point of view when
turning are disorienting to you. Could cause motion sickness though.

On: The camera rotation is fast but perceptible.
Off [default]: Instant point of view change.

B button or ScrollLock: Toggle Smooth Turns.

2.4 - Turn speed

When using Smooth turns, sets the speed of the rotation in degrees/s

PageUp: Increases turn speed
PageDown: Decreases turn speed.

2.5 - Sensitivity

Analog stick and Head turning sensitivity (HeadStick mode).

PageUp: Increases turn speed
PageDown: Decreases turn speed.



Modified Tuscany demo - Windows - 64 bit

Unity package of the modified OVRPlayerController prefab - SDK 0.2.5
68 REPLIES 68

mrgreen72
Superstar
New update:

- New HeadStick mode.

This mode lets you turn with your head when you're moving (walking or strafing).

When you turn your head past a configurable angle (default 20°) to either the
left or right, you beging turning at a configurable senstivity, much like an analog
stick.

You can freely look around normally when not moving

Also, it assumes that if you're looking up 15° or more, you're probably looking
at something and will NOT turn.

- New FixedAngleHead mode.

This mode is a mix of FixedAngle and HeadStick.

When you turn your head past a configurable angle (default 20°) to either the
left or right, you will turn in that direction by that angle.

- Got rid of the ?&%$@! OVRPlayerControllerEditor class.

- Various changes to the UI and tweaks.


As usual, please see the OP for complete info!

cubytes
Protege
sweetness! i would love to hear feedback regarding these new modes!

mrgreen72
Superstar
"cubytes" wrote:
sweetness! i would love to hear feedback regarding these new modes!


Same here! :lol:

I take it you don't have a rift?

cubytes
Protege
negative I got into VR like a day before the fb acquisition announcement. been playing catch up ever since. gotta wait for the DK2...

but I think it will be worth the wait 🙂

mrgreen72
Superstar
"cubytes" wrote:
negative I got into VR like a day before the fb acquisition announcement. been playing catch up ever since. gotta wait for the DK2...

but I think it will be worth the wait 🙂


I've yet to demo it to anyone who isn't mind blown on contact. And it's just the "shitty" DK1.

They usually don't have any expectations though. As long as you don't expect it to be exactly like jacking into the matrix you should be okay. 🙂

Not sure if you had any intentions to do any development but it doesn't look like this one will come with a Unity Pro 4 months trial though, which is a bit of a bummer. But UE4 is basically free now so there's that. 🙂

cubytes
Protege
I'm all about game development. its just I don't have the skills.

personally i would like to try my hand at game design and just learn as much as i can as i go. I learn better in social settings then on my own anyways.

yea a bit of a pipe dream but that hasn't stopped me from chasing it 🙂

I do have beta testing experience. So theres always that to fall back if I fail to to assemble a team. I was on the frontlines of the mobile game gold rush when the app store first came out.

Now I'm on the fronlines of VR 🙂 ready willing and able to start a team or be a part of one.

Honestly I think we as a community should work together rather then compete. I really don't want to see the VR market turn out just like App Store clones clones and more clones....and subpar knockoffs driving a rush to zero.

PatimPatam
Protege
Hey mrgreen! Thanks a lot for this, very useful, and more discussion on this topic is needed! I've actually implemented some of these tests myself before, modifying Tuscany as well (without the polished interface), but didn't release it because i wanted to add a 1st person avatar and never got around it..

From your available modes, these are probably my favorites:

FixedAngle
Turn Angle: 30
Smooth Turns: Yes
Turn Speed: 350

HeadStick
Turn Angle: 10
Sensitivity: 3

Personally i didn't like BlinkTurning so much, i found it very distracting. But maybe for people with extreme cases of VR sickness it could be useful.

I also was not very fond of the Technolust mode; it's supposed to be simple but i actually found it a bit confusing, maybe with a bit more practice..


Here are some other modes that i think could be worth trying.. you don't have to implement them, just some suggestions 🙂

FixedAngle + FreeHead
FixedAngle (comfort mode) is a good idea, but personally i would prefer it if you didn't walk were you are looking. I think this also makes you more aware of where your body is facing, and gives more "meaning" to the turn stick.

HeadStick + TurnButton
Basically a turn button which instead of making you turn where you are looking, activates HeadStick mode (with turn angle = 0)

HeadMouse + TurnButton
Similar as the one before, but head rotation rotates your body 1 to 1. So if you rotate your head right 45 degrees your body turns 45 degrees right (in total your view turns 90 degrees, then you can release the button and align your head with your body again).

MotionTurn
Similar to FreeHead Mode but using motion controllers (Hydra or PS Move) yaw instead of thumbsticks, and activated via a turn button. I think the added accuracy and responsiveness provided could really help with motion sickness.

PositionalMove
Once we have positional tracking with CV2 we could use it to move around (press a "move" button to actívate and then lean forward to move forward for instance). I think it could work well in combination with HeadMouse or MotionTurn.


However as i mentioned before i believe all this could be even more handy if you could actually view your own avatar.. i'm starting to learn UE4 at the moment, so might give it a try myself!

cubytes
Protege
From your available modes, these are probably my favorites:

FixedAngle
Turn Angle: 30
Smooth Turns: Yes
Turn Speed: 350

HeadStick
Turn Angle: 10
Sensitivity: 3


awesome 🙂 thanks for sharing this. i was wondering how this would "feel". glad to hear that these above modes are your favorites! kudos to mrgreen for taking the time to experiment with it.

HeadStick + TurnButton
Basically a turn button which instead of making you turn where you are looking, activates HeadStick mode (with turn angle = 0)


you think HeadStick should be done only as an activated mode (like while holding a trigger)? or was this just a suggestion? when i was originally thinking about "swivel points" i was worried about it being broken by users jerking their head past the configurable angle during "shock moments". thus accidentally turning around and being disoriented as a result.....

PositionalMove
Once we have positional tracking with CV2 we could use it to move around (press a "move" button to actívate and then lean forward to move forward for instance). I think it could work well in combination with HeadMouse or MotionTurn.


yup thought about this too. would absolutely love to hear feedback regarding how this feels as well. especially in the context of being an activated mode. hopefully positional tracking in CV is accurate enough to facilitate this 🙂

mrgreen72
Superstar
"PatimPatam" wrote:
Hey mrgreen! Thanks a lot for this, very useful, and more discussion on this topic is needed! I've actually implemented some of these tests myself before, modifying Tuscany as well (without the polished interface), but didn't release it because i wanted to add a 1st person avatar and never got around it..

Ah! I wonder when you'd show up! 😄

I'm also working these on a more "gamey" experience. Actually, I'm using the Unity Stealth Tutorial assets because I'm not much of an artist. There's a first person avatar which is very cool but of course, I have a few issues I need to address with it. That's one hell of a topic in and of itself so I'll try not to derail my own thread here. :lol:

"PatimPatam" wrote:

From your available modes, these are probably my favorites:

FixedAngle
Turn Angle: 30
Smooth Turns: Yes
Turn Speed: 350

HeadStick
Turn Angle: 10
Sensitivity: 3

I'm pretty much there with you. On paper, I thought Turn Button would be the one but in practice, old habits die hard. We have decades (at least I have) of gamer muscle memory and our gamepads and mice the way we know them are so fucking comfy the right? :lol:

"PatimPatam" wrote:

Personally i didn't like BlinkTurning so much, i found it very distracting. But maybe for people with extreme cases of VR sickness it could be useful.


I've used my girlfriend as a guinea pig and she instantly appreciated that feature. She's not a gamer by any stretch of the imagination and would probably get motion sick just looking at me playing a FPS on a TV though.

Personally, I didn't think all that much about it at first and the more I've used it the more I kinda think it should stick. I do get a little dizzy after playing too much and it really helped me. Sensitivity has to be high enough on the stick so that it really does feel like a blink, otherwise it really takes you out of the experience.

Like you said, It's definitely something you won't use unless you do have sim sickness issues, and that turning motion probably won't feel as bad with higher framerate and low persistence.

"PatimPatam" wrote:

I also was not very fond of the Technolust mode; it's supposed to be simple but i actually found it a bit confusing, maybe with a bit more practice..

Yeah I'm not too crazy about the triggers part either. 😉

"PatimPatam" wrote:

Here are some other modes that i think could be worth trying.. you don't have to implement them, just some suggestions 🙂

Awesome. I'm definitely gonna give those a shot!

Unfortunately I'm going out of time for work for the rest of the week with only a crappy laptop to work with so I won't be able to get back to this before Sunday. It's a freakin pain because I was having a lot of fun with this stuff.

"PatimPatam" wrote:

HeadMouse + TurnButton
Similar as the one before, but head rotation rotates your body 1 to 1. So if you rotate your head right 45 degrees your body turns 45 degrees right (in total your view turns 90 degrees, then you can release the button and align your head with your body again).

I'm not sure I fully get this one. It's gives the same result as the Turn Button but you have to hold and release it... I'm obviously missing something here.

"PatimPatam" wrote:

PositionalMove
Once we have positional tracking with CV2 we could use it to move around (press a "move" button to actívate and then lean forward to move forward for instance). I think it could work well in combination with HeadMouse or MotionTurn.

Yup! I'm right there with you. Can't wait!

"PatimPatam" wrote:

However as i mentioned before i believe all this could be even more handy if you could actually view your own avatar.. i'm starting to learn UE4 at the moment, so might give it a try myself!


I'm probably gonna move to UE4 myself now that they're basically giving it away! Looking forward to see your work!

PatimPatam
Protege
"cubytes" wrote:

"PatimPatam" wrote:
HeadStick + TurnButton
Basically a turn button which instead of making you turn where you are looking, activates HeadStick mode (with turn angle = 0)

You think HeadStick should be done only as an activated mode (like while holding a trigger)? or was this just a suggestion? when i was originally thinking about "swivel points" i was worried about it being broken by users jerking their head past the configurable angle during "shock moments". thus accidentally turning around and being disoriented as a result.....

Yeah personally i prefer it as an activated mode for a couple reasons:

Firstly because i want to be able to walk in one direction and look at any other direction at the same time.

Secondly because I think the turning speed should be gradual corresponding to how much you turn your head, which can be ensured if activated via a button (when you press the turn button you don't start turning until you actually move your head, even if it's altready not looking straight forward).

As it is now i find a bit confusing when you are stopped and looking for instance 90 degrees to your right, then press forward and it starts turning really fast. I think the main point of using head turning is that it always matches with your head turns.

"mrgreen72" wrote:

Unfortunately I'm going out of time for work for the rest of the week with only a crappy laptop to work with so I won't be able to get back to this before Sunday. It's a freakin pain because I was having a lot of fun with this stuff.

No worries mate, i know all about this feeling!

"mrgreen72" wrote:

"PatimPatam" wrote:

HeadMouse + TurnButton
Similar as the one before, but head rotation rotates your body 1 to 1. So if you rotate your head right 45 degrees your body turns 45 degrees right (in total your view turns 90 degrees, then you can release the button and align your head with your body again).

I'm not sure I fully get this one. It's gives the same result as the Turn Button but you have to hold and release it... I'm obviously missing something here.

Well the key words here are "1 to 1" (which actually, should be more like 1 to 2 as i'll explain later). It's basically the same difference between a thumbstick and a mouse type of control..

We actually know that the main cause of VR sickness is acceleration mistmaches between Real Life and VR, not velocity mistmaches (that's why games like "Shiny" are very comfortable to play). The problem with HeadStick mode (from a VR sickness perspective) is that even though you are using your head to rotate there is still a mismatch between RL and VR accelerations.

So with HeadStick mode when you turn your head for instance 30 degrees to the right what actually happens (approximately) is the following:
1- acceleration
2- fixed velocity turn (no acceleration)
3- deceleration
4- stopped (turned 30 degrees)

But from these 4 RL stages only the 1st one matches very briefly with what happens in VR:
1- fast acceleration
2- acceleration
3- slower acceleration
4- fixed velocity turn (no acceleration)

In contrast with HeadMouse mode you would press a button and then your avatar would turn only while your head is turning, so if you turn your head 30 degrees your VR head will turn 30 degrees and your VR body will turn 30 degrees as well (60 degrees total). The actual amount of acceleration would not match 1 to 1 (would be 1 to 2) but at least the acceleration forces would actually match between RL and VR. My theory is that the human brain is quite sensitive to acceleration type mismatches but not so much to actual acceleration values.


The only problem with this is that with a mouse we almost unconsciouslly lift it from the table and move it back to the "center". The equivalent action with HeadMouse would be to release the button when you have finished turning and then recenter your view (note that here accelerations match 1 to 1 again).

I'm really not sure how practical it would be for most people (if you want to turn 90 degrees it forces you to look 180 degrees in you virtual environment and then compensate) but i think it's worth experimenting with. Obviously you can also adjust the ratios, so for instance 30 degrees RL head turn corresponds to 30 degrees VR head turn + 60 degrees avatar turn (90 in total). I did actually implement this and it kind of works, still not sure if i like it very much.. i think i would need to see my own avatar in VR to make up my mind about it.

Ooops, sorry about the long rant.. all this is a bit difficult to explain using just words!