Advertisement

Chosing An Engine For A Heavy Physics-Based Game

Started by August 10, 2016 03:20 PM
5 comments, last by Metusm 8 years, 3 months ago

I'm a beginner, I've been learning 3d modeling, sound design, visual design, composing music, programming languages, researching lots of game-design stuff. And now I'm at the point where I think that it's time to start learning existing engines. Most of the projects I'm planning to work on are relying on physics a lot. I need precise collisions with not only script-based consequences, but also physics-based consequences, of course I want to have physics-based character animations, physics-based interaction and all that kind of stuff. Yes, I know that it all my sound like some newbie bullshit from the perspective of some experienced guys, It may seem to you that I don't know what the hell I am even talking about, and maybe you're right, but I'm just trying to explain myself. Oh, and I also want the whole environment (or at least some parts of it) to be interactive on the physics level (like that nvidia physX interactive fog/smoke from the Batman arkham series, for instance).

And here is the thing, while I'm in the process of trying to figure out which game-engine I should study first, the more I learn about them, the more I realize that physics engines are not really that good, that it takes a lot of effort and mindf**cking hacking to make even the simplest things. I mean even some basic cloth simulation may end up being a nightmare, working like sh*t. And I don't really know what I should do. And that's why I'm here, I need your help\advice. I'm just afraid of the fact that I will be learning some engine for a really long time, trying to make things I want to, going through tons of mindf***k just to end up with the realization that the engine I'm using is unsuitable for my purposes.

So what should I do? Should I just start working with Unity like everyone else? Maybe I'm just wrong about the whole thing? Or maybe there is a way for me? Maybe there is some engine that fits me perfectly?

Thank you.

We specialize in physics-based character animations, and I built our own engine to underpin everything. That was a choice made for a variety of reasons, but the big one for this discussion is that our physics is a customized version of Bullet. The stock library isn't sufficiently stable in solving certain types of problems (joints, soft body interactions) and so we went in and made the necessary changes ourselves. I don't think that's an ability any major engine gives you these days. Everyone assumes that oh, well we can just use the raw high level features in PhysX/Havok and that's enough to build what we need. It wasn't the case in doing physics animation, for us.

That said, I'd probably just roll with Unreal these days unless you have the experience and manpower to build from nothing.

SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Advertisement

As a beginner, I would use Unity. It's easy to make a physics-based game with Unity using only very simple scripts or even a visual logic editor like PlayMaker

It really just depends on exactly what you're trying to do for the projects. Unity's Phyx implementation is really basic. But if you're working with just standard physics based puzzles or rigid body dynamics, it's fine.

Other wise you might need to add on a physics module yourself.


You can also try custom building an engine that's optimized for physics. This one is probably way out of your level, but this method tends to work better than using unity, unreal, or cryengine.

We specialize in physics-based character animations, and I built our own engine to underpin everything. That was a choice made for a variety of reasons, but the big one for this discussion is that our physics is a customized version of Bullet. The stock library isn't sufficiently stable in solving certain types of problems (joints, soft body interactions) and so we went in and made the necessary changes ourselves. I don't think that's an ability any major engine gives you these days. Everyone assumes that oh, well we can just use the raw high level features in PhysX/Havok and that's enough to build what we need. It wasn't the case in doing physics animation, for us.

That said, I'd probably just roll with Unreal these days unless you have the experience and manpower to build from nothing.

Thank you for your reply. I just have a little question. Why Unreal but not Unity? Does it have a better physics integration? And yes, of course I don't have enough experience to build from nothing at the moment.

As a beginner, I would use Unity. It's easy to make a physics-based game with Unity using only very simple scripts or even a visual logic editor like PlayMaker

It really just depends on exactly what you're trying to do for the projects. Unity's Phyx implementation is really basic. But if you're working with just standard physics based puzzles or rigid body dynamics, it's fine.

Other wise you might need to add on a physics module yourself.


You can also try custom building an engine that's optimized for physics. This one is probably way out of your level, but this method tends to work better than using unity, unreal, or cryengine.

Thank you for the advice. Yes, Unity is simple and cool, but I was a bit frustrated after reading manuals\watching speeches of unity representatives about local physics. And now I'm trying to figure out is there any real difference between Unity's physics and, let's say, Unreal's physics? Or they all the same because they're based on Nvidia's Physics?

Yes, sadly, I don't think I'm capable of building a custom game engine, it's out of my level. And to get on that level I need to start with something, and now I'm trying to figure out where I should start. I mean I haven't even really worked with game engines before, and I want to figure out how they work before making a decision and being capable to build a one of my own.

As Promit said, don't be fooled by the marketing. No physics engine will give you usable high level behaviour out of the box, you will have to cobble that together yourself by taking the low level forces and constraints a physics engine gives you, and creating a ton of custom code that massages the physics engines output into something faintly realistic looking.

As long as you want to chuck a ball into the air, and have it fall down to earth driven by gravity, pretty much any physics engine has you covered. But even the bouncing of the ball off the ground and different objects might already be looking not 100% realistic.

Tried to create a realistic looking offroad racing game with a few arcade tweaks to make it more comfortable in Unity/Physx two years back. Spent most of my time using PhysX forces to correct the completly unrealistic behaviours of many physics components with code.

And no, going with Unreal Engine 4 will not help you. They also use this Trainwreck PhysX as their stock physics engine. Physics interface is different, but at least I wouldn't call it better. In the end, its the same components running under the hood, so don't expect to much.

Someone ported Bullet to Unity, that might be something to look into (didn't had the time yet), and there is havoc, but don't think you get that for free somewhere.

But the important takeaway is that the game engine you are using might not be tightly linked to the physics engine, so you can exchange that for a better alternative... while on the other hand, many game engines today just integrate PhysX and call it a day, leaving it to users of that engine to integrate Bullet or Havok if they need a different Physics engine.

Advertisement

Thank you for all your replies. After another pile of hours of desperate research I decided to stick with UE4 (At least for now, to start with.) for multiple reasons. One of them is the Nvidia FleX support. I hope it will work out.

This topic is closed to new replies.

Advertisement