{"id":27443528,"url":"https://github.com/invadingoctopus/comedot","last_synced_at":"2025-04-15T02:47:30.552Z","repository":{"id":234992495,"uuid":"789659549","full_name":"InvadingOctopus/comedot","owner":"InvadingOctopus","description":"Godot game template and component-based framework optimized for 2D pixel art.","archived":false,"fork":false,"pushed_at":"2025-04-13T23:48:10.000Z","size":2313,"stargazers_count":247,"open_issues_count":0,"forks_count":18,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2025-04-15T02:47:26.181Z","etag":null,"topics":["2d-game-engine","2d-game-framework","2d-graphics","component-architecture","component-library","components","composition","ecs","game-development","game-engine","godot","godot-addon","godot-engine","godot-game","godot-plugin","godot4","godot4-5","pixel-art"],"latest_commit_sha":null,"homepage":"https://godotengine.org/asset-library/asset/3887","language":"GDScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/InvadingOctopus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"github":null,"patreon":"invadingoctopus","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"custom":null}},"created_at":"2024-04-21T07:27:16.000Z","updated_at":"2025-04-14T17:31:38.000Z","dependencies_parsed_at":"2024-11-06T10:47:10.584Z","dependency_job_id":"6792c3a9-3382-462c-9972-88cf6055b350","html_url":"https://github.com/InvadingOctopus/comedot","commit_stats":null,"previous_names":["invadingoctopus/godoctopus","invadingoctopus/comedot"],"tags_count":1,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InvadingOctopus%2Fcomedot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InvadingOctopus%2Fcomedot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InvadingOctopus%2Fcomedot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InvadingOctopus%2Fcomedot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/InvadingOctopus","download_url":"https://codeload.github.com/InvadingOctopus/comedot/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248997086,"owners_count":21195797,"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":["2d-game-engine","2d-game-framework","2d-graphics","component-architecture","component-library","components","composition","ecs","game-development","game-engine","godot","godot-addon","godot-engine","godot-game","godot-plugin","godot4","godot4-5","pixel-art"],"created_at":"2025-04-15T02:47:30.013Z","updated_at":"2025-04-15T02:47:30.543Z","avatar_url":"https://github.com/InvadingOctopus.png","language":"GDScript","readme":"# Comedot\n\n_Component-based framework and project template for [Godot][godot]_\n\n![Godot+Comedot Logo][logo]\n\n**The goal is to be an all-in-one toolkit for 2D games** (platformers, shoot-em-ups, RPGs, turn-based strategy or puzzle) where you build scenes by adding components to entities and tweaking their parameters in the UI. _\"Entities\"_ and _\"Components\"_ are like regular Godot Nodes but for gameplay, so you can combine this framework with any other addons or architecture or fetish.\n\n![components-tree]\n\n* Comes with a library of components for the common stuff needed in most games: Different types of player movement, combat, collectibles, interactions, upgrades etc.\n* UI controls like a stats HUD and dynamic buttons for special skills, inventory etc.\n* Template scenes for Logo → Main Menu → Options, Input Remapping, Pause Overlay\n* Save/Load player preferences via a config file with just `Settings.anyName = 69`\n* A neutron star spoonful of helper functions \u0026 debugging tools.\n* Commented \u0026 documented code.\n* Free-to-use 3rd-party assets for quick prototyping.\n\n\u003e [!WARNING]\n\u003e _This is still mostly a private personal project; it's what I'm using to make [future GotYs][itch] while learning Godot as I go. The API eschews certain conventions like ugly underscores and may change frequently:_ **No backwards compatibility is guaranteed!**\n\n\n## Examples \n\n⭐️ The [composition architecture][composition-over-inheritance] lets you do cool shit like putting a `GunComponent` and `MouseRotationComponent` on any object and _It Just Works:_ [(imgur)][pew-pew-plants]  \n\nhttps://github.com/user-attachments/assets/bc76f0b2-62f7-4fd5-8d26-fef27b182e22\n\n⭐️ Implement dynamic gameplay and easily change abilities/buffs at runtime; just add/remove components in simple event handlers, like this example of swapping between platformer physics and flying/overhead movement: [(imgur)][swapping-components]  \n\nhttps://github.com/user-attachments/assets/9c71c166-4e0c-47c7-afc1-3334022366cd\n\n⬆️ _These scenes are included in_ `/Templates/Examples/`\n\n📈 There's even kawaii charts for monitoring variables in real-time!  \n\n![debug-charts]\n\n\n## How To Use\n\n\u003e [!IMPORTANT]  \n\u003e _Requires Godot 4.5 ~Embrace the Future_ ✨  \n\n1. Clone this repository; This is a Godot template so you must make a local copy of this entire project for each of your games.\n\t* Or you can cherry-pick files from Comedot to use in other templates.\n2. Drag-\u0026-drop nodes from the `/Entities/` and `/Components/` folders into your scene tree.\n\t* `/Templates/` contains scenes and Entities with preset Components as a quick starting point for various gameplay.\n\t* `/Scripts/` contains code for non-Entity nodes.\n\t* `/UI/` contains customizable UI elements for health, ammo, actions, upgrades etc.\n\n![Custom Dock Plugin][comedock]\n\n\u003e [!NOTE]\n\u003e 🧩 A \"component\" is any Godot node that:\n\u003e * Reacts to events (like player input or collisions).\n\u003e * Moves or modifies its parent node or other components.\n\u003e * Contains data for other components to use (like character health and other stats).\n\u003e\n\u003e 🪆 An \"entity\" is a node whose children are components (it may also have non-component children).\n\n🎳 Whenever your game needs an \"actor\" like the player character or a monster, or an object with \"behaviors\" that could be reused for other objects, like interactive items or collectible powerups:\n\n* _Use the included custom dock plugin (the Comedock :) or perform these steps manually:_\n1. Create a new **Entity** node: a `Node2D/Sprite2D/CharacterBody2D` etc. with the `Entity.gd` script attached.\n2. Add **Component** child nodes to the entity. A component is also any `Node/Area2D` etc. with a script that `extends Component`\n3. Modify component parameters in the Inspector sidebar.\n4. Save that entity+components subtree as a standalone scene file, to organize it separately from the main \"world scene\" and quickly create copies of it anywhere.\n\n\u003e [!TIP]\n\u003e 📜 **Read [HowTo.md][howto] to see how to do basic tasks or fix common issues.**  \n\u003e See [Conventions.md][Conventions] for the style guide and design rules this project tries to follow.\n\n\n----\n\n[Comedot][repository] ©? MMXXV [ShinryakuTako@GitHub][github] • [Syntaks.io@Discord][discord] • [Syntaks@Mastodon][mastodon]\n\n\u003e 💕 THANKS:  \n\u003e * Tilesets:\thttps://kenney.nl/assets/1-bit-pack  \n\u003e * Font:\t\tJayvee Enaguas (HarvettFox96) https://www.dafont.com/pixel-operator.font\n\n[repository]: https://github.com/invadingoctopus/comedot\n[website]: https://invadingoctopus.io\n[license]: License.txt\n[patreon]: https://www.patreon.com/invadingoctopus\n[discord]: https://discord.gg/jZG3cBFt7u\n[github]:  https://github.com/ShinryakuTako\n[itch]:    https://syntaks.itch.io\n[twitter]: https://twitter.com/invadingoctopus\n[mastodon]:https://mastodon.gamedev.place/@Syntaks\n\n[howto]:\t\tHowTo.md\n[conventions]:\tConventions.md\n[thanks]:\t\tThanks.md\n[todo]:\t\t\tToDo.md\n\n[godot]: https://github.com/godotengine/godot \"Godot Game Engine\"\n[composition-over-inheritance]: https://en.wikipedia.org/wiki/Composition_over_inheritance\n[entity–component–system]: https://en.wikipedia.org/wiki/Entity_component_system\n\n[logo]: /Assets/Logos/ComedotExtraLogo.png \"Godot+Comedot Logo\"\n[components-tree]: https://i.imgur.com/8yMMRPR.png \"🌳 Example Components Tree for a Player Entity\"\n[pew-pew-plants]: https://i.imgur.com/1XyiqVr.mp4 \"Trees with Guns\"\n[swapping-components]: https://i.imgur.com/Y7vbdpl.mp4 \"Swapping Control Components\"\n[debug-charts]: https://i.imgur.com/xEqbXHs.png \"Debug Chart Windows\"\n[comedock]: https://i.imgur.com/j5f2xna.png \"Godot Dock Plugin\"\n","funding_links":["https://patreon.com/invadingoctopus","https://www.patreon.com/invadingoctopus"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finvadingoctopus%2Fcomedot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finvadingoctopus%2Fcomedot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finvadingoctopus%2Fcomedot/lists"}