[HN Gopher] Show HN: Genetic Boids Web Simulation
___________________________________________________________________
Show HN: Genetic Boids Web Simulation
Author : vimgrinder
Score : 81 points
Date : 2025-05-23 19:40 UTC (3 hours ago)
(HTM) web link (attentionmech.github.io)
(TXT) w3m dump (attentionmech.github.io)
| isoprophlex wrote:
| I'll just say that this looks insanely good, wow.
| vimgrinder wrote:
| thanks!
| kldavis4 wrote:
| how are genetic (algorithms) used?
| vimgrinder wrote:
| so, i just used them like conceptually..
|
| each boid has a string, when boids come close , they produce a
| offspring with mixed string + mutation age lets boids die too
|
| nothing fancy, just for sake of sim
| brulard wrote:
| That's beautiful. What are "signals"?
| Xevion wrote:
| I don't know myself, but it seems to give boids their own
| unique state and add another layer of influence to their
| acceleration.
|
| https://github.com/attentionmech/genetic-boids/blob/485fe482...
|
| I'm reading the code but I don't know what it actually DOES in
| practice; my guess is that Boids with opposite genomes (binary
| strings with default length 6) are slightly attracted to
| eachother.
| vimgrinder wrote:
| yes this only.
| rvnx wrote:
| Never heard of such thing, love it!
| Xevion wrote:
| I learned about Boids when I was 16 thanks to Sebastian Lague's
| amazing video on it: https://youtu.be/bqtqltqcQhw
|
| Highly recommend, especially his older videos on simulations.
| vladde wrote:
| Reminds me of this similar thing!, creating life like behavior
| with only simple rules https://youtu.be/0Kx4Y9TVMGg?t=40
|
| (the coolest examples come at about half a minute into the video)
| Xevion wrote:
| Awesome work, the green terminal style is really cool. And the
| fact that it's just Vanilla JavaScript, HTML & CSS is a pretty
| cool touch. I would've produced something a tenth the style with
| 10x the complexity
|
| Just some ideas/suggestions: - Better colors: maybe genes can
| influence colors a bit? The random colors aren't that great,
| they're good though for making all the boids distinct. - Zooming:
| Scroll the mousewheel to Zoom In/Out, drag to move around -
| Interactive: Click on a Boid, have it be followed around using
| zoom! - Time controls: Not just framerate, but a % multiplier on
| simulation speed. - GPU Refactor: I don't think you're doing any
| of this yet, so maybe optimizing for a GPU-based speedup would be
| cool? See if you can reach 10,000 boids! Sebastian Lague's video
| goes into parallelization, just not in JavaScript:
| https://youtu.be/bqtqltqcQhw
| vimgrinder wrote:
| hey thanks! color is coming from genome (check
| brightColorFromGenome)! nice suggestions, will definitely try
| to incorporate some of them.
| talkingtab wrote:
| The original Boids is from Craig Reynolds, here:
|
| https://www.red3d.com/cwr/boids/
|
| It was a java applet (sigh) and unfortunately I have not been
| able to find a working version. That version based on his three
| "steering" mechanisms had very realistic movement. Other
| versions, including this one, which are good do not have that
| same kind of quality. They look like simulations whereas the
| Reynolds version, for whatever reason, seemed much closer to
| watching an actual flock.
|
| No criticism intended, it would just be nice to understand the
| why the difference.
|
| Looking briefly at the code, it seems the fitness function is
| simply how close the boids are?
|
| Very cool!
| vimgrinder wrote:
| oh, so i wasn't really aware that there was a original boid sim
| (I will check it today). mostly I saw it on some other demos
| and I wanted to add this behaviour of signaling boids which are
| far away + color code based on genome + do a simple cross-
| mutate. and yes you are right about fitness func.
|
| Beyond this i was trying to add a map which effects their
| movement. (if you wanna check how it looks -
| https://x.com/attentionmech/status/1925690991555531143)
| janzer wrote:
| Just a clarifying note, Craig Reynolds is the original
| researcher for Boids, and he did have a Java applet
| implementation in the above page. But the original Boids
| simulation was from 1986, almost a decade prior to Java
| applets.
|
| The original paper, published in 1987, is "Flocks, herds and
| schools: A distributed behavioral model"[1]. The implementation
| was done in Lisp on a Symbolics 3600 Lisp Machine.
|
| Edit: One quite interesting paragraph from the paper regarding
| performance:
|
| _The boid software has not been optimized for speed. But this
| report would be incomplete without a rough estimate of the
| actual performance of the system. With a flock of 80 boids,
| using the naive O(N2) algorithm (and so 6400 individual boid-
| to-boid comparisons), on a single Lisp Machine without any
| special hardware accelerators, the simulation ran for about 95
| seconds per frame. A ten-second (300 frame) motion test took
| about eight hours of real time to produce._
|
| Once again, amazing how far hardware has advanced.
|
| 1. https://dl.acm.org/doi/10.1145/37402.37406
| brodo wrote:
| I've just built a boid simulation in Go and WebGPU. 16k boids are
| no problem on my M1 Mac Pro. I did not implement any optimization
| yet.
| vimgrinder wrote:
| oh nice, webGPU thing should learn sometime!
___________________________________________________________________
(page generated 2025-05-23 23:00 UTC)