godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.17k stars 98 forks source link

Make a LiquidBody and a DestructibleBody node for cool real-time destruction events . . #2082

Open jasperbrooks79 opened 3 years ago

jasperbrooks79 commented 3 years ago

Describe the project you are working on

A Tomb raider game, where I need amazing ' catastophic ' or, disaster events, running, in real-time . .

Describe the problem or limitation you are having in your project

I need to make some effects, that are sort of, like this . . 2021-01-06 1613

And . . 2021-01-06 1612

Also . . . 2021-01-07 0950

And, I need them to run in real-time, and cause destruction, mayhem . .

I wanted to make a suggestion, that Godot maybe makes a ' custom ' physics engine, or new nodes, that can handle stuff, like this, call it, Armageddon Physics Motor, or worse . . I need to be able to simulate near - global destruction events, in real-time . . This is probably very complex, but since it might be cool or, just fun, wanted to suggest it, really need it, for my game stuff . . Maybe it's super-technical, or so, but I really need it . .

also, smoke effects, like this, a real time example, from google . . I THINK the tech and, algorhithms for making such stuff is available, not sure . . I need something, that really kicks ass, hopefully . . As a complete game dev, code and, 3D effects noob, it might be just impossible, but maybe Godot, can pull it off, thanks . . . 2021-01-07 0953

Also, fog, and rain, like a big hurricane, massive ' billowing ' or, dynamic fog walls, so on, hope, it can be done . . . Thanks . .

Describe the feature / enhancement and how it helps to overcome the problem or limitation

I'm not sure, maybe one could store the data on the SSD, and call them real time, the simulation data, maybe one would have to bake them or, pre-render them, but I need real-time stuff, for my game . . Might, be hopeless . . <3 . .

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

The ability to create such effects, in real-time, using perhaps new nodes or, brand-new custom, state-of-the-art physics engine, unparalleled, using the latest real-time simulations or, code, thanks . . . <3

If this enhancement will not be used often, can it be worked around with a few lines of script?

No, idea, sry . .

Is there a reason why this should be core and not an add-on in the asset library?

Well, maybe it's so ' big ', it could be an add-on, since not all games need it, either way, I need pro stuff, global destruction, chaos or, worse, bigger . . <3

Thanks, for your time, and all the help, I'm now beginner level Godot user, bec. of the amazing, wonderful community and, just all-round superb devs, mods and, community, thanks . . . <3 :DD :DD . .

jasperbrooks79 commented 3 years ago

Also, lightning and, boiling water physics . . maybe, written in native or, some crazy, far - out system or, cache . .

jasperbrooks79 commented 3 years ago

We're talking, Apocalypse level, Armageddon level destruction, so maybe call it ' Apocalypse Physics Engine ', or worse . . Thanks . . . .

very close, to this . . :O 2021-01-07 1006

or, more . . but, wilder, more intense . . Thanks . . .

SIsilicon commented 3 years ago

Quick question. You do realize the effects you've shown here were all done offline, right? Meaning that they're not done in realtime and are practically impossible to do in a video game where you'll have other things going on. The only one of the effects that look remotely feasible is the building destruction, which can be done without even adding anything to godot itself. And the asteroid smoke can be done with a particle system.

dsnopek commented 3 years ago

I'm not sure about this proposal as a whole: I think if someone is making a game that's focused on lots of big catastrophic set pieces, then doing some custom code in their game to support those makes sense -- we don't need this support in the engine for all games.

However, on one particular point, though: I think having a LiquidBody node in the engine would make sense.

I can't find the proposal for it right now, but I know the plan (per https://godotengine.org/article/camille-mohr-daurat-hired-work-physics) is to add pluggable physics engines to Godot 4.0, and some physics engines do have support for liquid bodies (ex. Flex, PhysX). So, having this node would allow you to take advantage of this feature if you were using a physics engine that supported, without needing to have some special node just for your particular physics engine, ie. a FlexLiquidBody node and a PhysXLiquidBody node.

There's probably other nodes that are used by a large subset of physics engines that could also make sense.

jasperbrooks79 commented 3 years ago

@SIsilicon @dsnopek Here's a short youtube video, of someone making ' voxel ' based real-time physics . . ( 2 minutes . . ) . . it's voxel based, but looks amazing, and it's live :OO . . .

https://www.youtube.com/watch?v=1R5WFZk86kE

The point is, there are more and more ' real - time ' simulations, of physics, and the real - time ones are looking so good, that it would work, pretty well . . another option might be to make some slower simulations, where one can render the results at a lower frame - rate, and save the out-put, to a not ' live ' video data, but that's not real - time . .

