Hey people, I built this particle simulator in ~500 lines of self-contained HTML/JS/WebGL2.
It's designed to encourage creativity and exploration. You can just download one of those universes and open up the HTML file in a text editor to tweak the physical laws and constants. Then open it up in your browser to see the result immediately.
I had a lot of fun exploring the beautiful emergent behaviors that arise from those simple rules, give it a try too! There's plenty of documentation and you don't need to be a programming wizard. :)
This is pretty fun, I like it, will take a look at the code later today.
> Finally, I am legally obliged to inform you of the one law of exophysics:
> YOU ARE REQUIRED TO TERMINATE A SIMULATION IMMEDIATELY UPON FINDING
> EVIDENCE OF THE EMERGENCE OF SENTIENT CREATURES CAPABLE OF SUFFERING.
LOL, I had to google "law of exophysics" to see if it is real.
Well, factor in a slow extinction event and let it run for a few billion ticks. That way they have ample warning, and they might have even offed themselves within that timeframe.
True, but that law was established to discourage any research in that domain, reducing the overall occurences of sentience-incidents and the resulting messy philosophical questions.
I like this programming languages made for particle/fields [1,2,3]
Yoshiki Ohshima also made the particle/fields simulator in Squeak/Etoys that Alan Kay demos is his talks [5] and was a scientist at Alan Kay's VPRI [4].
https://www.youtube.com/watch?v=makaJpLvbow <- this one is pretty awesome too. A very simple rule and quite the complex behavior. Though I'd recommend watching it at 175% speed, muted, and perhaps with the 1812 Overture as the background music.
It's a matter of specificity. Yes, it's a particle simulator, but given the Conway's Life feel to some of the examples, it at least seems like a high-speed, high-resolution cellular automata.
None seem to work on Safari 14.0.01 :/ Not sure if I need to enable anything for WebGL.
On vanilla Chrome 87, I get "Unable to initialize the shader program: Vertex shader active uniforms exceed GL_MAX_VERTEX_UNIFORM_VECTORS(256)" for most of them.
But a few work (swyrlyx.html) and are super cool! Nicely done.
It's a pity that Safari is a little slow to implement WebGL2. Your message on chrome though sounds like a legit bug, since normally, Exophysics reduces the number of particles to match the hardware/browser capabilities, and here they're exceeded. Will investigate.
I use transform feedback, which allows vertex shaders to send data back to the application. You could do this with textures as well, as described by pjmlp. I did this in an earlier version (https://github.com/hut/cellmade#) but it just felt SO WRONG. I was very happy that I found out about transform feedback to be able to do it more cleanly.
> The WebGLTransformFeedback interface is part of the WebGL 2 API and enables transform feedback, which is the process of capturing primitives generated by vertex processing. It allows to preserve the post-transform rendering state of an object and resubmit this data multiple times.
It's designed to encourage creativity and exploration. You can just download one of those universes and open up the HTML file in a text editor to tweak the physical laws and constants. Then open it up in your browser to see the result immediately.
I had a lot of fun exploring the beautiful emergent behaviors that arise from those simple rules, give it a try too! There's plenty of documentation and you don't need to be a programming wizard. :)
The most interesting universes I came up with are on display here: https://exophysics.net/exhibition.html