{"id":19315188,"url":"https://github.com/csprance/gecs","last_synced_at":"2026-04-02T00:10:13.902Z","repository":{"id":260211028,"uuid":"880625324","full_name":"csprance/gecs","owner":"csprance","description":"Godot Entity Component System - GECS","archived":false,"fork":false,"pushed_at":"2026-03-18T14:49:01.000Z","size":115764,"stargazers_count":457,"open_issues_count":5,"forks_count":24,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-03-18T16:31:48.608Z","etag":null,"topics":["ecs","entity-component-system","godot"],"latest_commit_sha":null,"homepage":"","language":"GDScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/csprance.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2024-10-30T03:38:08.000Z","updated_at":"2026-03-18T14:49:53.000Z","dependencies_parsed_at":"2024-11-07T00:34:39.821Z","dependency_job_id":"c692594e-861c-4ec6-bbb0-555fe2d13ddc","html_url":"https://github.com/csprance/gecs","commit_stats":null,"previous_names":["csprance/godot-breakout-ecs","csprance/gecs","csprance/gecs-breakout"],"tags_count":60,"template":false,"template_full_name":null,"purl":"pkg:github/csprance/gecs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csprance%2Fgecs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csprance%2Fgecs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csprance%2Fgecs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csprance%2Fgecs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/csprance","download_url":"https://codeload.github.com/csprance/gecs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csprance%2Fgecs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31293285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ecs","entity-component-system","godot"],"created_at":"2024-11-10T01:05:02.888Z","updated_at":"2026-04-02T00:10:13.875Z","avatar_url":"https://github.com/csprance.png","language":"GDScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GECS\n\n\u003e **Entity Component System for Godot 4.x**\n\nBuild scalable, maintainable games with clean separation of data and logic. GECS integrates seamlessly with Godot's node system while providing powerful query-based entity filtering.\n\n## Key Features\n\n- 🎯 **Godot Integration** - Works with nodes, scenes, and editor\n- 🚀 **High Performance** - Optimized queries with automatic caching\n- 🔧 **Flexible Queries** - Find entities by components, relationships, or properties\n- 🔍 **Debug Viewer** - Real-time inspection and performance monitoring\n- 📦 **Editor Support** - Visual component editing and scene integration\n- 🎮 **Battle Tested** - Used in games being actively developed\n- 🌐 **Multiplayer** - GECS goes Multiplayer! Check out the [GECS Network Module](addons/gecs/network/README.md)\n\n## Requirements\n\nGodot 4.x (tested with 4.6+)\n\n## Installation\n\n### Option A: Godot Asset Library\n\nSearch for **\"GECS\"** in the Godot editor AssetLib tab and click Install.\n\n### Option B: Manual Copy\n\nDownload the release zip, copy `addons/gecs/` into your project, then enable the plugin in **Project Settings \u003e Plugins**.\n\n### Option C: Git Submodule\n\n```bash\ngit submodule add -b release-v6.8.1 https://github.com/csprance/gecs.git addons/gecs\n```\n\nThen enable the plugin in **Project Settings \u003e Plugins**.\n\n## Quick Start\n\n```gdscript\n# All component properties need a default value or Godot will error on export\n\n# Pattern 1: @export var with default (no constructor needed)\nclass_name C_Health extends Component\n@export var max_health: int = 100\n@export var current_health: int = 100\n\n# Pattern 2: _init() with parameter AND a default on the property\nclass_name C_Velocity extends Component\n@export var direction: Vector3 = Vector3.ZERO\nfunc _init(v: Vector3 = Vector3.ZERO) -\u003e void:\n    direction = v\n\n# Create entities and add components\nvar player = Entity.new()\nplayer.add_component(C_Health.new())\nplayer.add_component(C_Velocity.new(Vector3(5, 0, 0)))\n\nvar target = Entity.new()\ntarget.add_component(C_Health.new())\ntarget.add_component(C_Velocity.new(Vector3(-5, 0, 0)))\n\n# Add entities to the world\nECS.world.add_entity(player)\nECS.world.add_entity(target)\n\n# Add relationships between entities\nplayer.add_relationship(Relationship.new(C_AllyTo.new(), target))\n\n# Systems define which entities to process\nclass_name VelocitySystem extends System\n\nfunc query() -\u003e QueryBuilder:\n    return q.with_all([C_Velocity])\n\nfunc process(entities: Array[Entity], components: Array, delta: float) -\u003e void:\n    for entity in entities:\n        var vel := entity.get_component(C_Velocity) as C_Velocity\n        entity.position += vel.direction * delta\n\n# Register the system and start processing\nECS.world.add_system(VelocitySystem.new())\n\nfunc _process(delta: float) -\u003e void:\n    ECS.process(delta)\n```\n\n## Quick Start Steps\n\n1. **Install**: Download to `addons/gecs/` and enable in Project Settings\n2. **Follow Guide**: [Get your first ECS project running in 5 minutes →](addons/gecs/docs/GETTING_STARTED.md)\n3. **Learn More**: [Understand core ECS concepts →](addons/gecs/docs/CORE_CONCEPTS.md)\n\n## Complete Documentation\n\n**All documentation is located in the addon folder:**\n\n**→ [Complete Documentation Index](addons/gecs/README.md)**\n\n### Quick Navigation\n\n- **[Getting Started](addons/gecs/docs/GETTING_STARTED.md)** - Build your first ECS project (5 min)\n- **[Core Concepts](addons/gecs/docs/CORE_CONCEPTS.md)** - Understand Entities, Components, Systems, Relationships (20 min)\n- **[Best Practices](addons/gecs/docs/BEST_PRACTICES.md)** - Write maintainable ECS code (15 min)\n- **[Troubleshooting](addons/gecs/docs/TROUBLESHOOTING.md)** - Solve common issues quickly\n\n### Advanced Features\n\n- **[Component Queries](addons/gecs/docs/COMPONENT_QUERIES.md)** - Advanced property-based filtering\n- **[Relationships](addons/gecs/docs/RELATIONSHIPS.md)** - Entity linking and associations\n- **[Observers](addons/gecs/docs/OBSERVERS.md)** - Reactive systems for component changes\n- **[Performance Optimization](addons/gecs/docs/PERFORMANCE_OPTIMIZATION.md)** - Make your games run fast\n\n## Example Games\n\n- **[GECS-101](https://github.com/csprance/gecs-101)** - A simple example\n- **[Zombies Ate My Neighbors](https://github.com/csprance/gecs/tree/zombies-ate-my-neighbors/game)** - Action arcade game\n- **[Breakout Clone](https://github.com/csprance/gecs/tree/breakout/game)** - Classic brick breaker\n\n## Community\n\n- **Discord**: [Join our community](https://discord.gg/eB43XU2tmn)\n- **Issues**: [Report bugs or request features](https://github.com/csprance/gecs/issues)\n- **Discussions**: [Ask questions and share projects](https://github.com/csprance/gecs/discussions)\n\n## License\n\nMIT - See [LICENSE](LICENSE) for details.\n\n---\n\n_GECS is provided as-is. If it breaks, you get to keep both pieces._\n\n[![Star History Chart](https://api.star-history.com/svg?repos=csprance/gecs\u0026type=Date)](https://star-history.com/#csprance/gecs\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsprance%2Fgecs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcsprance%2Fgecs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsprance%2Fgecs/lists"}