Skip to content

Extensible and efficient web application for exploring cellular automata

License

Notifications You must be signed in to change notification settings

bisignam/automatajs

Repository files navigation

stacklogo

@threejs

Breakdown

AutomtaJS is a web application for exploring 2D cellular automata. Differently from most cellular automata implementations, AutomataJS uses ThreeJS and glsl in order to parallalize the computation of each pixel state via shaders.

Main Features

AutomataJS allows users to change the color, size and type of the automata, moreover all these parameters can be modified while the automata is running thus creating weird and unpredictable results.

Currently Supported automata

  1. Game of Life
  2. Maze
  3. Seeds
  4. Brians's Brain
  5. Day And Night

Setup a Development Environment

  1. Install node

    • On Ubuntu, Debian and Linux Mint

        sudo apt install npm
      
    • On CentOS 8 (and newer), Fedora, and Red Hat:

        sudo dnf install npm
      
    • On CentOS 6 and 7, and older versions of Red Hat

        sudo yum install epel-release
        sudo yum install npm
      
    • On Arch Linux and Manjaro:

        sudo pacman -S npm
      
    • On OpenSUSE

        sudo zypper install npm
      
    • On OSX or Windows

      Download the installer from https://nodejs.org/en/download/

  2. Clone AutomataJS repository

    git clone https://github.com/bisignam/automatajs.git
    
  3. Install project dependencies via npm

    cd automatajs
    npm install
    
  4. Launch development server

    ng serve
    

    Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Development Roadmap

  • Add possibility to define custom automaton, for instance by editing a shader file using the Monaco Editor
  • Make the application mobile friendly.
  • Manage resize of window.
  • Introduce usage of a logging library.

Contribute

Feel free to to create a pull request or directly contact me at bisignam@gmail.com if you encounter any problem or you have any suggestion. If you don't know where to start looking for possible contributions, check the Development Roadmap section.

License

This project is licensed under the terms of the MIT license.

See LICENSE for more information.

Thanks to

John Horton Conway for his stunning work and intuition, R.I.P

James Fisher for the great inspiration, the core of this project is based on his article Game Of Life Implemented With a Fragment Shader