Multiplayer Physics in Action Adventure Games

Started by
3 comments, last by hplus0603 3 years, 9 months ago

Are there any major challenges to creating a game around cooperative physics based puzzles solving?

This is in the style of "Player and A.I." assisted action adventure games such as Ico (PS2), Prince of Persia (PS3), Majin and the Forsaken Kingdom, Uncharted, and Enslaved, for example.

I'm making a game similar too these titles but online multiplayer, with multiple players solving puzzles together. I'm stretching convention to 6 players btw.

Challenges I've already thought of:

  • Player drops or leave = Puzzles scale to player count
  • Planning and communication = Series of descriptive icons (no voice chat or typing, for security reasons)
  • Character roles are unique within the puzzle = No Character Duplicates
  • Special Interactivity = Groups of Assets are tied to Playable Characters
  • Major Puzzles are in special rooms = save and load section areas

This in Unity. Any thoughts?

Advertisement

Physics can get squirrelly in multiplayer, where two different players will think they're pushing the same blocks in different directions. Try piling 200 cubes and spheres of different sizes into a room and have six players walking around and see whether it gets glitchy.

You also have the challenge of things where players need to collaborate. If you're on a network, having two players both attached to one rigid body will not work out well, because of the latency. In fact, even attaching a single player to a rigid body has problems, but those are solvable by trusting the client for that one body. (Until that body collides with a second player.)

enum Bool { True, False, FileNotFound };

@hplus0603 Thanks, I will research this.

Quick thought? Can this by chance be fixed by setting “weight limits”, character "priority" for assets, or some such?

The problem is much more fundamental than that. You have a dependency graph of who affects what joints/bodies in the physics simulation, and the graph has two different latencies/step offsets on the two different client machines. Unless you delay all client simulation until all inputs for all other clients are known for a given step (which generates a lot of control latency,) this will always generate pretty severe physics differences.

Note that even just “colliding” with another rigid body will create a joint between the colliders (the “contact joint”)

enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement