Codes4Fun / RBDOOM-3-BFG

Doom 3 BFG Edition with soft shadows, cleaned up source, Linux and 64 bit Support
GNU General Public License v3.0
181 stars 11 forks source link

Teleport locomotion? #28

Open asktoby opened 7 years ago

asktoby commented 7 years ago

I realise it might be game-breaking but I'd really appreciate the option to teleport.

Nagorak commented 7 years ago

I was thinking about this lately, and I think teleport locomotion could be integrated in the game. It seems like the concern is that it could break the game by skipping over trigger points or allowing you to reach areas that you're not supposed to be able to. I think that could be solved with the following system:

The "ghost marine" could either be visible or invisible. I can see pros and cons for both. With visible it would be less jarring if it stops short of the destination, since you'd see it physically stop and have a sense of where you now are. It would also make it so that you could "dodge" in combat by teleporting, with your hit box staying with the marine as it moves (can't shoot until back in your body). Orientation I'd keep relative to the headset, regardless of which way the physical "ghost" is facing (too confusing otherwise and annoying having to keep rotating around).

Invisible would have the advantage of being more instantaneous (no need to wait for marine to run to the location), and you wouldn't break immersion by being outside "your body". However, we're talking about teleporting which is breaking immersion anyway.

Basically visible marine would actually be part of the movement method (decoupling your view from the model's location in-game), whereas invisible marine is basically just a quick check of every space in the path to see if there is a trigger or obstruction (and may be easier to implement for that reason).

I added a $20 bounty on teleport locomotion, so if anyone else wants this, consider adding to it in order to show your support.

Codes4Fun commented 7 years ago

I definitely wanted to add teleporting to the engine, I have some ideas for mods and standalone games a few which would work well with teleporting. But I have been hoping to also find the best locomotion controls for the most people for doing those kinds of mods/games also.

One idea I had was to have a special weapon, like the one in Unreal Tournament, that launches a puck and you can then teleport to the puck (I also wanted that you can attach the flashlight to your body or to your gun, like Hot Dogs, Horse Shoes, and Hand Grenades, to free up your left hand). From what I know about this engine, it seemed like the easiest way to add teleporting, but as you say it has the potential to break the game and kind of skip content, but I figured people wouldn't mind that for a game not designed for VR.

The Ghost Marine is an interesting idea, I would need to learn more about pathfinding in the engine though.

jeffscottward commented 7 years ago

Been speaking to a bunch of people it seems that Onward has the best locomotion controls because turning is something that you have to do physically. Strafing is tolatble and is expected like WASD but let the person's head and body navigate. That's with the sickness comes from

jeffscottward commented 7 years ago

Tolerable, where This mod made me very sick and I'm convinced that's why. Try Onward yourself

jeffscottward commented 7 years ago

Also the walking speed. Sorry I have no edit button on mobile

asktoby commented 7 years ago

I've just been playing Serious Sam The First Encounter VR and they've done a brilliant job of adding teleportation onto an old FPS.

Codes4Fun commented 7 years ago

@jeffscottward, if you think there is some issue with movement locomotion, please create a separate issue, and while you have said you have talked to a bunch of people (so have I!), I have to wonder if you have actually played Onward or this mod (in its default configuration), since they work very similar. Both require you to physically turn (by default). Both have forward movement based upon the direction of the left controller and not by look direction (but you can changed that with vr_moveDirection). Both have the left trackpad working as an analog joystick, strafing and all (this can also be changed). And by default Doom 3 now has 3 speeds, a slower walk speed (can be made lower by changing vr_moveSpeed) and the original walk and run speeds. And it does click to change speed like Onward (which is also configurable). Maybe we've configured Onward differently, and you want to configure Doom 3 to work in a similar way in which you have configured Onward, then open up a new issue and lets not spam this one.

Codes4Fun commented 7 years ago

@asktoby, I tried SS TFE VR, and I wonder does this work for most people? You are still moving (not really a teleport) but you are simply moving at a real fast speed. If this works for most people, I've had a theory that locomotion which breaks immersion (like extremely fast movements), also makes the subconscious part of the brain to not accept motion as real which the brain then doesn't send the signals to the digestive system which lead to motion sickness. I think this may also be why some people claim their motion sickness was cured after playing earlier versions of the Doom 3 mod, because the speeds were fast enough to break the association in their brain.

asktoby commented 7 years ago

I can't speak for most people but SS:TFE works for me.

As well as the quantised WASD movement, they also offer a "The Lab" style teleport. Both are useful for different reasons; The quantised WASD is useful when in a fight, and the "Lab" style teleport is useful when you want to stand in a precision location, e.g. to pick up a piece of armour.

Doom 3 locations are much smaller than SS:TFE so the quantised WASD steps might have to be smaller to be useful.

Nagorak commented 7 years ago

I'll pick up the SS VR: TFE and give it a try and let you know. I'll also give this mod another try and give feedback. I think one major difference between SS and D3 is that Doom 3 is very tight quarters. I've found motion sickness is less bad "outside" when the reference for your motion is further away.

Nagorak commented 7 years ago

I gave SS VR: TFE a shot. Sort of as I expected track pad locomotion is OK outside, but inside it's bad. The reference in your peripheral vision seems to be a big part of what causes problems. So, if you're far away from everything, then it's OK, but in tight quarters it causes problems (and D3 is all tight quarters). I was sort of doing OK inside for a little bit, but then I lost control, got disoriented and almost immediately felt sick.

With the teleport locomotion I don't have any problems. The teleport locomotion in that game works really well. Basically there are two options:

1) Press down on the touch pad and you can then teleport sort of like in The Lab, although it does a dash instead of a blink (fade out). The only advantage of this is you can fine tune exactly where you end up.

