0
\$\begingroup\$

I'm looking for a method to simulate various objects' damage and destruction.

As far as I can see, Unreal Engine 4's Chaos can only simulate buildings, but I'm more interested in other type of objects. I found DestroyIt for Unity, but the author must manually create all destructions which is not really a simulation.

For example, if I had a TV sitting on a table, how could I simulate both the TV's and table's realistic destruction if something heavy falls on top of them?

\$\endgroup\$
3
  • 1
    \$\begingroup\$ I think you will be very hard-pressed to find a method to simulate the destruction of an object as specialized as a television without a lot of manual setup. There's no "engine" out there that knows what a TV is and how they break, so you'd need to manually set up geometry/metadata for the glass, polymer, metal, electronics, and probably a custom destruction reaction script for what happens to the display if the TV was on. Not to mention providing custom sounds, because while you may be able to expect stock wood thumps and splintering, no engine is going to come with a built-in TV crunch sound \$\endgroup\$ – DMGregory Aug 14 '20 at 13:13
  • \$\begingroup\$ But if I had objects with set materials etc. and we pretend TV is always off? :) \$\endgroup\$ – jimmy Aug 14 '20 at 13:16
  • 3
    \$\begingroup\$ That's the manual setup, and you'd likely need a lot of it. Your typical game asset is like a papercraft model: an infinitesimally thin shell that gives the right surface appearance, with none of the internal structure that makes real objects work the way they do. Just about any time an object does something interesting in a game, it's an elaborate magic trick that had to be painstakingly crafted. The state of the art in realtime procedural destruction is mostly chipping of homogeneous materials. It turns out we pay artists for a reason: replacing them with algorithms is HARD™. \$\endgroup\$ – DMGregory Aug 14 '20 at 13:18
0
\$\begingroup\$

As DMGregory said, realistic destruction effects are hard. You have to weigh realism against practicality when designing a game with high levels of destructibility. You can write an algorithm that can dynamically split a wooden table into several chunks of wooden debris, but you can't write an algorithm that knows what the inside of a TV looks like or which parts of a model are metal and which are plastic.

There are two approaches that immediately come to mind when I think about practical destructible objects and what I've seen in commercial games:

  1. A "gibs"-style approach, where when you smash something, it explodes into little bits of materials. The term "gibs" usually refers to organic gore that explodes from enemies when they are killed, such as bits of bone or chunks of flesh; however, the same principle can be applied to any object. For example, if you smash a table, it could explode into random chunks of wood. If you smash a modern TV, it could explode into chunks of metal, glass, plastic, and circuit boards. A large object should have more gibs and/or larger gibs than a small object. This isn't super realistic, but it's also a reasonably easy system to implement. You would just need to add a little bit of data to each destructible model indicating what kinds of gibs should come out of it, and in what proportion.

  2. When an object is smashed, it turns into several premade pieces of debris. For example, when the player smashes the table, the table model is removed and replaced with a ragdoll table-top and four ragdoll legs. If you smash a PC, maybe it's replaced with a ragdoll case, a ragdoll side panel, and a couple of ragdoll hard drives. You can see the problem here - if you want the ragdoll debris to match the object that was smashed, you have to create several separate ragdoll models for every single destructible object in your game.

One compromise is to use premade ragdoll debris for certain objects that are likely to be smashed/be more noticeable when they are smashed, and use the "gibs" approach for other objects.

\$\endgroup\$

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.