KozGit / DOOM-3-BFG-VR

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

Gamepad Movement options need some improvements #224

Closed FrogJacuzzi closed 7 years ago

FrogJacuzzi commented 7 years ago

This post got long, in an effort to be precise. For the simplest fix, to keep this one user happy, please skip to the end. For some background on the wider issue, read on.

This issue pertains only to first person movement

(Third person does not interest me!)

There are probably console commands for the customisation I'm after, and I will of course look into these. (Update: No, there aren't!) But I think my suggestions for some extra menu options would benefit a lot of users.

My ideal console command/menu option is highlighted in bold.

I have a budget setup, (DK2, slightly under-spec PC, no Touch controllers) and an iron stomach, and I play gz3doom a great deal with no motion sickness. I mostly play seated, in a small space, with slightly too many leads around me for comfort. So turning my real body isn't much of an option and therefore, my fast turning is limited to a half-turn in the current incarnation of Doom3 BFG VR.

I can find no way to turn the body quickly, because the turning controls (right stick by default) first move the weapon, before eventually turning the body. The step-wise 'comfort turn' is possible, of course, but it is cumbersome to have so many distinct controls, for body, head AND weapon, when using my standard XBox 360 controller. It all seems somewhat over-designed for my setup. (I also dislike the step-turn, having no need for it with my lack of motion sickness; it slightly breaks the immersion IMO. And it's actually hard to fight with; it can't circle strafe, and you can lose your sense of direction when pressing it quickly.)

I appreciate that different players have enough different ideal setups to make your head spin exactly the way I wish mine could! But it seems to me that only some very simple additions to the menus could cover far more cases.

Personally, I would be happy to have body, weapon and gaze all moving together (as in gz3doom), either in response to the right stick (with no delay), or in response to the headset orientation. Although this 'gaze-aiming' makes shooters almost too easy, that would be preferable to it being too hard in a way that feels artificial.

Here is, I think, a setup that would satisfy almost anyone, but which I seem unable to achieve by any combination of options:

Currently, I can ALMOST achieve that second setup, but I will be hunting for a console command that can change the range of independent weapon movement that is allowed, horizontally; I would set it to zero in the hope of restoring the standard, analogue, right-stick turn.

Cheers for all the effort so far; it's nice to have clear, unblurred vision in Doom 3, rather than what the older runtimes provided.

Update no. 1

I can't find the console commands I'm after, which makes answers to this post all the more important to me.

I've experimented a bit further, and found that gaze does in fact contribute to body and weapon directions, but only while moving. This is getting extremely complicated, for a movement system that can't really be customised in any of the ways I'm suggesting. I'll have to sum up. (This will repeat some of what went before.)

I've been trying the workaround of assigning the shoulder buttons to the comfort turn, and the D-pad to weapon selection. It takes some getting used to, and still forces me to use the comfort turn feature where I'd rather have a smooth, analogue turn and the ability to circle-strafe without my head unscrewing. But, at least I can control everything with only the usual number of fingers for a human.

