{"id":32386095,"url":"https://github.com/AnthonyTornetta/Cosmos","last_synced_at":"2025-10-25T02:57:12.253Z","repository":{"id":59492497,"uuid":"529103386","full_name":"AnthonyTornetta/Cosmos","owner":"AnthonyTornetta","description":"A multiplayer block-based space exporation game in active development","archived":false,"fork":false,"pushed_at":"2025-10-15T05:24:36.000Z","size":110020,"stargazers_count":71,"open_issues_count":24,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-15T17:26:20.393Z","etag":null,"topics":["3d","bevy","cosmos","ecs","game","game-development","multiplayer","rust","space"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/AnthonyTornetta.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-08-26T03:40:41.000Z","updated_at":"2025-10-11T20:30:14.000Z","dependencies_parsed_at":"2024-04-15T00:32:19.588Z","dependency_job_id":"3688b183-f631-46cb-8049-e2746137ece0","html_url":"https://github.com/AnthonyTornetta/Cosmos","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/AnthonyTornetta/Cosmos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnthonyTornetta%2FCosmos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnthonyTornetta%2FCosmos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnthonyTornetta%2FCosmos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnthonyTornetta%2FCosmos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AnthonyTornetta","download_url":"https://codeload.github.com/AnthonyTornetta/Cosmos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnthonyTornetta%2FCosmos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280897679,"owners_count":26409960,"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","status":"online","status_checked_at":"2025-10-25T02:00:06.499Z","response_time":81,"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":["3d","bevy","cosmos","ecs","game","game-development","multiplayer","rust","space"],"created_at":"2025-10-25T02:57:07.739Z","updated_at":"2025-10-25T02:57:12.243Z","avatar_url":"https://github.com/AnthonyTornetta.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Cosmos\n\nA multiplayer block-based space exploration game, written in rust using the [Bevy](https://www.bevyengine.org/) engine.\n\nIf you're interested in playing the game, helping out, pitching ideas, or just hanging out, join our discord server!\n[![Join Cosmos's Discord server here!](https://dcbadge.vercel.app/api/server/VeuqvnxsZb)](https://discord.gg/VeuqvnxsZb)\n\n## Player Guide\n\nCheck the ![guide](./guide.md) to see how to play!\n\n## Screenshots\n\nCosmos is a game where you can create your dream spaceship that you can pilot through space.\n![](./showcase/gunship_top.png)\n\nBuild your own ship block by block and cruise through space with friends, or make have everyone build their own ship.\n![](./showcase/many_ships.png)\n\nFly by huge, fully-interactable, planets\n![](./showcase/planet_close.png)\n![](./showcase/on_planet.png)\n\nBeware! In the depths of space, there's always someone that wants you dead. Watch out for pirates! They spawn in pacts and, once they see you, will hunt you mercilessly.\n![](./showcase/shooting_ship.png)\n\n## Compilation\n\nTo get started, install your OS dependencies [here](https://bevyengine.org/learn/book/getting-started/setup/#install-os-dependencies). The dependencies section is all you need to do.\n\nYou need to be running [Steam](https://store.steampowered.com/about/) in the background to launch the server and client.\n\nTo run the client, navigate to the cosmos_client directory and run\n\n`cargo run`\n\nFor the server, navigate to the cosmos_server directory and run\n\n`cargo run`\n\nFor release builds, append the `--release` flag to the build/run commands.\n\n## Controls\n\nThere is no option to modify controls yet, so for now check out `cosmos_client/src/input/inputs.rs` to see a list of all controls currently implemented.\n\n## Documentation\n\nThe first time you view the cosmos documentation, make sure you have mdbook **and** mdbook-mermaid installed. If you don't you can install them by running the following commands:\n\n```console\ncargo install mdbook\ncargo install mdbook-mermaid\n```\n\nEvery time you want to view the documentation, navigate to the `docs/` directory. To have it update as you modify it, run `mdbook serve` and navigate to the URL it provides, or to just build it run `mdbook build`.\n\n#### System ordering\n\nIf you want to view the ordering of the systems, run (on linux) `cargo run --features print-schedule | dot -Tsvg \u003e ./debug.svg` for either the cosmos_client or cosmos_server projects. If the `print-schedule` feature is enabled, these are setup to use bevy_mod_debugdump to create graphs of the `Update` schedule. If you need a different schedule, you'll have to change the `main.rs` file for either project to specify the correct schedule. Note, you'll need [graphviz](https://graphviz.org/download/) for the dot cmomand to work.\n\n# Cosmos Roadmap\n\nSee [the issues page](https://github.com/AnthonyTornetta/Cosmos/issues) for the list of current features/bugs in development.\n\n## Release 0.0.9a (In Progress)\n\n- [ ] More pirate ships\n- [ ] More station types\n- [x] Performance fixes\n- [x] Rework systems to use FixedUpdate\n  - [x] Physics\n- [x] Reduce amount of packets server sends per second\n- [ ] Respawn anchor\n- [ ] Screenshots\n- [x] Update to Bevy 0.16\n- [x] Steam Integration\n- [x] Blueprint ship/station in-game\n  - [x] Create ships via shipyard \n- [x] Faction Management\n- [x] Ship System Management\n\n## Release 0.0.8a\n\n- [x] Player Guide\n- [x] Better Creative Mode\n- [x] More asteroid types\n- [x] Balance and improve weapons\n- [x] Fuel for reactor\n- [x] Ores\n  - [x] Customizable block drops\n- [x] Better creative mode\n- [x] In-game commands\n  - [x] Graceful server stop command\n- [x] Ship focus camera\n- [x] Rebalance shop prices\n- [x] Add ability for player to die\n- [x] Playtest and implement changes\n- [x] Flying asteroids\n- [x] NPCs\n  - [x] Factions\n  - [x] Faction Stations\n  - [x] Basic quest NPCs\n    - [x] Coms System\n    - [x] Quest system\n- [x] Networking systems improvements\n- [x] Location physics systems improvements\n\n## Release 0.0.7a\n\n- [x] Music\n- [x] Chat\n- [x] Galaxy map\n  - [x] Able to view stars\n  - [x] Zoom in to view planets\n  - [x] Set waypoint\n  - [x] Better galaxy generation\n- [x] Spawn player near shop \u0026 asteroids\n- [x] Add basic fabricator\n- [x] Creative mode\n- [x] Create survival mode\n  - [x] Save player data\n- [x] Create world backups system\n- [x] LOD performance improvements\n- [x] Rotating planet\n  - [x] On-planet skybox\n- [x] Dropped item entity\n  - [x] When storage is broken, drop items on ground\n  - [x] If not enough inventory room when player is mining something, drop item\n- [x] Fix missing chunks on planets\n- [x] Update to Bevy 0.15\n- [x] Add recipes\n  - [x] Add intermediate blocks + items\n- [x] Rework item rendering to be more consistent\n\n## Release 0.0.6a\n\n- [x] Place rotated blocks\n- [x] Add main menu\n  - [x] Customizable settings\n  - [x] Specify connection target\n- [x] Missiles\n  - [x] Auto targetting\n  - [x] Explosion logic\n- [x] Shields\n  - [x] Emit a spherical shield\n    - [x] Shield size based on multiblock structure\n  - [x] Absorb incoming damage\n- [x] Inventory UI improvements\n  - [x] Scrollable inventory\n- [x] Escape functionality\n  - [x] Escape can now be used to close the foremost open UI menus\n  - [x] If no such menus are available, it will instead open the pause menu\n    - [x] Pause menu\n      - [x] Resume\n      - [x] Change Settings\n      - [x] Disconnect\n      - [x] Quit Game\n- [x] LOD Fixes\n  - [x] Consolidate LOD + Normal chunk rendering into one source of truth\n  - [x] LOD performance improvements via combining meshes + culling sides\n- [x] Block data\n  - [x] Storable fluids\n- [x] Item data\n- [x] Money\n- [x] In-flight UI\n  - [x] Weapons selection hotbar\n  - [x] Speed display\n  - [x] Energy display\n  - [x] A way of selecting which systems to use preventing use of systems that are not meant to be actively used\n- [x] Wires\n  - [x] Logic\n    - [x] Logic blocks\n    - [x] Wiring system\n    - [x] Logic receivers\n- [x] Planet generation \u0026 LOD overhaul\n  - [x] Performance improvements\n  - [x] GPU-based generation\n- [x] Remove bevy system ambiguities\n- [x] Support NxN texture loading (where n is power of 2)\n- [x] Update to bevy 0.14\n\n## Release 0.0.5a\n\n- [x] Add a gravity well block\n  - [x] Remove snapping to structures on collision\n- [x] Camera system\n  - [x] Camera block\n  - [x] Use left/right to switch between ship cameras\n    - [x] Changes where your view is\n- [x] Shops\n  - [x] Sell blocks/items\n  - [x] Buy blocks/items\n  - [x] Generates randomly\n    - [x] Implement random structure Generation\n  - [x] Implement currency system for player\n    - [x] Money GUI\n  - [x] Shop GUI\n- [x] Mining beam system\n  - [x] Mining beam block\n    - [x] Can be placed in line to create more powerful miners\n  - [x] Mines the first block hit by the beam after a given time\n    - [x] Inserts the item into the ship's inventory\n    - [x] Hold lmb to continually fire the laser\n- [x] Pirates\n  - [x] Create a number of pirate ships\n    - [x] Each ship has a difficulty\n  - [x] Difficulty of spawns scales off player's money \u0026 ship's number of blocks\n  - [x] Basic AI\n    - [x] Spawn within 2 sectors of player\n    - [x] Spawn in fleets based on player's difficulty\n    - [x] If within ~1 sector of player, fly towards player\n    - [x] Shoot towards player, trying to predict their position based off distance \u0026 velocity\n- [x] Shop\n  - [x] Buy from shop\n  - [x] Sell to shop\n  - [x] Players have money\n  - [x] For now shops have unlimited stock \u0026 funds\n  - [x] Shop block\n- [x] Animated textures\n- [x] Block data system\n  - [x] Support for blocks that store their own data\n  - [x] Storage block\n    - [x] A block that stores an amount of items\n    - [x] Can be interacted with to view the items\n      - [x] A GUI to view items\n- [x] Sounds\n  - [x] Laser cannon fire\n  - [x] Block take damage\n  - [x] Thrusters moving\n  - [x] Space ship idle\n  - [x] Background space music\n  - [x] Block place/break\n- [x] Multiblock machines\n  - [x] Revamp power generation to use reactor multiblock structure\n- [x] Colored laser\n  - [x] Colored glass placed in front of laser\n- [x] Inventory GUI\n  - [x] Able to open inventory\n  - [x] Abstract the 3d block GUI camera\n  - [x] Fix the 3d block GUI camera to not render anything except GUI blocks\n- [x] Fix seeing through cracks in blocks\n- [x] Lods\n  - [x] Reduced detail rendering of far away chunks to see the entire planet\n- [x] Update to bevy 0.11\n  - [x] Update physics\n  - [x] Update bevy\n- [x] Update to bevy 0.12\n  - [x] Update physics\n  - [x] Update bevy\n- [x] Update to bevy 0.13\n  - [x] Update physics\n  - [x] Update bevy\n- [x] Update asteroid generation to make it decent\n  - [x] Add ores to mine on them\n- [x] GUI to interact with inventory\n  - [x] Easier way of adding 3d blocks to GUI\n  - [x] Move items around in inventory via mouse\n- [x] Structure build mode\n  - [x] Interact with build block to enter build mode\n  - [x] Build mode\n    - [x] Camera becomes a noclip free cam and goes outside of player's body.\n    - [x] Player no longer piloting ship, \u0026 is able to create + destroy blocks on the ship but ONLY the ship\n    - [x] Symmetry modes are added that will mirror blocks on user-defined axis\n\n## Release 0.0.4a\n\n- [x] Galaxy Generation\n  - [x] Stars procedurally generated in spiral-like pattern based on seed\n    - [x] Create star\n      - [x] Light emits from star\n      - [x] Load star within system\n  - [x] Planets generate around stars\n    - [x] Biospheres depend on how close they are to the sun\n    - [x] Dynamic biospheres based off temperature\n    - [x] Only generate if planet is close enough to player\n    - [x] Cube planets\n      - [x] Planets will now be cubes instead of flat planes, and will be about the size of the sector\n      - [x] Redo saving/loading of planets\n      - [x] Dynamically generate chunks \u0026 unload them based on players' positions close to planet\n      - [x] Make generation work on all faces of planet\n      - [x] Block orientation for every block\n  - [x] Biospheres\n    - [x] Speed up terrain generation\n    - [x] Make molten biosphere\n    - [x] Enhance grass biosphere\n    - [x] Create icy biosphere\n  - [x] Asteroids\n    - [x] For now just floating rocks in space\n  - [x] Save generated universe\n    - [x] Save planet locations\n  - [x] Fix broken ship functionality\n    - [x] Make entities no longer pass through loading structures.\n- [x] Align body with structure\n  - [x] Switches to FPS Camera\n  - [x] Aligns the player to that structure\n    - [x] Fix child locations being not updated based on transform relative to parent\n  - [x] Add button to align to structure facing\n  - [x] De-align, switch back to free camera\n    - [x] Create free camera\n\n## Release 0.0.3a\n\n- [x] Infinite universe\n  - [x] (**Client**) Player can travel any distance from 0,0,0 with no noticable issues, and everything moves relaitve to player\n  - [x] (**Server**)\n    - [x] Objects move relative to player world they are a part of\n    - [x] Player world moves relative to its player\n    - [x] Players can be a part of the same world if they are close enough\n    - [x] Requires rewrite of bevy_rapier to support multiple physics worlds\n      - [x] Merge PR https://github.com/dimforge/bevy_rapier/pull/328\n- [x] Update to bevy 0.10.0\n- [x] Performant ships\n  - [x] Ability to have 50 small-sized ships loaded with minimal performance impact\n- [x] Dynamic object loading\n  - [x] (**Client**)\n    - [x] Unload objects that are too far away\n    - [x] Request entities that server sends if they don't have the entity for them\n  - [x] (**Server**)\n    - [x] Unload objects that are too far from any player\n    - [x] Load objects that are close to a player \u0026 send that info to client\n    - [x] Only send information about objects to clients that are close enough to have them loaded\n- [x] Display coordinates in top left (sector, local)\n- [x] Revamp rendering to allow for more than cubes\n- [x] Display hotbar items\n  - [x] 3d models for blocks\n\n## Release 0.0.2a\n\n- [x] Improved state management\n  - [x] Client state management\n  - [x] Server state management\n  - [x] Core able to utilize both states\n    - [x] Block resource loaded in PreLoading state\n    - [x] Blocks loaded in Loading state\n    - [x] Systems loaded in PostLoading state\n- [x] Ability to pilot Ship\n  - [x] Mouse movements steer ship around ship core\n  - [x] Standard movement controls mapped to ship acceleration\n  - [x] Interact with ship core to enter piloting mode, press interact button again to exit\n  - [x] Create max ship speed\n- [x] Ship core\n  - [x] Interact with this block to pilot the ship\n  - [x] Cannot be mined while other blocks are present on the ship\n  - [x] Create block\n- [x] Localized planetary gravity\n  - [x] All entities near planet's radius are subject to its gravity towards its relative downward vector\n    - [x] The gravitational pull should scale inversely exponentially the farther the distance from a certain threshold (most likely the highest chunk) then remain constant past that point\n- [x] Ship systems\n  - [x] Energy system\n    - [x] Energy producer block\n    - [x] Energy storage block\n    - [x] Energy storage system\n    - [x] Energy generation system\n  - [x] Thruster system\n  - [x] Thruster block\n  - [x] Allows the ship to move + rotate\n    - [x] Faster movement based on # of thrusters\n    - [x] Faster rotation based on # of thrusters\n    - [x] More energy consumption per thruster\n  - [x] Laser cannon system\n    - [x] Laser cannon block\n      - [x] Can be placed in lines to create more powerful lasers\n    - [x] Click lmb/hold to fire the laser\n      - [x] The laser is on a cooldown\n  - [x] Ship hull block\n- [x] Ability to place more than one block\n  - [x] Hotbar\n    - [x] Rendering of hotbar\n    - [x] Reads items from inventory\n  - [x] Inventory\n  - [x] Items\n    - [x] Item stacks\n  - [x] Way of select which item\n- [x] Store block damage\n- [x] Ability to save ships to disk + load them\n  - [x] Implement console commands\n\n## Release 0.0.1a\n\n- [x] Player Movement\n  - [x] FPS Camera\n- [x] Dynamic Input system\n- [x] Structure\n  - [x] Planet\n  - [x] Ship\n- [x] Asset Loading\n  - [x] Fix UV mapping floating point errors\n- [x] Planet Generation\n  - [x] Grass planet generator\n- [x] Server/Client\n  - [x] Server controls planet\n  - [x] Each player controls its own movement (100% trusted)\n- [x] Ship creation\n- [x] Block registration\n  - [x] Block registry with numeric + fixed string IDs\n- [x] Player entity\n- [x] Game State\n- [x] Network communication\n- [x] Sync bodies from server to client\n- [x] Ability to break/replace block\n  - [x] Dynamic meshing\n- [x] Dynamic physics bodies\n  - [x] Block break events sent to server, server sends back block changed event\n  - [x] Selects nearest structure\n- [x] Integrate physics system\n  - [x] Physics generator for structures\n    - [x] Chunk-based physics\n  - [x] Player collider\n- [x] Integrate bevy engine\n  - [x] Rendering method for structures\n    - [x] Chunk-based rendering\n- [x] Add Crosshair\n- [x] Support re-sizable window\n\n## Everything that will likely be done in the future\n\n- Shops\n  - Peace zone?\n  - Prices based on supply + rarity\n    - Keep supply relatively equal between nearby shops\n  - Each shop has its own supply of money that it cannot go below\n- Biosphere Improvements\n  - Ice biosphere glaciers\n  - Structures\n    - Rocks spawning\n    - Undergrowth\n    - 1 More tree type\n  - Groundwork for biomes\n    - Planes\n    - Redwood forest\n    - 1 Additional forest\n    - Ocean\n- Wires\n  - Electrical\n\n## NPCs\n\n### Factions\n\nNPC controlled factions store reputation of other factions + players\n\nFactions have different attributes\n\n- One may steal your ship blueprints\n  - To balance this:\n    - scrap is collected when you mine melting down ships instead of the actual blocks\n      - Different scrap types\n    - Substitute expensive blocks for less expensive ones if needed\n    - If ship is below 50% success rate, don't produce it again\n- Dynamic faction expansion\n- Bounty board\n- Take down X ship\n- Selling the ship\n- Selling ship designs\n- Buying ship designs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAnthonyTornetta%2FCosmos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAnthonyTornetta%2FCosmos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAnthonyTornetta%2FCosmos/lists"}