Point is, real - time simulations are constantly getting better, and I was thinking, maybe there are by now some good ones, that could work, in a video game . . to increase frame - rate, one might disable all the other game logic, like for a cut-scene, and only run the simulation, etc . . Was really hoping there'd be some amazing, new improvements to real-time stuff, so we could have that, Thanks . . .

Also . . https://www.youtube.com/watch?v=i4KWiq3guRU . . ( longer, 7 minutes ) . .

Was hoping, maybe Godot gurus could, find a realistic, real-time system . . . Thanks . . <3

dsnopek commented 3 years ago

I'm not saying "don't do real-time physics" - there's plenty of cool things you can do in real-time physics engines, including liquid simulations. I'm just not convinced that the level of simulation you're describing in your proposal makes sense in the core Godot engine, because most games don't need it. If you need it for your game, then, in my opinion, you should either implement these simulations in your game, or integrate a 3rd party physics engine/library that can support them.

jasperbrooks79 commented 3 years ago

the point is, if Godot could do this, any other lesser physics or, 'destruction' related stuff, could be run, also in cartoon or, stylized games . . scaling it down, it would answer all physics questions, involving, fluids, explosion, smoke, or more, so it's very useful, for any other use - case requiring, less ' big ' simulations, or so . .

the question is, can it be done, and should it be an add-on, not sure <3

Den lør. 9. jan. 2021 kl. 04.46 skrev David Snopek <notifications@github.com

:

I'm not saying "don't do real-time physics" - there's plenty of cool things you can do in real-time physics engines, including liquid simulations. I'm just not convinced that the level of simulation you're describing in your proposal makes sense in the core Godot engine, because most games don't need it. If you need it for your game, then, in my opinion, you should either implement these simulations in your game, or integrate a 3rd party physics engine/library that can support them.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/godotengine/godot-proposals/issues/2082#issuecomment-757089677, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOR5TLDWSI6QWGA26QBXHQTSY7GTBANCNFSM4VYVUUCQ .

NHodgesVFX commented 3 years ago

I have wanted Realtime fluid sim for small simulations like pouring, splashes, etc... Reduz has mentioned it might be possible to add, I should probably create a proposal for this. A lot of the effects in this proposal cant be done in realtime right now during an actual game. Some can like splashes but the majority of the effects listed here would need to be accomplished using shaders, particles, spritesheets, etc... All of which Godot already supports. It would be great to get some fluid, proper cloth and some destruction tools. Just keep in mind that even with those tools it would be limited in scale and you would still need to fallback to more traditional methods for larger scale or lower end hardware.

Created my own issue relating to fluid sim, that has more technical information and realtime examples. https://github.com/godotengine/godot-proposals/issues/2094

jasperbrooks79 commented 3 years ago

well, I was hoping there could be a fast, less accurate ' real - time ' effects, and a ' bake ' a simulation, also . . since SSD's are so fast, maybe all the data could be stored, on those . .

And, the code for it wouldn't have to be THAT big, or take up space, bec. it's only when you BAKE a simulation, that you begin storing large amounts, of data, so maybe it could be done, with 0.2 megabytes extra code, the large amount of data is only made, when you BAKE an effect or, simulation, not before . . . <3

I was hoping we could get something based of voxels or, ' small ' spheres, for a real-time effect, or so . . 2021-01-10 0133

Since, the GPU can handle a lot of parallel computations, it might be possible . . but, the result would be of course, not as good as pre - baked or, even pre - rendered effects . . I need something, that can make ' global destruction events ', meteor strikes, massive explosions and, large, devastating hurricanes and, earth-quakes . .

I was hoping, that like with GIProbe, one can BAKE things, that can't be run in real - time, there was an option, to sort of bake a simulation, into a less computationally requiring version, at run - time . . So, the ' bad ' graphics ' above, could look much better, after it has been ' baked ', ie. all the math done, it just has to ' replay ' the motions, ie. if real - time can handle 10.000 particles, one could bake the same simulation, but with 100.000 or, even 1.000.000 particles, and then store a compressed, ' approximate ' effect or, date . .

So, the BAKED version looks MUCH nicer, is more advanced . . 2021-01-10 0137

One could even make something, where it pre - renders a simulation, or event into a video, to make it REALLY fast, but that's where it prob. is a job, for Blender . .

