[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)