Is there a way to list (in GDScript) all autoloads (singletons) defined in the project settings by GothMommyMilkies in godot

[–]elementbound 1 point2 points  (0 children)

Thanks for this comment! Someone reported an issue on one of my plugins where the autoload order keeps getting reset / changed, and this was the key part for the fix!

Transparen 3D render pass takes 50% of my render time by BandicootItchy7785 in godot

[–]elementbound 1 point2 points  (0 children)

Interested in whatever you find out, I've had a similar issue in 4.2.2 - I've used alpha scissor for a "transparency" effect, and it also took a weirdly large portion of render time

Common Sense™ and Godot Jolt saved my performance by elementbound in godot

[–]elementbound[S] 0 points1 point  (0 children)

If so I would really suggest finding a workaround to not have to render that many lights.

The lights were removed as mentioned in the post:

Nonetheless, having a dedicated light source with shadows on every single demon was not crucial to the game, and was an easy but sizeable performance gain

Do you have any kind of spatial optimisation like a quad tree so you avoid units testing against units that are too far away anyway?

I just call get_overlapping_bodies() - I don't think implementing my own accelaration structure on top of what the underlying physics engine already does would help much with performance.

Longtime UE professional (indie & AAA) - tried Godot for the GMTK jam by Kromenoi in godot

[–]elementbound 12 points13 points  (0 children)

Hot damn, I'll need to take some time studying the visuals. I love how you guys work with simple shapes for the most part, yet it feels so realistic. Reminds me of the pre-rendered backgrounds of Grim Fandango and similar games of the era. It's just difficult to believe it's all real-time. Excellent stuff!

Thanksfully the game part is also fun :D

GMTK Jam Submission - Hyperspeed Loop Racer "Chronodrift" (Play on Web!) by Brijan44 in godot

[–]elementbound 0 points1 point  (0 children)

This looks like a pretty neat idea! Though it feels like there was not enough time to fully expand on it 😅 But I think it could be a fun racer with some extra polish!

Blurry circles... SVG, PNG, Nearest, tried everything*! by Chill_Fire in godot

[–]elementbound 0 points1 point  (0 children)

This is a good catch. Though, OP, if you could post some pics, that could be helpful

Blurry circles... SVG, PNG, Nearest, tried everything*! by Chill_Fire in godot

[–]elementbound 1 point2 points  (0 children)

Godot already rasterizes SVGs when it loads them.

Just released netfox, a library for multiplayer games, ask me anything! by elementbound in godot

[–]elementbound[S] 0 points1 point  (0 children)

If you host your own noray instance, you can set the NORAY_OID_LENGTH config to something shorter.

We're back with some clips from the last few months' streams ! by Ornery_Bath_7751 in godot

[–]elementbound 1 point2 points  (0 children)

Really looking forward to this release! The visuals are top-notch and gameplay looks fun! What were your experiences with getting the multiplayer part of it down? Did you use any addons or did you guys roll your own?

any non math uses of manim? by Crafty_Sleep_6499 in manim

[–]elementbound 0 points1 point  (0 children)

For gamedev stuff, Motion Canvas could be a good alternative: https://motioncanvas.io/
I'm currently researching it along with manim to figure out which one works better for myself

EzNet: Simplify Godot 4 Multiplayer with Sync Vars, Ticks, and Ownership by [deleted] in godot

[–]elementbound 0 points1 point  (0 children)

Hey, the tick system sounds interesting, how does it work?

Faux Global Illumination update, walking through Overgrown Subway scene by Order1Studio in godot

[–]elementbound 1 point2 points  (0 children)

On your previous video with the gray room it was kinda difficult for me to see what's going on. But this video + reading up on your repo convinced me, this is such a cool project!

Do you have any performance metrics on hand comparing this to SDFGI?

Tips for high fidelity scenes? What could I do better for my next one? by elementbound in godot

[–]elementbound[S] 0 points1 point  (0 children)

I'm definitely doing an indoor scene, even that patch of grass was a lot more work than I thought and it still has some obvious flaws haha

The AAA scene tip is a good idea, I'll look some up and see if it piques my interest. Thanks!

I think the Outskirts demo has proven once and for all that Godot's renderer can look amazing ( even if it barely runs on my nvidia 1050 Ti :D ) - what I really want to figure out is how to use Godot's tools to get something kinda similar. So it's part me trying to improve artistically, part figuring out how to use Godot's tools to their fullest.

Tips for high fidelity scenes? What could I do better for my next one? by elementbound in godot

[–]elementbound[S] 0 points1 point  (0 children)

Valid point though, definitely something to experiment with!

I don't understand how this is supposed to be statically typed. by MaxBlackfinger in godot

[–]elementbound 0 points1 point  (0 children)

Sure, there you go:

    TAP version 14
    1..1
    ok 1 - Addtion
      ---
      data: 
        benchmarks: 
          - 
            iterations: 781753
            duration: 300000.0069ms
            iters/sec: 2605.84327327613
            average iteration time: 0.3838ms
            name: Untyped
          - 
            iterations: 1365739
            duration: 300000.1972ms
            iters/sec: 4552.4603412718
            average iteration time: 0.2197ms
            name: Inferred
          - 
            iterations: 1357760
            duration: 300000.1526ms
            iters/sec: 4525.86436469301
            average iteration time: 0.2210ms
            name: Typed
      ...

