A cellular automata library / playground written in Dart. Happily accepting pull requests! ^_^
- Web demos: https://jimmyff.github.io/cellular_automata_web/
- Author: Jimmy Forrester-Fellowes (jimmyff)
- Github: https://github.com/jimmyff/cellular_automata
- Main dart package: https://pub.dartlang.org/packages/cellular_automata
- Web renderers package: https://pub.dartlang.org/packages/cellular_automata_web
- Travis CI: https://travis-ci.org/jimmyff/cellular_automata/
- Simple system for writing optimised rules
- MCell rules compatible, current systems supported:
- MCell Generations
- Generators to seed the simulation
- Map states to colours/characters for rendering
- Controls: pause, resume, stepBack, stepForward
- Stale simulation detection (repeating generations or patterns in activity)
- Utilises the
package:logging
for debug & info (view on pub) - Decoupled renderers:
- Canvas: (Web), fullscreen support
- StageXL: (Web), WebGL, fullscreen support, (performance issues with big scenes)
- Conway's Game of Life (source)
- Conway's Game of Life Simple (binary states) (source)
- Brian's Brain (source)
- Majority Vote (source)
- MCell Generations rule parser. See the demos including:
- Star Wars
- Rake
- Star Wars
- Sedi Mental
- Frozen Sprials
See the examples/
folder for some simple code examples.
See the demos/
folder for demos. You can try the hosted demos here.
- En route: Multiple simulations/rule-sets running in a single scene
- En route: Flutter renderer
- Add more MCell rule parsers
- Add MCell rule database
- Add multiple states to 'Majority Vote'
- Add visual feedback to show processing of simulations - useful whilst building and debugging
- Support for entities to exist which would allow for simulations such as Langton's Ant
- Add a multiple states generator
- Add more tests
- Transitions for switching between two simulations
- Generated color palettes
- Interactive mode (edit mode)
- Analysis tools (histograms for state counts)
- Add an LED Matrix renderer for raspberry pi using GPIO pins
- Hexagonal grids
- Infinite world size support
Please see the credits file for a list of the authors that discovered the rules that have been implemented in this project.
Please see the cellular_automata license.