{"id":30127822,"url":"https://github.com/thebrubaker/colony","last_synced_at":"2026-06-23T03:31:49.151Z","repository":{"id":77079991,"uuid":"266482039","full_name":"thebrubaker/colony","owner":"thebrubaker","description":"A colony / survival / simulation game written in Go. The game is currently experimental and a work in progress.","archived":false,"fork":false,"pushed_at":"2021-02-28T05:42:56.000Z","size":750,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-10T17:21:55.778Z","etag":null,"topics":["game-server","go","golang","grpc","grpc-go"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thebrubaker.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":"2020-05-24T06:16:50.000Z","updated_at":"2024-05-01T06:43:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"ac8167da-521d-44ac-8a61-f89dface58a5","html_url":"https://github.com/thebrubaker/colony","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thebrubaker/colony","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thebrubaker%2Fcolony","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thebrubaker%2Fcolony/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thebrubaker%2Fcolony/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thebrubaker%2Fcolony/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thebrubaker","download_url":"https://codeload.github.com/thebrubaker/colony/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thebrubaker%2Fcolony/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34674702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["game-server","go","golang","grpc","grpc-go"],"created_at":"2025-08-10T17:11:15.647Z","updated_at":"2026-06-23T03:31:49.133Z","avatar_url":"https://github.com/thebrubaker.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go Colony\n\nA colony simulation / game written in Go. The game is currently experimental and a work in progress. I use this project to tinker with various golang concepts.\n\n## How to take it for a spin\n\nTo start the game but without a server and render the gamestate to the console, run the following command in a tall terminal window:\n\n```script\ngo run main.go debug\n```\n\n![example](./example.png)\n\n## Quick Backstory\n\nYour colonist has woken up from cryosleep alone on a new planet. Your mission was to be one of the first to colonize the planet. Unfortunately things haven't gone as planned. Your colonist wakes up alone, and it appears others have already looted your supplies and technology.\n\nYou will have to slowly build your colony from the ground up despite this setback. Hunt for food, create a settlement, recruit new colonists, and discover advanced technology hidden away. But be careful. Not everyone is friendly, and there appears to be some strange, dangerous creatures roaming about. Maybe something much worse.\n\n## WIP ideas for the game\n\n- gRPC API for streaming game and sending in commands\n- Utility-based decision trees. Colonists have a mind of their own, but you can command them to attempt certain tasks. Assign colonists to leadership roles to improve coordinated effort.\n- Crafting and Construction. Build farms, mines, workshops, fortificatons, trade depots and other buildings to sustain your colonists needs and desires\n- Combat. Train your colonists and prepare them for battle from raiders, dangerous animals and much, much worse things crawling in the dark recesses of the planet\n- Trade. Build a trade depot and send your colonists out to trade with other players.\n\n## How to start the game server\n\nTo start the game server, run the following command. It will create a default game and you can find the GameKey in the logs.\n\n```script\ngo run main.go start\n```\n\n## How to stream the game server\n\n(There is currently a bug and this is WIP)\n\nRun the following in a tall terminal window to see the JSON game state streamed at 30fps.\n\n```script\ngo run main.go streamGame {GameKey}\n```\n\n## How to pause / speed up the game\n\n```script\ngo run main.go setSpeed {GameKey} [0|1|2|3]\n```\n\n# Contributing\n\nGuide coming soon.\n\n## How To Add Actions\n\nTo create a new action, create a new file in the `game/actions/types` directory and then append it to the SelectNextAction() method in `actions/determineAction.go`. The following is an example action for gathering wood.\n\n```go\npackage types\n\nimport (\n\t\"github.com/fogleman/ease\"\n\t\"github.com/thebrubaker/colony/colonist\"\n\t\"github.com/thebrubaker/colony/resources\"\n)\n\nvar GatherWood = \u0026SimpleAction{\n\tstatus: []string{\n\t\t\"gathering wood nearby\",\n\t},\n\teffort:        Demanding,\n\tduration:      Slow,\n\tutilityDesire: colonist.Fulfillment,\n\tsatisfiesDesires: []SatisfyDesire{\n\t\t{colonist.Fulfillment, 35, ease.OutQuad},\n\t},\n\tproducesResources: []ProduceResource{\n\t\t{resources.Wood, 0.1},\n\t},\n\timprovesSkills: []ImproveSkill{\n\t\t{colonist.Woodcutting, 0.05},\n\t},\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthebrubaker%2Fcolony","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthebrubaker%2Fcolony","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthebrubaker%2Fcolony/lists"}