I just need some system, that can generate realistic looking ' global destruction events ', like big meteor strikes or, roaring, devastating hurricanes or, so . . I see constant new papers and, examples of such things running real - time, but suppose one can run 10.000 ' water ' particles in real-time, ie. 60 FPS, then BAKING say 100.000 particles, might be possible, but take 10 minutes, or 20, or even 60 seconds, to ' bake ' 6 seconds, of event, which would be enough . .

I need, massive tidal waves, meteor strikes, large, tall buildings exploding or, being incinerated, wanted to make the proposal, since the Godot engine gods, pro - coders, might have some ideas, for getting this . .

a simulation, to render the destruction, of the world, pref. in real - time, with a bake option, to compress the data, for better detail . . <3 Thanks . . .

NHodgesVFX commented 3 years ago

If its prebaked it better to bake in blender or houdini. Then save to alembic or vat. keep in mind high quality sims can require 100s of gbs so you still have to be conservative with the scale of the effect and particle amount

jasperbrooks79 commented 3 years ago

also, if Godot could get just one, of such nodes, maybe a tidal wave or, fluid simulation, so it's not ALL these effects, at the same, just a FluidBody node, or so . . and, it doesn't matter if the first version is just voxel based, it's prob. something that will need to be improved, over time . .

also, a FluidBody node would need to be able to create a ' body ' of water, but also a ' hose ' of water, like a ' water ' or liquid source, that has a certain shape and, initial velocity and, direction or, so . .

it would need some ' emitter ' types, that are common use - cases . .

2021-01-10 0145

I simply need this for a game, and I need it to run fast, pref. at real - time, but an option to ' bake ' a simulation, and then, like how images are often compressed, there could be a sort of ' optimization ', so there's less date . . I need total catastrophes, or MASSIVE disasters, for a game, and might be fun, for some very talented people, to study this topic, both real - time and, baked simulation . . Wanted to ask, since the people here are mind-blowingly good, at really crazy, amazing stuff . .

Maybe, tech and, simulation is getting so good, or maybe Godot masters could make, something new, I need total devastation, massive disasters and, catastrophes . . Getting even ONE of these nodes, maybe some can be combined, would be amazing, not sure, thanks <3

End, of days stuff, Armageddon, epic cataclysm . . <3

NHodgesVFX commented 3 years ago

take look at my proposal https://github.com/godotengine/godot-proposals/issues/2094 as well, it doesn't cover baking but it does cover a practical way to implement fluid into godot also that fluid effect of the hose is completely doable in Realtime

jasperbrooks79 commented 3 years ago

that's exactly what I want, but it needs to support more large-scale things . .

I'd really like something like that, a ' disaster solver engine ', like, crazy tornados, effects . . .

I like everything in your proposal, I just need it to be BIGGER, that's all . . hope we could get some of these nodes, assuming it's possible, as an official add - on, or a built - in feature, that doesn't take a lot of space, until one BAKES the data, only THOSE games will get a larger file - size . . Thanks . . .

also, for such things, one would often use them during cut-scenes, so all the other game - logic is not running, when doing this stuff, character movement, all kinds of stuff get's freezed, so it ONLY runs that simulation, which should make it fast . .

what you suggested, is EXACTLY what I want, just bigger, more massive, larger - scale and, destruction, Thanks . . <3 :O :O . .

maybe this is something Juan, or another engine master god, can code in 2 - 3 weeks, boom, then it works, or so . . I have NO idea if, this is impossible . .

NHodgesVFX commented 3 years ago

I want that too but its going to be several years before its possible todo in realtime. But its possible to fake it at least. Not simulated but faked

https://www.youtube.com/watch?v=WCpiSPoI-gM https://www.youtube.com/watch?v=xvV90kdBCPQ

Here is an example of baked fluid in Godot that I did, you could make it high quality it was just a test so no reason. It uses VAT, ill see if i cant get it working properly, just need to fix the normals basically. https://user-images.githubusercontent.com/11403345/104111819-eb49b800-52b4-11eb-98f9-5a2337c16413.mp4

jasperbrooks79 commented 3 years ago

see, even if one could pre - render it, so it takes maybe 4 hours, to make a 10 second video, then one could play that back in Godot, so it fits the lighting, etc., in the scene or, event . .

then, store it in a video format, I need it for a game, where the Devil appears, and tries to destroy the planet with, disasters and, catastrophes, really dark, large - scale stuff or, world - wide devastation, or so . . :O <3 . .

