{"id":45522551,"url":"https://github.com/openchanter/ecosystems","last_synced_at":"2026-02-22T23:01:57.094Z","repository":{"id":312137697,"uuid":"1044634245","full_name":"OpEnchanter/ecosystems","owner":"OpEnchanter","description":"A simple 3D ecosystem simulation made in C#","archived":false,"fork":false,"pushed_at":"2025-09-18T16:11:41.000Z","size":4687,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-18T17:00:07.031Z","etag":null,"topics":["3d","ecosystems","game","simulation"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpEnchanter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-26T01:44:52.000Z","updated_at":"2025-09-18T15:39:58.000Z","dependencies_parsed_at":"2025-09-18T16:17:13.666Z","dependency_job_id":"11da2e09-51fa-47f6-8301-b2a2bbf9eeaa","html_url":"https://github.com/OpEnchanter/ecosystems","commit_stats":null,"previous_names":["openchanter/ecosystems"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/OpEnchanter/ecosystems","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpEnchanter%2Fecosystems","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpEnchanter%2Fecosystems/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpEnchanter%2Fecosystems/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpEnchanter%2Fecosystems/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpEnchanter","download_url":"https://codeload.github.com/OpEnchanter/ecosystems/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpEnchanter%2Fecosystems/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29730223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T20:09:16.275Z","status":"ssl_error","status_checked_at":"2026-02-22T20:09:13.750Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["3d","ecosystems","game","simulation"],"created_at":"2026-02-22T23:01:56.124Z","updated_at":"2026-02-22T23:01:57.063Z","avatar_url":"https://github.com/OpEnchanter.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ecosystem Simulation 🐇\nThis is a basic ecosystem simulation game made with a Raylib port (Vinculum) in C#. It features different organisms that interact with eachother (ex. fox, rabbit, bush) as well as a random island generator for the play area and various features for understanding the simulation and logging results.\n## Repository Stats 📊\n[![Build \u0026 Publish](https://github.com/OpEnchanter/ecosystems/actions/workflows/build.yml/badge.svg)](https://github.com/OpEnchanter/ecosystems/actions/workflows/build.yml)\n[![wakatime](https://wakatime.com/badge/user/98f6777a-987b-4ee6-8815-04a0d8ae8626/project/2e3ef99d-2602-4d64-9470-7c536294cd83.svg)](https://wakatime.com/badge/user/98f6777a-987b-4ee6-8815-04a0d8ae8626/project/2e3ef99d-2602-4d64-9470-7c536294cd83)\n\n## Controls 🕹️\n### **Movement**\n  - **Forward** : `W`\n  - **Backward** : `S`\n  - **Left** : `A`\n  - **Right** : `D`\n  - **Down** : `Left Control`\n  - **Up** : `Space`\n  - **Sprint** : `Shift`\n  - **Interact**: `Left Click`\n### **Menus**\n  - **Open menu** : `Tab`\n  - **Use the menu**: The menu has options for logging data, quitting the game, turning on debug mode and turning on cheats.\n  - **Open god menu**: `Left click on organism`\n  - **Use god meny**: The god menu allows you to interact with organisms such as killing them feeding them and hydrating them.\n\n## Logging Display 📈\nThe python file in `plot/python` can be used to visualize the logs generated by the program.\n\n**Prerequisites**\n- `pandas`\n- `matplotlib`\n\nThese prerequisites can be installed with\n```pwsh\npip install pandas matplotlib\n```\n\nThe graph can be loaded and run with\n```pwsh\npython ./plot/main.py\n```\n\n## Debug mode ❗\nDebug mode gives an ingame look into the inner workings of the simulation.\n\n**Features**\n- Displays stats about organisms above them (ex. traits and stats)\n- Displays organism's pathing target\n\n## Examples 📃\nThese are some examples of environments that have been generated within the simulation.\n![Island](readme-resources/Island1.png)\n![Island](readme-resources/Island2.png)\n\n## Getting Started 🚀\n1. Download the `.zip` from the releases on this page.\n2. Unzip the file.\n3. Run the `.exe` (if prompted asking if you want to run the file click more options, then run anyway).\n\n\u003e **Note**: Currently, if you want to use this on Linux or MacOS you will have to compile from source yourself.\n\n## Compile from source 💾\n\n### Prerequisites\n- **.NET**: Ensure that you have the .NET SDK installed on your computer.\n\n### Run the simulation\n1. Clone the repository\n```pwsh\ngit clone https://github.com/OpEnchanter/ecosystems.git\n```\n2. Navigate to the project's directory\n```pwsh\ncd ecosystems\n```\n3. Build and run\n```pwsh\ndotnet run\n```\n\n## Code examples\nIf you want to modify the simulation to add your own personal organisms you can create the organism and make it spawn by modifying `Program.cs`.\n\n\u003e **Note**: You should have a decent understanding of `C#` before attempting to modify the code.\n\n### Load the model\nLoad the organism's model and texture and use them.\n```cs\nImage image = Raylib.LoadImage(\"texture.png\"); // Load the texture as an Image\nTexture texture = Raylib.LoadTextureFromImage(image); // Load Texture from image\n\nModel model = Raylib.LoadModelFromMesh(\"model.obj\"); // Load model\nmodel.materials[0].maps[(int)MaterialMapIndex.MATERIAL_MAP_ALBEDO].texture = texture; // Apply texture to model\nmodel.materials[0].shader = lit; // Apply lit shader to model\n```\n\n### Create the organism\nCreate a new organism and give it a model and position, then modify it's traits (note that it will evolve and the traits will change).\n```cs\nOrganism organism = new Organism() {\n  model = model;\n  organismPosition = new Vector3(0,0,0);\n} // Create and organism with a model and position\n// Modify organism traits\norganism.traits.eyesight = 10.0f;\norganism.traits.speed = 1.0f;\norganism.traits.oType = organismType.CustomOrganism; // A new organism type must be added to the organismType enum\norganism.traits.foodSources = new organismType[] { organismType.Bush }; // What the organism can eat\norganism.traits.hydrationSources = new fluidType[] { fluidType.Water }; // How the organism can get hydration\n```\n\n### Make the organism spawn\nModify the function call beginning on line 601 to include a number and reference to your organism.\n```cs\nplaceFeatures(new Dictionary\u003cbasicRenderable, int\u003e\n{\n  { bush, 150 },\n  { fox, 120 },\n  { rabbit, 120 },\n  { organism, 400} // This will spawn 400 of organism on the island\n}, *groundHeightmap, terrainThreshold);\n```\n\n## Code line count 🧮\nIf you want to check how many lines of code there are in the project (either if you are curious or you made an addition) you can run the command\n```pwsh\ncloc ./ --include-lang=C#,Python\n```\nThis is assuming you have `cloc.exe` somewhere on your computer and it is added to your `PATH`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenchanter%2Fecosystems","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenchanter%2Fecosystems","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenchanter%2Fecosystems/lists"}