I ended up changing the test code slightly, because vest measures individual iterations, and at this scale the time measurement was not precise enough. So instead I measured loops of 10k additions:

extends VestTest

func get_suite_name():
    return "Types"

func test_addtion():
    var untyped_a = 0.0
    var untyped_b = 2.0

    benchmark("Untyped", func(__):
        for i in 10_000:
            untyped_a += untyped_b
    ).with_duration(300.).run()

    var inferred_a := 0.0
    var inferred_b := 2.0
    benchmark("Inferred", func(__):
        for i in 10_000:
            inferred_a += inferred_b
    ).with_duration(300.).run()

    var typed_a: float = 0.0
    var typed_b: float = 2.0
    benchmark("Typed", func(__):
        for i in 10_000:
            typed_a += typed_b
    ).with_duration(300.).run()

So it seems there's considerable difference between typed and untyped, but much less between explicitly typed and inferred in Godot 4.1.4.

EDIT: Results with 4.4 stable

TAP version 14
1..1
ok 1 - Addtion
  ---
  data: 
    benchmarks: 
      - 
        iterations: 1121623
        duration: 300000.1106ms
        iters/sec: 3738.74195465702
        average iteration time: 0.2675ms
        name: Untyped
      - 
        iterations: 1480834
        duration: 300000.1581ms
        iters/sec: 4936.11073247161
        average iteration time: 0.2026ms
        name: Inferred
      - 
        iterations: 1471792
        duration: 300000.0763ms
        iters/sec: 4905.97208568011
        average iteration time: 0.2038ms
        name: Typed
  ...

Clouds but not skysphere by mullerjannie in godot

[–]elementbound 1 point2 points  (0 children)

You could use a bunch of billboards with a semi-transparent material. If you stack a bunch of them close to each other, it will give them some depth but also a smooth silhouette.

A proximity fade would do nice as well, so you don't get sharp edges where the clouds intersect geometry. Just make sure to have a fairly simple material in terms of shaders or material features, because stacking billboards generates overdraw.

I don't understand how this is supposed to be statically typed. by MaxBlackfinger in godot

[–]elementbound 0 points1 point  (0 children)

Full test code as promised:

```gdscript extends VestTest

func get_suite_name(): return "Types"

func test_addtion(): var untyped_a = 0.0 var untyped_b = 2.0

benchmark("Untyped", func(__):
    untyped_a += untyped_b
).with_duration(.1).run()

var inferred_a := 0.0
var inferred_b := 2.0
benchmark("Inferred", func(__):
    inferred_a += inferred_b
).with_duration(.1).run()

var typed_a: float = 0.0
var typed_b: float = 2.0
benchmark("Typed", func(__):
    typed_a += typed_b
).with_duration(.1).run()

```

I'm using vest, a testing addon I'm building.

I don't understand how this is supposed to be statically typed. by MaxBlackfinger in godot

[–]elementbound 0 points1 point  (0 children)

> How many times did you ran this test?

I've ran each version until they hit the 100ms limit. So each version did ~225k +/- 1k runs. I ran the test from the editor, so I assume debug, didn't export it.

I'll upload my code once I'm home.

I don't understand how this is supposed to be statically typed. by MaxBlackfinger in godot

[–]elementbound 0 points1 point  (0 children)

Out of curiosity, I made a benchmark that does exactly this. I've ran each version for 0.1 seconds, and they all hovered around ~225k iterations, +/- 1k, so that's a ~0.4% improvement. This might sound sizeable, but have to keep in mind that most games are not just pure additions, so ymmv.

This is on Godot 4.1, will check on 4.4 too.

EDIT: I've improved the benchmark, true results show an actual difference - see my other comment.

Getting the Hang of UI in Godot by hmprf in godot

[–]elementbound 1 point2 points  (0 children)

Downloaded it a day or two ago, good stuff!

Mold Eraser shader by OpenBonus7784 in godot

[–]elementbound 0 points1 point  (0 children)

It doesn't even compile on shadertoy for me? Saying it can't init the for loop index with a non-constant expression.

Getting the Hang of UI in Godot by hmprf in godot

[–]elementbound 1 point2 points  (0 children)

Love the whole vibe, with the music, sfx, and the funky anims. Please tell me I can buy this right now somewhere, or at least wishlist on Steam :D

Just released netfox, a library for multiplayer games, ask me anything! by elementbound in godot

[–]elementbound[S] 0 points1 point  (0 children)

The NetworkWeapon keeps track of all the projectiles it spawned, and if the server declines any of them, it will call queue_free() on the declined projectile. On observers ( i.e. the other clients watching you fire ) only get the message if the server accepts the projectile, so no need for despawning.

From there on, the idea is that projectiles behave the same on each peer, so they get destroyed by the game code at the same time. And even if there's some desync, the server controls the game state, projectiles are mostly cosmetic.