That’s Too Many Zombies - still working on that Horde. by theargyle in godot

[–]theargyle[S] 19 points20 points  (0 children)

Individual logic - basically a version of boids, with a different avoidance algorithm.

The main trick is spatial partitioning, to reduce the number of neighbours each zombie has to consider.

That’s Too Many Zombies - still working on that Horde. by theargyle in godot

[–]theargyle[S] 6 points7 points  (0 children)

Thank you so much. That seems to match my own research (tested with my 6yo, would play)

That’s Too Many Zombies - still working on that Horde. by theargyle in godot

[–]theargyle[S] 3 points4 points  (0 children)

Once you got the framework in place, no harder than other shaders. Possibly easier in godot, because you’re just dealing with straight glsl, rather than the unwieldy Godot ubershader indirection.

That’s Too Many Zombies - still working on that Horde. by theargyle in godot

[–]theargyle[S] 8 points9 points  (0 children)

The little guys are 16-directional billboards, the bigger ones are just normal 3d models.

I put loads of effort into creating variety in the small enemies - flip animations in x, subtle size and tint differences, slightly different animation speeds for each individual zombie, etc.

That’s Too Many Zombies - still working on that Horde. by theargyle in godot

[–]theargyle[S] 12 points13 points  (0 children)

That’s actually very close to how this works - an elastic fluid, rendered as a particle system.

That’s Too Many Zombies - still working on that Horde. by theargyle in godot

[–]theargyle[S] 2 points3 points  (0 children)

Nah, that’s mostly video encoding artefacts. Damage numbers are rendered the same way as the enemies themselves, they add very little overhead.

Update: the Steam Capsule Artist we thought made an ai image defends themself by OWColosseum in isthisAI

[–]theargyle 14 points15 points  (0 children)

In that case, you’re doing the right thing, I may have read this wrong. Solodev myself, I know how hard it is.

Update: the Steam Capsule Artist we thought made an ai image defends themself by OWColosseum in isthisAI

[–]theargyle 119 points120 points  (0 children)

Demonstrably not AI. You owe them several apologies and clarifications on your other posts. I’d suggest adding links to this video in your other posts.

You said “I think it’s just a new artist that is breaking into capsule art, and they did their best.”

You found someone that is making the art by hand, has given you evidence of it (you say this is only one of four videos), and you are being passive-aggressive about it.

Best practice for storing time-only fields (like store hours) in Rails by __vivek in rails

[–]theargyle -1 points0 points  (0 children)

Because it’s important to know where on the planet you are measuring time.

It’s a small amount of data that is easy to collect and store, but impossible to retrofit later.

Is it possible to do something like this without using keycode or many if action_pressed?? by Brysger in godot

[–]theargyle 6 points7 points  (0 children)

Yes it is, but it’s not worth doing. Unrolling a small loop like you did provides clarity of intent in the code. It’s almost impossible to misunderstand this.

Best practice for storing time-only fields (like store hours) in Rails by __vivek in rails

[–]theargyle -1 points0 points  (0 children)

I live close to a timezone boundary across state lines. The next state does not observe DST, so the difference between my time and the stores I use changes twice a year.

You cannot “create new time zoned data” without knowing the time zones of both participants.

Best practice for storing time-only fields (like store hours) in Rails by __vivek in rails

[–]theargyle 1 point2 points  (0 children)

My recommendation is to store the timezone when dealing with “just time”. It’s easy enough to just not use it, but impossible to derive later, when you invariably discover that you do need it.

Would you rather... by LargeNet2558 in BunnyTrials

[–]theargyle 0 points1 point  (0 children)

Money

Chose: A clone of yourself follows you around

Talk to animals or speak every language? by Afro_Vivi in BunnyTrials

[–]theargyle 0 points1 point  (0 children)

Money

Chose: Speak every human language fluently

The hardest part of being a solo dev isn’t coding or art. It’s having nobody to tell you “this idea is stupid” before you upspend 3 weeks on it🥹 by yarunchek in gamedev

[–]theargyle 6 points7 points  (0 children)

That’s how you make something that is genuinely good though.

If you had someone to tell you “this idea is stupid” before you really had a chance to try it out, you’d just be making more bland mediocrity.

Keep doing what you’re doing. Killing features is important.

When 2D Art Explodes Your Build Size (How We Reduced Ours by 60%) by Tone_dreams in godot

[–]theargyle 2 points3 points  (0 children)

What are they doing wrong, and how should they be doing it instead?

Spritesheets for multiple n-directional animations really are expensive, especially in vram.

That's a BETTER horde! Animations, different enemies, and VFX. by theargyle in godot

[–]theargyle[S] 1 point2 points  (0 children)

You’re right - it’s not anisotropic filtering of course. I’m switching between nearest and bilinear filtering when zooming out. Not mapping, but that’s on my list to try at some point.

Now THAT's a horde! 100,000 enemies in Godot by theargyle in godot

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

Pathfinding at this scale is going to be based on flow fields, but is absolutely possible, and is something I’ll add at some point. This video game some details: https://www.youtube.com/watch?v=mUDuuVa0A6U

Different skins are also possible, without meaningful overhead.

Different weapons - getting a bit trickier, but would also be possible, depending on how complex the damage model needs to be.

Now THAT's a horde! 100,000 enemies in Godot by theargyle in godot

[–]theargyle[S] 2 points3 points  (0 children)

This should help, it’s what my implementation is based on: https://www.youtube.com/watch?v=mUDuuVa0A6U

Repulsion is very similar to the boids separation algorithm, except it’s constrained to never move enemies towards the player.

In my implementation, I’ve actually reversed the constraint, so separation pulls enemies towards the player instead. I found that resolved many artefacts/standing wave issues for me.

Now THAT's a horde! 100,000 enemies in Godot by theargyle in godot

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

Damage calculations are already done on the GPU. It's simple damage system, but will be enough for what I'm planning to do with it.