Appropriate physic engine to use for my requirements

Greetings !

I’ve never used any physic engine in 3D, and I have only a tiny bit of experience with Box2D. Physics isn’t really my forte, so please be gentle with me :slight_smile: !

I’ve got these friends who’ve got an idea for a game. I’d gladly make a prototype for them, but I barely even know where to start. I’m not very much afraid by the usual stuff, such as getting realistic physics to rule a world, and getting characters to be controllable in such an environment.

What worries me are two of our requirements:

  • Two characters must be tied by a rope. The rope can’t be broken and it keeps them from moving far away from each other.
  • The rope must be able to detect collisions: when an object touches the rope, I need to know it, and I also need to know where the collision happened.

I see that Panda supports it’s own physics engine, ODE, Bullet and PhysX.
The rope thing is a central thing in the gameplay, and it’s probably what will require the most work. So if any of those engine can make the task easier for me, I’d be glad to know.

What do you think ? How easy would such a thing be to implement ? And what physics engine would be most appropriated (considering that apart from that, most of our physics will be pretty basic).

None of the available options will give you everything you need out of the box.

Bullet and PhysX (2.8) do have some limited support for soft bodies (the rope). But I am not very optimistic that their soft bodies will work fine when connected to kinematic bodies (the characters). And the original Bullet character controller is not the best.

On the other hand a rope can be simulated by a series of four of five joints. So the built in physics system is perfectly able to handle this. I think drwr once pointed us to a room in one of the Disney games where a ball has been hanging from the ceiling by a chain, implemented with the built-in physics engine.

So…

  • If you want to stay on the Python level then I recommend using the built-in physics.
  • If you are prepared to go down on th eC++ level and tinker with the existing Bullet module, and if you want to have more complex collision geometry then I would recommend using Bullet. I think the Bullet way will be more work in total, so I personally would go for the built-in physics in your case.

In both cases you will probably need to write you own custom character controller code, which interacts with the rope (the rope restrains the way the characters can move!)