Lightning-fast Entity Component System for Godot 4.x
Build 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.
# Create entities with components
var player = Entity.new()
player.add_component(C_Health.new(100))
player.add_component(C_Velocity.new(Vector2(5, 0)))
# Systems process entities with specific components
class_name MovementSystem extends System
func query(): return q.with_all([C_Velocity, C_Transform])
func process(entity: Entity, delta: float):
var velocity = entity.get_component(C_Velocity)
var transform = entity.get_component(C_Transform)
transform.position += velocity.direction * delta
- Install: Download to
addons/gecs/
and enable in Project Settings - Follow Guide: Get your first ECS project running in 5 minutes →
- Learn More: Understand core ECS concepts →
- 🎯 Godot Integration - Works with nodes, scenes, and editor
- 🚀 High Performance - Optimized queries with automatic caching
- 🔧 Flexible Queries - Find entities by components, relationships, or properties
- 📦 Editor Support - Visual component editing and scene integration
- 🎮 Battle Tested - Used in production games
All documentation is located in the addon folder:
→ Complete Documentation Index
- Getting Started - Build your first ECS project (5 min)
- Core Concepts - Understand Entities, Components, Systems, Relationships (20 min)
- Best Practices - Write maintainable ECS code (15 min)
- Troubleshooting - Solve common issues quickly
- Component Queries - Advanced property-based filtering
- Relationships - Entity linking and associations
- Observers - Reactive systems for component changes
- Performance Optimization - Make your games run fast
- Zombies Ate My Neighbors - Action arcade game
- Breakout Clone - Classic brick breaker
- Discord: Join our community
- Issues: Report bugs or request features
- Discussions: Ask questions and share projects
MIT - See LICENSE for details.
GECS is provided as-is. If it breaks, you get to keep both pieces. 😄