2) Tap any direction on the pad and you'll move a certain distance in that direction (I'd say maybe 10 "feet"). So basically you can strafe side to side by blinking as well as move forward and back. You still cross everything in your path, so you get any pickups you pass through. This method is actually much more useful to the point I rarely bother with the first one.

Actually, I'm now thinking that method 2 could be the easiest way to implement teleportation in D3. It basically just moves you very fast in that direction--fast enough that there aren't any intervening frames. If you collide with something, like a wall, then you stop (just as if you pushed up against a wall with normal movement).

So, to implement in D3, all it might take is making a movement method where a tap on the touch pad direction moves forward say 5-10 steps at max velocity, and then sets velocity back to 0. You technically still pass through everything in your path, so there's no risk of not triggering something, or missing a pickup. You just don't see it because you move so fast you just "jump" forward.

Codes4Fun commented 7 years ago

What makes the lab style teleportation difficult is more about knowing if you can teleport to that location, it also requires adding code to draw an indicator as to where you will be teleporting to.

But it is still not going to be that easy. It took me a while to get physics right with just integrating head tracking with controller movement, for the longest time I had been doing it wrong, and that took me longer and more trial and error to figure out how to get head leaning working. I had weird issues for example where being too close to a wall your entire velocity would be extremely slow, in the end I had to create separate applications of velocity, controller based velocity and head tracking based velocity, but even then when you try to lean over something that would put velocity against the wall and would cause incredibly annoying shaking (probably make people sick) as the player physics tried to climb the wall, so I had to change it to do one collision at high velocity and follow up collision tests (for sliding against things) I do at a much more reduced velocity.

So for this, I imagine some difficulty will be because of stairs and slopes, I'm not sure if the higher velocity could possibly toss you up into the air, so there may be a slight free fall.

It may even not make sense to use player physics at all, and just do small teleports.

Codes4Fun commented 7 years ago

I forgot also, jumping and climbing are still an issue. There are several places in the game where you need to jump up and over boxes or across chasms, and you need to climb ladders. It is still a rather complex thing to solve.

asktoby commented 7 years ago

Maybe one could work around tricky areas like chasms, crates, and ladders by editing the levels themselves to add footbridges, delete crates, and put teleports at the top and bottom of ladders.