Bagoum / danmokou

A bullet hell engine for Unity.
https://dmk.bagoum.com/docs/
Other
79 stars 13 forks source link

About Godot... #3

Open SlawekNowy opened 4 years ago

SlawekNowy commented 4 years ago

Hello. I found out this engine while searching for free cross-platform engine for danmaku. This may serve as a mega-thread to easily log issues for godot.

Issues:

Last one requires testing on my side. I also need to know how danmokou handles those things.

Bagoum commented 4 years ago

Thanks for your interest!

I'm not sure if I've mentioned this elsewhere but Godot's multi-mesh system isn't flexible enough to be used as a substitute for Unity. It only allows four custom float values per object. Currently, the standard bullet rendering pathway uses position/direction-- which would go to Transform-- as well as time, but recolorizable bullets also use eight floats to construct color gradients in the shader. This means that using Godot's system would disable any complex features like recolorizable bullets as well as limit the number of features that could be added in the future (eg. opacity might be added soon).

I would have to test expression trees in Godot, they're one of those things that are standard C# but easy to miss.

Property blocks and mesh reassignment are both standard Unity features. Property block usage looks like this:

pb.SetFloat("_Time", time);
renderer.SetMaterialPropertyBlock(pb);

and this allows having multiple renderers configure a single shader differently while sharing the same material. The linked ticket seems to indicate that 2D support for this feature will be added in Godot 4.0.

As for meshes, lasers and pathers require the ability to construct meshes in code and then do zero-garbage updates to vertex locations and uvs every frame.

SlawekNowy commented 4 years ago

As for the last point I found out recently about Polygon2D. It uses pooled version of array of points. Hovever it's not perfect, since to modify it essentially forces you to make a copy of it. This hovever can be easly modified to pass reference to object instead of a value. If said thing is possible, I'll inform you. Of course I forgot to mention that Godot is open-source.

EDIT: Grammar.

SlawekNowy commented 4 years ago

More about it here.

SlawekNowy commented 3 years ago

Problem is... version 4.0 has PackedArrays... which internally reconstructs such array. Ouch.

SlawekNowy commented 3 years ago

So... this requires custom module in C++...

Edit: Found something.. True, this is GDScript, but if this will still work at 4.0, we can port this very easily.

SlawekNowy commented 1 year ago

There's also this... https://godotengine.org/article/godot-40-gets-global-and-instance-shader-uniforms/ but I don't know how useful it is.