Very happy of having participated in Hitboxmakers game jam this weekend! You can test my game on itch.io :)
I may iterate on it, was overall satisfied with the result.
https://surmoi.itch.io/school-of-fish
#jam #unity #boids #gamedev
Boids! (Not birds, but boids.)
https://en.wikipedia.org/wiki/Boids
Emergent behavior!
https://en.wikipedia.org/wiki/Emergence
Out of chaos comes flock/school behavior...using just three simple rules.
This is all covered in the first 90 seconds of this video:
#boids #emergentbehavior #emergence #math #chaos
Autonome Agenten in Py5 (Teil 1)
Getreu meiner gestrigen Ankündigung habe ich damit angefangen, so etwas wie Boids in Py5, dem freundlichen Python3-Port von Processing zu implementieren. Da ich zum einen die Implementierung für alle nachvollziehbar machen wollte und zum anderen immer noch mein Vorhaben im Raum steht, eine (erweiterte) Fassung von Daniel Shiffmans »The Nature of Code« in Python zu schreiben …
https://kantel.github.io/posts/2022121201_autonome_agenten_py5/ #Python #Py5 #Processing #Boids #TheNatureOfCode
#python #py5 #processing #boids #TheNatureOfCode
So I got around to checking out your #boids project. You definitely have better performance than me from the SpatialHashSet you use.
I believe you can generalize this further for better performance by making the spatial structure recursive. Here's an example I whipped up a year or two back. Only works in 2d, but could be easily refactored to 3d as well:
https://gitlab.com/chihuamaranian/collisionlib2d
It's a #quadtree #spatialpartitioning structure.
#boids #quadtree #spatialpartitioning #gamedev #programming
I've gotten around to publishing the source for my first #godot project implementing #boids in 2D.
https://gitlab.com/chihuamaranian/boids
I dont expect I'll maintain this repo, but I want to keep it for reference (both for myself and anyone else curious)
#godot #boids #gamedev #programming #godotengine
I've added 'predators' to my #boids routine.
I've also refactored and extracted the Boids library away from the #godot specific classes. Anything that implements a fairly minimal IBoids interface can have flocking added.
Maybe I'll publish this in a public repo soon for the curious.
I find that 'emergent behavior' is fairly unruly when you have a goal in mind. I can see why this isn't something regularly found in production games. Its hard to control.
#boids #godot #gamedev #programming #godotengine
I've been learning #godot for a little over a week now, and I have some #boids to show for it.
For context, 'Boids' are entities that exhibit complex emergent 'flocking' steering behavior from a combination of three more basic drives: "seek", "flee", and "align".
I've been struggling with adding more complex wall colliders. Not sure where I'm going to take this next, but its been enlightening.
#godot #boids #gamedev #programming
the behaviours and the control of animations are better in #boids now :)
still some work to do to fine-tune speed, etc.
https://vimeo.com/594293621
#godotengine #dev #gamedev #gameengine #simulation #crowd #nicolasgourault
@polymorphcool
#boids #godotengine #dev #gamedev #gameengine #simulation #crowd #nicolasgourault
it's starting to become interesting in #boids module: after hours of debugging of memory management, it's possible to explain to yellow cubes to follow spheres, and to spheres to avoid yellow cubes.
To have something smooth, there is a lot to params to adapt: inertia (affects acceleration), steer (affects rotation) and so on
video devlog: https://polymorph.cool/wp-content/uploads/2021/03/boid_cubes_chasing_spheres.mp4
#dev #gamedev #simulation #interactions #ai #npc #swarm
#boids #dev #gamedev #simulation #interactions #ai #npc #swarm
Video showing behaviours in realtime is here: https://polymorph.cool/wp-content/uploads/2021/03/2021-03-27_13-59-09.mp4
#gamedev #boids #godotengine #devlog
@polymorphcool
#gamedev #boids #godotengine #devlog
Evolution of #boids module in #GodotEngine : i finally managed to master the memory creation in a consistent way => no more hard crashes (double free, malloc_consolidate & other funny stuff). Result: i'm now able to construct complex reaction of boids, with modification of plenty of parameters depending on the environment
#gamedev #simulation #swarm #dev #cpp
#boids #godotengine #gamedev #simulation #swarm #dev #cpp
just finished a #json serialisation of behaviours: [{"class":"test" , "active"1, "after":0, "attr":0, "eval":0, "event":0, "jumpto":1, "param_bool":0, "repeat":1,,...
It's possible to copy/paste the object + generate + edit it manually, I think it's a cool feature, even if documentation is necessary...
#GodotEngine #gamedev #serialisation #boids
@polymorphcool
#json #godotengine #gamedev #serialisation #boids
update on #boids module for #godotengine: you can use a "layer" system to group them with attractors, colliders and targets -> if not in the same group, boids do not floow each other, don't "see" colliders, etc.
in video, there are 3 groups: red, green & cyan
the big shaking dots are the barycenter of each group
#gamedev #dev #flock #simulation #agent #3d
@polymorphcool
#boids #godotengine #gamedev #dev #flock #simulation #agent #3d
a bit of tech p*rn to finish the day: code is getting more and more ready to perform intensive #boids setup
scene #1: pushing everybody in a tube
**meaning of labels in top left corner**:
- frame per seconds
- time to solve the frame (CPU side)
- number of collisions to solve in current frame
- active boids count
#gamedev #3d #perfs #godotengine #dev #cpp #visualcomplexity
@polymorphcool
#dev #cpp #boids #gamedev #3d #perfs #godotengine #visualcomplexity
optimisation of collisions is on its way in #boids module: the domain is now able to locate the cells occupied by colliders, attractors and targets (all objects that require collision tests). The "holes" (red dots) visible in the first image are easily fixed by adjusting subdivision param for each collider.
Next step is to link this step into the linear processing of boids
#godotengine #gamedev #dev #flock #simulation
#boids #godotengine #gamedev #dev #flock #simulation
fast box registration in a grid: it is far from perfect, but same code can also be used for collision, more precise than grid registration
it's great to be able to prototype algorithm in gdscript > you work on code while it's running: i've made a livecoding perf for myself all day :)
music: Anima Exhalare by Eths
#boids #godot #dev #3d #grid #raster #gamedev
@polymorphcool
#boids #godot #dev #3d #grid #raster #gamedev
boids auto-organisation: done!
i guess these pattern is due to the implementation of collisions between boids... quite strange to see this happening in front of your eyes!
#gamedev #godot #boids #simulation #pattern #emergence
#gamedev #godot #boids #simulation #pattern #emergence