{"id":17529627,"url":"https://github.com/nullobject/atlas","last_synced_at":"2025-11-08T19:30:32.699Z","repository":{"id":5683137,"uuid":"6893291","full_name":"nullobject/atlas","owner":"nullobject","description":null,"archived":false,"fork":false,"pushed_at":"2012-12-22T21:42:13.000Z","size":468,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-28T04:46:44.344Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Scala","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/nullobject.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}},"created_at":"2012-11-28T00:03:55.000Z","updated_at":"2013-10-05T23:21:48.000Z","dependencies_parsed_at":"2022-09-05T06:31:09.134Z","dependency_job_id":null,"html_url":"https://github.com/nullobject/atlas","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullobject%2Fatlas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullobject%2Fatlas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullobject%2Fatlas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullobject%2Fatlas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nullobject","download_url":"https://codeload.github.com/nullobject/atlas/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239559808,"owners_count":19659119,"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":[],"created_at":"2024-10-20T16:23:07.748Z","updated_at":"2025-11-08T19:30:32.650Z","avatar_url":"https://github.com/nullobject.png","language":"Scala","readme":"# Atlas\n\n* The world is composed of a grid of cells.\n* Each cell has food and water.\n* Each cell has an elevation.\n\nA organism prefers to live in a biome based on their genes. Occupying cells within a organism's preferred biome consumes the least amount of energy.\n\nFor example, a desert dweller prefers not to exist within a forest biome.\n\n## How the game works\n\n### Spawning\n\nA player can join a game at any time. When a player connects a number of\norganisms are randomly spawned into the world for them.\n\n### Movement\n\nA organism can move from their current cell to a neighbouring cell. Movement consumes food and water.\nIt costs a organism more health to move to a cell of higher elevation. For example: (toElevation / fromElevation) + 1.\n\n### Food \u0026 Water\n\nEach organism must consume food \u0026 water in order to survive. As time passes in the\nworld a organism becomes hungry and/or thirsty and must seek out food \u0026 water. The\nrate at which a organism must eat or drink is dependent on a organism's genes.\n\n### Attacking\n\n### Genes\n\n* PreferredTemperature: the preferred temperature for a organism.\n* PreferredMoisture: the preferred moisure for a organism.\n* PreferredElevation: the preferred elevation for a organism.\n* EatFrequency: how often a organism needs to eat.\n* DrinkFrequency: how often a organism needs to drink.\n* ReproduceFrequency: how often a organism can reproduce.\n\n## Client\n\n# Messages\n\n* When the client connects a number of organisms are spawned.\n* The client requests the world view.\n* The server responds to the client with a world view.\n* The server processes the intention.\n\n# Tick\n\n    {\n      \"cells\": [\n        {\n          \"position\": [0, 0],\n          \"food\": 1,\n          \"water\": 2,\n          \"organisms\": [\n            {\"id\": \"123\", \"health\": 100, \"playerId\": \"abc\"}\n            {\"id\": \"456\", \"health\": 99, \"playerId\": \"def\"}\n          ]\n        }, {\n          \"position\": [1, 0],\n          \"food\": 3,\n          \"water\": 4,\n          \"organisms\": []\n        }, {\n          \"position\": [0, 1],\n          \"food\": 5,\n          \"water\": 6,\n          \"organisms\": []\n        }, {\n          \"position\": [1, 1],\n          \"food\": 7,\n          \"water\": 8,\n          \"organisms\": [\n            {\"id\": \"789\", \"health\": 98}\n          ]\n        }\n      ]\n    }\n\n\n# Action\n\nMove:\n\n    {\n      \"action\": \"move\",\n      \"organismId\": \"123\",\n      \"direction\": \"NW\"\n    }\n\nEat:\n\n    {\n      \"action\": \"eat\",\n      \"organismId\": \"123\"\n    }\n\nDrink:\n\n    {\n      \"action\": \"drink\",\n      \"organismId\": \"123\"\n    }\n\nAttack:\n\n    {\n      \"action\": \"attack\",\n      \"organismId\": \"123\",\n      \"targetId\": \"456\"\n    }\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnullobject%2Fatlas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnullobject%2Fatlas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnullobject%2Fatlas/lists"}