{"id":15443203,"url":"https://github.com/manishmeganathan/automata","last_synced_at":"2025-03-28T07:40:40.482Z","repository":{"id":137458714,"uuid":"388029545","full_name":"manishmeganathan/automata","owner":"manishmeganathan","description":"A 2D Simulator in Rust for cellular automata such as Conway's Game of Life and Langton's Ant among others. Powered by the ggez framework.","archived":false,"fork":false,"pushed_at":"2021-07-30T16:56:59.000Z","size":97,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T08:26:47.331Z","etag":null,"topics":["cellular-automaton","conways-game-of-life","ggez","langtons-ant","rust-lang","simulation"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/manishmeganathan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-21T07:18:14.000Z","updated_at":"2021-11-25T17:14:11.000Z","dependencies_parsed_at":"2024-03-30T20:47:09.713Z","dependency_job_id":null,"html_url":"https://github.com/manishmeganathan/automata","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manishmeganathan%2Fautomata","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manishmeganathan%2Fautomata/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manishmeganathan%2Fautomata/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manishmeganathan%2Fautomata/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manishmeganathan","download_url":"https://codeload.github.com/manishmeganathan/automata/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245991561,"owners_count":20706125,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cellular-automaton","conways-game-of-life","ggez","langtons-ant","rust-lang","simulation"],"created_at":"2024-10-01T19:33:44.046Z","updated_at":"2025-03-28T07:40:40.476Z","avatar_url":"https://github.com/manishmeganathan.png","language":"Rust","funding_links":[],"categories":["Libraries and frameworks"],"sub_categories":[],"readme":"# automata\n### A 2D Simulator in Rust for cellular automata such as Conway's Game of Life and Langton's Ant among others. Powered by the ggez framework.\n\n## Disclaimer\nThis project is still under development and not all features are functional. Contributions towards expanding features and improving performance are welcome.\n\n## Installation\n\n### From Release\n1. Download the latest release for the target platform.\n2. Add the path to the binary to the system PATH environment variable.\n3. Application can be invoked using ``automata`` in the shell.\n\n### From Source\n1. Install Git, Rust and Cargo on target system.\n2. Clone this repository \u0026 change directory into it.\n```\ngit clone https://github.com/manishmeganathan/automata.git \ncd automata\n```\n3. Build the project\n```\ncargo build --release\n```\n4. Application can be run using ``cargo run ..`` or the built binary can be invoked directly.\n\n## Usage\nThe Simulator currently support two automata. **Conway's Game of Life** and **Langton's Ant**. The simulator can be configured with flags that adjust the grid dimension, individual cell dimensions, simulation FPS, etc.\n\n### Example\nRun the following to start the **Conway's Game Of Life** automata.\n```\nautomata gameoflife\n```\n\nRun the following to start **Langton's Ant** with a grid of 1000x1000 pixels\n```\nautomata langtonsant --grid 1000x1000\n```\n\nSupported flags include\n- **--grid [-g]** Set dimensions of the grid. Takes the format ``widthXheight``.\n- **--cell [-c]** Set the cell size of the grid. Takes an int that represents the size of the cell\n- **--fps [-f]** Set the simulation fps.\n\nCurrently supported automata\n- **Conway's Game Of Life** - ``gameoflife``\n- **Langton's Ant** - ``langtonsant``\n\n## Project Structure\n### Simulation\nThis module implements the event handler and simulable trait definitions.\n- ``SimCell`` represents a trait implemented by cell structs that can be simulated.\n- ``SimGrid`` represents a trait implemented by grid structs that can be simulated. \n- ``Automaton`` represents a trait implemented by any automaton that can be simulated.\n- ``Simulation`` represents a struct that contains the simulation runtime handlers.\n\n\n### Commons\nThis module implements common tools used on different automata such as different types of cells, grids and turmites.\n- ``BinaryCell`` represents a cell state enum for cells that are either on or off.\n- ``CellGrid`` represents a grid of square cells.\n- ``GridCell`` represents an arbitrary cell on a grid.\n- ``GridScanner`` represents an iterator that scans over the entire grid.\n- ``Orient`` represents a trait implemented by directional structures.\n- ``Direction4`` represents a enum that has variation for different cardinal directions.\n- ``Turmite`` represents a turmite on a grid that crawl/travel around.\n\nNotes:\n- All Cells implement the ``SimCell`` trait.\n- All Grids implement the ``SimGrid`` trait.\n- Future grid implementations can include hexagonal and octagonal grids which will use 6 directional and 8 directional orientations.\n\n### GameOfLife\nThis module implements a struct of the same name generic over different types of grids.\n- Currently the initial state of the automata is a randomly generated balance grid. Future implementation can include states such as Gosper's Glider Gun.\n- Currently only implemented for square grids.\n\n### LangtonsAnt\nThis module implements a struct of the same name generic over different types of grids.\n- Currently the inital state of the automata is an empty grid. Future implementations can include randomized grids.\n- Currently only implemented for square grids.\n- Currently only supports 1 randomly placed ant. Future implementations can support predetermined ant positions and multiple ants.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanishmeganathan%2Fautomata","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanishmeganathan%2Fautomata","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanishmeganathan%2Fautomata/lists"}