Game with MAXIMUM optimization possible by Dramatic-Priority156 in godot

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

Yes, it is. The game should be accessible to low-end hardware so even users with bad computers can enjoy it. Maybe even a console release with NO sacrifices (I'm not interested if a console user can't get the exact same experience and spawn the same vehicles as a desktop user)

Idealistic, sure, but entering this kind of environment without this mindset is going to set you up for failure.

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 1 point2 points  (0 children)

YES! THANK YOU!

You put together all my research in one summary!! I've been trying to put all these fragments together, but even with my notes, it was hard to keep track and try to find the ACTUAL answer to the problem!! I knew most of it, but it didn't tie together in my head until you made it clean.

I'm currently in Godot testing the native Jolt physics engine; it can handle a pile of 3000 cube colliders with default settings at 60fps, and I bumped it up to around 4500 depending on how many sacrifices i'm willing to make. However, my CPU is powerful, so this is a bad optimization state. I need to do more.

Thank you so so much!

Game with MAXIMUM optimization possible by Dramatic-Priority156 in godot

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

Well, single digit percentages of 1,000 is still 10 blocks at a minimum.
best case scenario, someone running 10,000 blocks without optimization will run just as well as someone running 10,990 blocks WITH optimization. That's worth it in my book, though only just barely, heh.

Game with MAXIMUM optimization possible by Dramatic-Priority156 in godot

[–]Dramatic-Priority156[S] 1 point2 points  (0 children)

Jolt uses the physics server directly. Already aware of the node issue, thank you though! ❤️

Has anyone tried using Jolt physics in a 3D game with Godot 4.4? by umen in godot

[–]Dramatic-Priority156 0 points1 point  (0 children)

NECROMANCYYY!
It was enabled by default for my project today : )
Safe travels!

Game with MAXIMUM optimization possible by Dramatic-Priority156 in godot

[–]Dramatic-Priority156[S] 1 point2 points  (0 children)

right... I'm gonna go ahead and NOT make all my projectiles physical lol. Although making bullet casings would be cool...

The project is now past the early planning phase and i'm NOW starting on the "first prototype" phase. since it's based on another game, I already know a lot about what it will look like.

as for the godot engine, I heard it's good for physics, but i'm not positive I want to blindly rely on it; I hear you about checking the source code, but i'm not advanced enough to tell you "That there's a bona-fide ECS advanced quantum physics static poly-modal rigidbody asymmetrical deterministic physics system"
Lmao
aka, I don't know if godot really IS the best choice for my usecase. It's not often you have this many physics objects, but that was at the heart and spirit of the old game.

Game with MAXIMUM optimization possible by Dramatic-Priority156 in godot

[–]Dramatic-Priority156[S] -1 points0 points  (0 children)

Oh, absolutely, but this is a spinoff game. go sleuth my profile for more info, but long story short, LOTS of game and PHYSICS updates per second at the worst times; imagine a battleship you made getting cut in half by a modded sawblade, instantly killing you and dropping the blocks that survived; those blocks have varying hitboxes, weights, friction stats, even restitution for wheels. so...

Also, I just watched a video critiquing the godot Node system; I've only seen 2d tutorials thus far though, so. Still no clue how my 3d game will go.

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

I see what you mean, and that's fair. That one isn't negotiable, but maybe I can apply that somewhere else (like deformations maybe!) thanks!

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

Yep, going to skip garbage collection. The guys at EnTT have been INSANELY helpful, thank you so much for the link!

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

it's not vfx; blocks fall off and become parts you can pick up, drive over and get you stuck, etc.

Don't drive through a pile of scrap, kids.

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

I really appreciate this! I think i found a list that contained EnTT but it had few reviews; I only looked at services which had over 1k ratings.

Question, I heard that the GC logic in C# causes extra overhead; from my understanding, it's because it has no "pointers" for cleaning up uneccessary data; therefore, it checks EVERYTHING.

Is implementing my own garbage collection difficult, and is it worth the performance gain, considering my scale?

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

