{"id":28418614,"url":"https://github.com/yagarea/slimulator","last_synced_at":"2025-06-28T04:32:03.838Z","repository":{"id":49530819,"uuid":"364689779","full_name":"yagarea/Slimulator","owner":"yagarea","description":"Advanced slime mould simulation software","archived":false,"fork":false,"pushed_at":"2025-04-30T04:47:29.000Z","size":2261,"stargazers_count":4,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-04T17:53:00.287Z","etag":null,"topics":["bioinformatics","cellular-automata","hacktoberfest","simulation","slime"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yagarea.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,"zenodo":null}},"created_at":"2021-05-05T19:50:07.000Z","updated_at":"2025-04-30T04:47:32.000Z","dependencies_parsed_at":"2025-04-21T07:02:04.318Z","dependency_job_id":null,"html_url":"https://github.com/yagarea/Slimulator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yagarea/Slimulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yagarea%2FSlimulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yagarea%2FSlimulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yagarea%2FSlimulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yagarea%2FSlimulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yagarea","download_url":"https://codeload.github.com/yagarea/Slimulator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yagarea%2FSlimulator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262375758,"owners_count":23301339,"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":["bioinformatics","cellular-automata","hacktoberfest","simulation","slime"],"created_at":"2025-06-04T11:39:58.559Z","updated_at":"2025-06-28T04:32:03.830Z","avatar_url":"https://github.com/yagarea.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![Slimulator](https://github.com/yagarea/Slimulator/blob/master/media/logo.gif?raw=true)\n\nSlimulator is a program you can use to simulate slime mold pathfinding and enviroment exploration.\nThe input is an image of the environment and the output is a video of the simulated slime mold behavior.\n\n## Input file\nInput file is any standard image format supported by the `FFMPEG` library. The recommended format is `PNG`.\n\n### Legend\n- **Yellow** (`FFFF00`) - Slime mold\n- **Black** (`FFFFFF`) - Impenetrable wall\n- **Red** (`FF0000`) - Food\n- **Every other color** - Free space\n\nExample input:\n\n![Example input](https://raw.githubusercontent.com/yagarea/Slimulator/master/testInputs/maze500-food2.png?raw=true)\n\n## Output\n\nThe output of the example input above with default settings:\n\n![Example output](https://github.com/yagarea/Slimulator/blob/master/media/exampleOutput.gif?raw=true)\n\n## Simulation parameters\n\n### Technical parameters\n\n| Parameter                     | Type     | Default         | description                                                                                                                                                                                                                                                         |\n| ---                           | ---      | ---             | ---                                                                                                                                                                                                                                                                 |\n| `totalCountOfSimulationTicks` | (int)    | 70000           | Amount \"ticks\" (iterations of simulations)                                                                                                                                                                                                                          |\n| `ticksPerFrame`               | (int)    | 20              | Amount of ticks per one video frame. This parameter is used to control the speed of simulation. The higher the number of ticks per frame, the higher the speed. Be aware that setting this parameter too high can result in loss of information about the progress. |\n| `frameRate`                   | (int)    | 60              | Frames per second in the output video. This parameter can be used to control the speed of simulation too but it is not recommended because it can damage output video quality.                                                                                      |\n| `seed`                        | (string) | \"HlenkaHelenka\" | Seed for the random number gerenerator.                                                                                                                                                                                                                             |\n| `threadCount`                 | (int)    | 1               | This program can be parallelized. This parameter sets the amount of threads used.                                                                                                                                                                                   |\n\n### Slime mould behavoir parameters\n\n| Parameter                          | Type  | Default | description                                                                                                    |\n| ---                                | ---   | ---     | ---                                                                                                            |\n| `slimeAffinityRadius`              | (int) | 4       | The euclidean distance in which points affect nearby slime mold cells.                                         |\n| `slimeOccurenceAffinityMultiplier` | (int) | 1       | Multiplier of weight of affinity of immediate advantage of point based on its surroundings.                    |\n| `slimeTimeAffinityMultiplier`      | (int) | 10      | Multiplier of weight of time on slime mold behavior (prioritizing unexplored and not recently visited places). |\n\n## Usage\n\n### Wizard\n\nThis project contains a basic wizard that will guide you. All you need is to run:\n\n```bash\ndotnet run Launcher.cs\n```\n\n### As framework\n\nHere is a minimal example usage of Slimulator as framework:\n\n```c#\nstatic void Main(string[] args) {\n    Simulation sim = new Simulation(@\"path/to/input/file.png\",\n                                    @\"path/of/output/file.mp4\",\n                                    SimulationSettings.QuickTest());\n    Console.WriteLine(sim.Start());\n    sim.End(true);\n}\n```\n\nIn `SimulationSetting` class are following premade setups:\n- **Default** - uses default values\n- **SlowMotion** - very slow but detailed output\n- **Fast** - very fast video ideal for large mazes\n- **QuickTest** - short video ideal for parameter tweaking\n- **Benchmark** - outputs 30 frame video with 1000 ticks per frame\n\nYou can still create your own setting by making yout own instance of `SimulationSetting` class:\n\n```c#\nSimulationSettings customSettings = new SimulationSettings(\n    totalCountOfSimulationTicks: 70000,\n    ticksPerFrame: 20,\n    frameRate: 60,\n    seed: \"HlenkaHelenka\",\n    threadCount: 1,\n    slimeAffinityRadius: 4,\n    slimeOccurenceAffinityMultiplier: 1,\n    slimeTimeAffinityMultiplier: 10);\n```\n\nI highly encourage you to experiment with your settings. If you discover something \ninteresting, feel free to contact me. I can assist you or add your discovery to this \nrepository.\n\n## Dependencies\n- [FFMedia toolkit](https://github.com/radek-k/FFMediaToolkit) - requires [FFMPEG](https://ffmpeg.org/) installed on your system\n\n## Bugs and feature requests\nIf you discover any bugs or unwanted behavior, feel free to open an issue. I am open to your \nfeature requests too, so do not be afraid to contact me or open an issue.\n\n## Contributions\nAll pull requests are welcome. Just follow current codestyle.\n\n## Author\nThis software was made by [Jan Černý](https://blackblog.cz/) for \n[MatSliz Research facility](http://slimoco.ning.com/group/matsliz). If you have \nany questions about the project and slime mold research visit \n[MatSliz official page on **Slime and mould collective**](http://slimoco.ning.com/group/matsliz) \nor contact me on my email address.\n\n![MatSliz](http://storage.ning.com/topology/rest/1.0/file/get/8485133272?profile=RESIZE_180x180\u0026crop=1%3A1\u0026width=171)\n\n## License\nThis program is published under [GPLv3](https://github.com/yagarea/Slimulator/blob/master/LICENSE)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyagarea%2Fslimulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyagarea%2Fslimulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyagarea%2Fslimulator/lists"}