point is, the actual simulation code wouldn't really make Godot much bigger, but those that use it, will bake the data, to a file, that might be 50 megabytes . . the actual solver or, algorhithm wouldn't need to make Godot much bigger, just the ' generated ' data, which could be streamed from a graphics card memory or, for even larger stuff, from the SSD, using heavy compression algorhithms, to remove un-needed or, so data, in the simulation, like in a fluid simulation, where it compresses areas, that don't really ' change ' or, need as much ' simulation ' resolution . .

Also, it might be cool, to see how it looks, a meteor hitting a sphere and, leaving a crater, etc . . or, a massive tidal wave hitting a RigidBody city, in real - time, or pre - baked, or even pre - rendered, so the lighting, other stuff, matches the engine, 100 %, <3 Thanks . .

jasperbrooks79 commented 3 years ago

@NHodgesVFX the stuff in your video is all I need, and for it to be able to flow, around RigidBodies, and knock them over, like cards, or make, them crumble, from the inside . .

I need, this >>

Concept, for teaser trailer, early work . . it's about the worst disasters, you can image, at all . . <3

Devil Coming 03

when the Devil appears, and tries to destroy the world, and heroes stop him, that's the story or, so on . . but, I need those amazing destruction events or, disasters . .

And, since the Godot experts and, masters are so amazing, it might be possible, to do, a low - res result in real - time, a medium - res result, where it's pre-baked, and compressed and, a high - res pre-render frames, of the simulation, not sure I'll need that . . Saw a demo of GPU particles, from a Godot con, with like 2.000.000 particles, was hoping we could get that in 3D, for fluids, wind and, explosions or, fires, etc . .

Need, Global destruction effects or, events, pref. in real - time, not sure is possible, thank you . . Might be, an engine expert, with experience, could add this, that's all . . .

jasperbrooks79 commented 3 years ago

that first video you showed, with tornado, was really nice . .

here's a open source wave simulator, that runs real - time, called Celeris, or so . .

https://viterbischool.usc.edu/news/2018/04/celeris-the-first-open-source-interactive-coastal-wave-modeling-software-that-runs-faster-than-real-time/

I don't understand the math, I just need the engine, to support Armageddon or, larger destruction, if possible, might be something a good coder could do, in 2 - 3 weeks, or a, proto-type . . :O

jasperbrooks79 commented 3 years ago

I need something like the tornado, in the video, where the clouds are on fire, there's lightning strikes, and demons and, monsters flying out, of the clouds, also . . <3 Thanks, hope, it's possible <3 ( I'll have to model the demons, myself, of course . .

jasperbrooks79 commented 3 years ago

Ideally, there would be a ' global simulation ' scale, like an LOD, where some calculations are made, at this level . .

2021-01-10 0228

where they could be, lower resolution, then as one needed, one could ZOOM in, like with LOD's, and the simulation gets more detailed . . so, one could simulate a storm, meteor impact, at that level . . it would have to be a very simple, ' LOD ' algorhithm, at THAT level, then as one zooms in, the blast creates massive walls of air, or water, explosions and, so on, that would then affect a scene, so one can make some common scenarios, using meteor ( rock ) impacts, and then as one zooms in, the resolution of the more ' local ' scene, get's more detailed . . basically, a meteor is just a rock, that hits another rock, in theory and, leaves a crater and, blast wave . . this would allow one to create all the scenes one needs, to ' simulation ' an event, that is cataclysmis or, apocalyptic . . :O :O . .

but, I have no idea, if this is possible, just see these papers and, youtube videos, with better and, better real - time stuff, water, explosions, fire and, wind, more and more, so it MIGHT be possible, I hope . .

Thanks . .

also, to make it even nicer, having a ' bake ' option, so the data doesn't require calculations, but can just be streamed, from graphics memory, or a SSD, might be enough :O . .

jasperbrooks79 commented 3 years ago

also, since this about simulating ' solids ', ' liquids ', ' gas ' or, ' fire ' ( smoke ) . .

then, it's a matter of, simulating the four elements, earth, water, air and, fire ( smoke, is maybe air, or so ) . .

and, ideally one would have to be able to start the simulation, from here . . >

2021-01-10 0242

like, you start with making a ' meteor ' in space, and then have it collide, with something . . that's the kind of simulation, I need . . and yes, it's very advanced, and will require amazing, optimized code . . <3

custom, grade - A shit and, code . . <3 :O :O . .

jasperbrooks79 commented 3 years ago

it's also something, where if Godot made it, then it'd be Godot's Physics engine or, solver . .

something ' new ' or, different, from the competitors or, other engine houses or, so . .

Global Destruction Physics Engine <3 . . .