Next, I'll be trying the workaround of so-called 'analog' comfort turns (in other words smooth ish, but not actually analogue) and this is assigned on the horizontal motion of the right stick. Nothing is assigned for directly affecting the horizontal weapon aim. Vertical aiming is still on the vertical motion of the same stick. It works, but it's jerky, and I have yet to see how well I can circle-strafe with only a fixed-speed turn available from the stick. (I wonder how well I'll be able to simulate an analogue control by use of pulse modulation -- blipping the control on and off? I'm good at it on a keyboard, but I think it would be slower and trickier through a stick. And frustrating. Cos it's a stick! Must I really simulate an analogue stick with an analogue stick, reduced to a digital one?!)

I think that with either of those workarounds, I'm going to need a lot of strafe-aiming, even for close-up fights. It's a shame that so much hard work on the movement system has resulted in something that is, for me, much less usable than if it hadn't been altered at all (as in gz3doom, where I can shoot anything both quickly and accurately, with my mighty face, while hurtling past in a mad diagonal jump).

It would be interesting to get feedback on how intensely other players are testing the game. There is a lot that's impressive, like all the videos working both in and out of the PDA, and there's a lot of wow-factor making it a good VR demo for visitors. (Exclude from that the insane arms. They're a whole separate issue that I'll raise later.) But personally I want to play the whole game through VR, and I want to do it on at least veteran difficulty. At the moment I'm taking a lot of unnecessary damage, due to the artificial fighting difficulties created by catering for the weakest stomachs.

Yes I can rise to the extra, arbitrary challenge of doing that with weird motion controls. But I'd rather not!

Update no. 2

I've now tried the second workaround. It is much easier to fight with, and yes I can even circle strafe around a choice of different radii, surprisingly accurately. But I know that the jerkiness will give me migraines, if I persist with it. Why oh why is this turning method named 'analog' when it is clearly discrete? Car controls and petrol pumps are analogue; the further they go, the more they do. This is on/off. That's a discrete control. Analogue is what we like in a game, and is what the menu offers, and what the original game gave us. But in this version, it is not available to seated players with wires.

Simplest possible fix

When 'comfort turn' is assigned to an analogue axis, it should be analogue, in the sense that a greater stick deflection results in a faster turn. This is not currently the case, even when the 'analog' option is selected.

KozGit commented 7 years ago

Hello!

Comfort turns will never be analog - it would defeat the entire purpose of having them for people who get motion sick.

I modified the input system so that any input ( button / axis / trigger / whatever ) can be used to activate any command or option. In the menus, selecting Analog turning simply binds the right to the normal turn right/left commands, and selecting Comfort binds the right joy to the binary comfort turn impulse. You can still bind the other turning mode to any other controller button/axis simultaneously, which is why you can have comfort and smooth ( analog ) active at the same time.

The console command you are looking for is vr_deadzoneYaw. This controls how far the arm turns before the body does. If you start a new game, and aim your weapon forward, setting this to 0 will make the player body and gun move together instantly when you turn the player,

Looks like vr_bodyToMove isn't working correctly, it's supposed to allow you either align the body to the view or move directions - I must have broken it at some point. I probably also need to add face aiming as well. Unfortunately, it may be a bit before I can take a look at the gamepad code again, sorry for the issues.

FrogJacuzzi commented 7 years ago

Comfort turns will never be analog - it would defeat the entire purpose of having them for people who get motion sick.

I understand that and agree -- or at least, what I described would no longer be appropriately named a comfort turn any more. I was just trying to suggest the smallest change possible that would achieve the desired results. Even if it never got implemented even as a stop-gap, (and doesn't need to be as there is such a console command after all), the idea conveys the kind of motion I'd be most happy playing with.

The console command you are looking for is vr_deadzoneYaw.

Thankyou! Yes it is from the sound of it. I'll try that today.

Looks like vr_bodyToMove isn't working correctly,

Or at least, something isn't working on my particular installation! Or maybe even I've mis-remembered and mis-described things by not going back to it frequently enough while writing. If you want me to recheck any details just ask; I'll keep an eye on this thread for a while.

I have mucked about quite a bit, before achieving the current setup. But I suppose it's still worthwhile to try reprodrucing the problem. Personally I think my setup will be fine now, given the movement that I'm personally after.

Another thing to try reproducing would be the way my controller assignments wouldn't take effect (but were remembered in the menus) at one stage. (I reinstalled everything, then realised that didn't have the desired effect, looked further and of course later I discovered that I actually had to delete a config file from my user profile folder.)

The problem occurred after I looked at a picture of the controller layout in the menu, at a menu-depth I hadn't been to before. I haven't been to that menu screen since, and the problem hasn't happened. I'll keep an eye on it though, in case it happens again. I do sometimes like comfort turns, in the quieter, more exploratory situations.

The comfort turn options wouldn't work, except they would still make the HUD disappear and reappear, as they usually do for me. That would be the other thing I've noticed, by the way! The HUD seems to disappear and reappear with my use of comfort turn controls -- but only when they're mapped to the D-pad. I had expected a fast flicker when I assigned it to the right stick, and tried the fast-but-jerky-and-single-speed turning that I previously mentioned. But in fact, it stayed on the screen perfectly well in that case.

This is on Windows 10, all-AMD setup, modern Oculus runtime and a DK2, in case knowing that helps. 8-core Phenom with plenty 'o' GHz but slightly under the Oculus-recommended graphics card.

And yes, it's impressive that it all works as well as it does, given my stinginess :)

FrogJacuzzi commented 7 years ago

Everything works well now for me, both with controller and keyboard/mouse. To be most clear to the most people: I added the line

set vr_deadzoneYaw "0"

to the file

%UserProfile%\Saved Games\id Software\DOOM 3 BFG\Fully Possessed\vr_oculus.cfg

following the form of what was already in there. I'm disappointed to see I'm not actually good enough for Veteran with an XBox controller after all, and I'll have to choose between Marine and a mouse, but that's not BFG VR's fault.

It's now the most immersive and terrifying Doom I have, and I have awful lot of Doom.