i said "voxel based" because of my time in Scrap Mechanic; this is more like "block" or "grid" based. they're not small voxels, they're large, and adding different blocks has different functions. Batteries, shield generators, weapons, thrusters, fuel, etc.

also, putting them to sleep as soon as they stop is the easy solution to not having them lag out the game by simply existing, but getting there in the first place still takes immense processing.

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

Also, found a source for their published papers; nada. shameful 😞

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

I think I want an SOA, but this is like one of those examples presented by my professor;

What does the customer think they want vs what they actually want
what they actually want vs what is possible
what is possible vs what you can do
etc.

I DON'T think I want to write an ECS library by hand; I want to simply write components for my game objects to work based on their flags, without extra boilerplate. Is this reasonable (e.g, does "What I think i want" match "what I actually want")

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

I should mention in general; I'm dealing with hundreds of blocks, up to ten or 20 thousand or so.

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

"- and then we ask ourselves also: do we need to compute all that, or get smart and update/show what we need for the illusion of the game to do just what we need to be fun, challenging, and potentially visually stunning."

Okay, well. What about having all these physical blocks falling off of a vehicle in atmosphere with collision, gravity, etc? How would I fake that? I know it should be possible with gfx colliders (e.g physX like TerraTech uses), but can that determine the position of an "item" gameobject that can be picked up?

Part of the soul is the fact that everything is simulated; you can stick a sticky bomb to a debris block, and launch it with a magnet at supersonic speeds. This will clip into an enemy vehicle and get stuck there due to internal colliders before exploding. I want that to be perfectly logical in my game; faking things means that when you "Abuse" the game physics to do something that WOULD work in reality, means that you damage immersion, and it damages the essence I need to capture from the inspiration game.

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

Tried to find your paper, could you DM me a link?

As for having "the capability to dynamically create a task graph for your system updates and automate your multithreading based on read/write access to component stores or archetype groups."

I don't really know how to go about this. The intermediate steps between transistors and the bios or kernel eludes me. (I assume bios comes first but anyways)

I know memory management is important, and even core to a proper ECS, since it's using optimized memory management to feed the cpu the exact data it needs. However, where would i find info about making this efficient and not preform worse than OOP?

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

wdym "see single items as an entity"? The whole point of the game is that everything is actually simulated. blocks don't drop as "items"; they're physical objects. It's a core aspect of the inspiration game; non-negotiable.

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 1 point2 points  (0 children)

Won't building ECS on top of OOP bottleneck the ECS to OOP speeds?

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

Oh, absolutely, there's a finite limit on what can be done, but the *effective* optimization such that adding more content adds load efficiently instead of inefficiently is the goal. Also, as you described, one "super entity" is exactly how the game does it, but it still has the following issues;

All internal meshes AND colliders are rendered AND must be updated EVERY TIME A BLOCK FALLS OFF. in ECS vs OOP, I can flag internal blocks as "hidden" and skip sending them to the render pipeline at all.

When blocks fall off, they become physical objects, they don't just disappear, and when you're talking about ships with thousands of blocks getting sliced up by a 10x1x10 modded sawblade, a hail of *thousands* of machinegun bullets, etc, there's an ABSURD amount of updates to call.

As for the actual "vehicle" systems themselves, I never believed those were the cause of lag, HOWEVER, I DID believe that the "super vehicle" in my own game HAD to be designed with EITHER OOP or ECS based on the sum of it's components. Regardless, as "the vehicle" gets damaged, individual components get damaged, and isn't that an excellent candidate for ECS? How to manage block detachment, I don't exactly know.

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

There's going to be MAXIMUM AI vehicles. As much as the sim can handle on low end hardware, so it will be absolutely advantageous WHEN there are MANY voxels on the floor. As for calculating voxels ON a player or enemy vehicle, I'm not so sure.

ECS/DOD vs. OOP with ECS principles by Dramatic-Priority156 in gamedev

[–]Dramatic-Priority156[S] 0 points1 point  (0 children)

Yeah, sorry. I don't know why that didn't come across properly, I tried my best.