Built using Emilk's eframe, template repo. Eframe is a framework for writing apps using egui.
https://cellular-automata.wirthless.dev
Make sure to update the build actions eventually to re-include -D warnings
possibly cut back on CI/CD by trimming out alot of the excess deployment stuff? I dunno hopefully works?
Huge shoutout and thanks to Todd Smith In my research on trying to learn how to do all this, I stumbled across articles that he was also writing articles on simulating Elementary CAS, First one Here what was so interesting to me was the fact that he was also using Rust, and had yet to write the Third article in the mini-series, meaning he was actively writing them as I was working on the project. On a whim I reached out to him on linkedin, and he was kind enough to take time out of his day to look at my crappy rust code, and provide advice! I couldn't thank the man enough for doing that, as it meant alot to me to be able to have someone look at my code. If you have the time please make sure to check out his articles that I linked above and give em a read!
Rest in peace John Walker his project "CellLab" has proved immensely helpful in my research, He passed on February 2, 2024. Less than a week before I started working on this project
- Cellular Automata
- Von Neumann Neighborhood
- Moore Neighborhood
- Elementary Cellular Automaton
- Lattice Gas Automaton
- Multi agent systems
(note, I may or may not have read these papers, but am including all of the ones I found interesting, or ones that seemed like they could be helpful to look at later here)
- Two Dimensional Cellular Automata-Norman Packard and Stephen Wolfram
- Stephen Wolframs 'A new Kind of Science'
- Preston and Duff's "Modern Cellular Automata"
- Particle-Based Fluid Simulation for Interactive Applications - Matthias Müller, David Charypar and Markus Gross
- Particle-based Viscoelastic Fluid Simulation
- Riley Shaw's Terra.js (link to repo)
- Fourmilab's Cellular Automata Laboratory
- George Mason University's MASON
- How to code a falling sand simulation (like noita) with cellular automata - MARF - Happened to be in my Recommended, and was an interesting watch
- Cellular Automata: Multi-State world (rock, paper, scissor, lizard, spock)-Efrans
- Complex Behaviour from Simple Rules: 3 Simulations - Sebastian Lague
- Coding Adventure: Simulating Fluids-Sebastian Lague
- Living Machines in TypeScript (Autocell Ep.02)- TsodingDaily
- Cellular Automata: Complexity From Simplicity- AceRolla
Make sure you are using the latest version of stable rust by running rustup update
.
cargo run --release
You can compile your app to WASM and publish it as a web page.
We use Trunk to build for web target.
- Install the required target with
rustup target add wasm32-unknown-unknown
. - Install Trunk with
cargo install --locked trunk
. - Run
trunk serve
to build and serve onhttp://127.0.0.1:8080
. Trunk will rebuild automatically if you edit the project. - Open
http://127.0.0.1:8080/index.html#dev
in a browser. See the warning below.
assets/sw.js
script will try to cache our app, and loads the cached version when it cannot connect to server allowing your app to work offline (like PWA). appending#dev
toindex.html
will skip this caching, allowing us to load the latest builds during development.
- Just run
trunk build --release
. - It will generate a
dist
directory as a "static html" website