{"id":21439916,"url":"https://github.com/danielv123/gridworld","last_synced_at":"2025-07-14T16:31:08.511Z","repository":{"id":48410861,"uuid":"420788966","full_name":"Danielv123/gridworld","owner":"Danielv123","description":"Automatic creation of distributed factorio gridworlds connected using edge_transports","archived":false,"fork":false,"pushed_at":"2024-04-14T20:26:40.000Z","size":5736,"stargazers_count":4,"open_issues_count":5,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-04-16T15:47:15.805Z","etag":null,"topics":["clusterio","factorio","factorio-mod","factorio-server"],"latest_commit_sha":null,"homepage":"","language":"Lua","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/Danielv123.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}},"created_at":"2021-10-24T20:30:39.000Z","updated_at":"2024-06-10T16:40:55.511Z","dependencies_parsed_at":"2024-04-18T17:56:16.641Z","dependency_job_id":null,"html_url":"https://github.com/Danielv123/gridworld","commit_stats":{"total_commits":108,"total_committers":2,"mean_commits":54.0,"dds":0.06481481481481477,"last_synced_commit":"443dd6e3531eaa56c2c1483bc95b2c81743025d3"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Danielv123%2Fgridworld","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Danielv123%2Fgridworld/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Danielv123%2Fgridworld/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Danielv123%2Fgridworld/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Danielv123","download_url":"https://codeload.github.com/Danielv123/gridworld/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225985990,"owners_count":17555559,"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":["clusterio","factorio","factorio-mod","factorio-server"],"created_at":"2024-11-23T00:51:12.059Z","updated_at":"2024-11-23T00:51:12.529Z","avatar_url":"https://github.com/Danielv123.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Clusterio gridworld\n\nAutomatic gridworld configuration\n\n## [Documentation and FAQ](docs/docs.md)\n\n## Installation\n\nDependencies:\n\n* https://www.npmjs.com/package/@hornwitser/server_select\n* https://www.npmjs.com/package/@clusterio/plugin-edge_transports\n\nRun the following commands in the folder Clusterio is installed to:\n\n\tnpm install @danielv123/gridworld\n\tnpx clusteriocontroller plugin add @danielv123/gridworld\n\tnpm install universal_edges\n\tnpx clusteriocontroller plugin add universal_edges\n\nSubstitute clusteriocontroller with clusteriohost or clusterioctl if this a dedicated host or ctl installation respectively.\n\nInstall the companion mod as a modpack in clusterio, this is required for power, fluid transfers and train pathfinding to work:\n\nhttps://mods.factorio.com/mod/universal_edges\n\n## Usage\n\nOpen the web UI, navigate to the gridworld page and create a new gridworld. A lobby server will be created. If you want to use a custom map exchange string, navigate to the controller page and set \"Gridworld map exchange string\" to the long string you get from the game.\n\nOnce this is done, join the lobby server and press the \"Joing game button\". Additional server are created on demand as you explore. The load balancing picks the host with the fewest instances to create the new server on.\n\n### Transfers between servers\n\nThe universal_edges plugin is used to transfer items between servers. When an edge is green, it is active and can be used for transfers. Connectors are set up by placing the following items up against the edge:\n\n* Transport belts\n* Pipes\n* Substations\n* Straight rails (the departing train can't leave from a curve, leave a long straight)\n\n![Visualization of this repo](./images/diagram.svg)\n\n## Development setup\n\nClone the repository in clusterio/external_plugins/\n\n\tgit clone https://github.com/clusterio/clusterio\n\tcd clusterio/external_plugins\n\tgit clone https://github.com/Danielv123/gridworld\n\tgit clone https://github.com/Danielv123/universal_edges\n\tcd ..\n\tpnpm install\n\nInteractive:\n\n\tnode packages/create --dev\n\n\tnode packages/ctl plugin add ./external_plugins/gridworld\n\tnode packages/ctl plugin add ./external_plugins/universal_edges\n\tpnpm install @hornwitser/server_select -w\n\tnode packages/controller bootstrap create-admin Danielv123\n\tnode packages/controller bootstrap create-ctl-config Danielv123\n\tnode packages/controller plugin add @hornwitser/server_select\n\tnode packages/controller plugin add ./plugins/global_chat\n\tnode packages/controller plugin add ./plugins/inventory_sync\n\tnode packages/controller plugin add ./plugins/player_auth\n\tnode packages/controller plugin add ./plugins/research_sync\n\tnode packages/controller plugin add ./plugins/statistics_exporter\n\tnode packages/controller bootstrap generate-user-token Danielv123 \u003e token.txt\n\tnode packages/controller run --dev --dev-plugin gridworld\n\nLog into the webui with the token in token.txt and create a new host token with id `1` then run the following in terminal to setup the host:\n\n\twget -O factorio.tar.gz https://www.factorio.com/get-download/latest/headless/linux64\n\ttar -xf factorio.tar.gz\n\tnode packages/host config set host.id 1\n\tnode packages/host config set host.controller_token xxxxxxxxxxxxxxxxxxxxx\n\tnode packages/host config set host.name \"Host 1\"\n\tnode packages/host config set host.public_address \"localhost\"\n  \nLuacheck can be downloaded from https://github.com/mpeterv/luacheck/releases/download/0.23.0/luacheck.exe or `sudo apt install lua-check` or `brew install luacheck`\n\nPut it in your `%path%` and run `luacheck ./module`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielv123%2Fgridworld","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielv123%2Fgridworld","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielv123%2Fgridworld/lists"}