How can I implement World of Warcraft / Guild Wars 2 / etc like player movement, including jumping, without using a full-fledged physic system for my multiplayer game since players only collide with static environment? Clients can do prediction but the server is authoritive and does all final calculations to prevent cheating.

More detail

There are three types of sources for player displacement:

#1 Walking & Jumping

  • Players move & jump around kind of freely suggesting that the underlying system isn't just some kind of navmesh like for npc's, but more of a bare bones physic engine.
  • Collision only takes place between players and static environment.
  • So there are no physic entities pushing each other arround but only static geometry prohibiting movement of players.
  • There are no accelerations or forces, players are either at a set speed or stationary. This is always true even while in mid-air.
  • Players have no mid-air control
  • Players don't collide with each other
  • There are some static colliders that can be enabled/disabled (doors). Players are not pushed away by colliders spawning on top of them though.

#2 Displacement caused by abilities

This pretty obviously seems to be either:

  • a) Movement along a navmesh.
  • b) Knockbacks: Same logic that is used for jumps but with a different jump start angle.
  • c) Teleportation.

#3 Displacement of moving platforms

There are some moving platforms that displace players standing on top of them, acting as a mean of transportation. But they aren't too important for the question since:

  • They don't push players away that are in their way
  • Are at any time either at 100% travel velocity or not moving (aprubt start and stop)
  • Change direction of travel abpruptly
  • And should thus be more straight forward

Additional thoughts

  • At one point I thought that there might just be some cheesy jump logic on top of a nav mesh at work. Since the described behaviour was even possible back in 2004 (World of Warcraft).
  • But then to me the most difficult part seems to be the correct collision of a player character that is mid-air with a vertical surface since a navmesh most likely won't be of any help.

I hope that my question is different and more specific enaugh from this one to justify a sepereate question.

Too clearify:

I'm fine with using a physic engine but I don't need mass, forces or acceleration for realistic simulation of multiple moving physic agents. Players can't collide with each other. Only collision between players and static colliders as described above so I don't want to use engines that waste processing time on things that my use case doesn't require!

Thanks in advance!

  • \$\begingroup\$ It would help answers if you explained why you don't want to use a physics engine \$\endgroup\$ – Richard Tingle Sep 21 '19 at 21:45
  • \$\begingroup\$ Thanks for your feedback, I updated the question \$\endgroup\$ – Bartimaeus Sep 21 '19 at 22:42
  • \$\begingroup\$ I'm sorry, but I think that explaining how to implement every single one of the mechanics asked for in this question would be too broad. And we can not really recommend you a premade physics engine either. We generally don't provide technology recommendations. And even if we would, you didn't even tell us what programming language you are using. \$\endgroup\$ – Philipp Sep 22 '19 at 8:59
  • \$\begingroup\$ Ok thanks for your feedback, is it ok for me to rephrase the question to be about one concrete problem or should I create a seperate question? \$\endgroup\$ – Bartimaeus Sep 22 '19 at 9:45
  • \$\begingroup\$ @Bartimaeus Either is fine, since there are no answers yet. \$\endgroup\$ – Anko Oct 3 '19 at 11:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.