$ show InvadingOctopus/comedot
Comedot is a Godot Engine 4.8+ framework for 2D game development that implements an Entity-Component-System architecture. It provides over 120 reusable components for gameplay mechanics including combat, movement, control, abilities, upgrades, inventory, turn-based systems, and UI elements. The framework emphasizes composition over inheritance, allowing developers to mix and match components to create entities for any 2D game genre. It includes template scenes for quick starts, editor plugins for component management, and extensive debugging tools. While actively maintained, the codebase shows signs of ongoing development with numerous experimental features and TODO comments indicating areas for improvement.
The LLM identified 5 files worth highlighting for reuse:
The Payload system (CallablePayload, ScriptPayload, NodePayload, StatModifierPayload) encapsulates executable effects for abilities, upgrades, and collectibles. It demonstrates excellent use of polymorphism and resource-based configuration, allowing developers to define reusable effect logic that can be triggered by various game systems. The system is isolated, depends mainly on Godot core, and could be extracted to another Godot project with minimal modification.
StateMachine.gd provides a generic, isolated state machine implementation that can be used in any Godot project. It demonstrates clean state management patterns with clear state transitions and event handling. The component is highly reusable, has minimal dependencies, and showcases non-obvious skill in creating a flexible, developer-friendly API for managing complex entity behaviors.
InputComponent.gd provides normalized, processed input state for other components to consume, cleanly separating input handling from gameplay logic. It supports both player and AI/scripted control through a unified interface. The component is relatively isolated (depending mainly on GlobalInput autoload), demonstrates good input abstraction patterns, and could be extracted to another Godot project with minimal modification.
ComponentSwapperComponent.gd allows dynamically changing an entity's components at runtime, enabling interesting gameplay mechanics like character class changes or ability loadouts. The system is self-contained, demonstrates the strategy pattern for runtime behavior modification, and could be extracted with minimal changes. It showcases non-obvious skill in managing component lifecycle during swaps while maintaining entity integrity.
Debug.gd provides runtime debugging tools including watchlists, temporary labels, chart visualization, and test mode functionality. It's an isolated system that significantly improves developer productivity during game creation and testing. The component demonstrates good practices for creating reusable debugging tools that can be dropped into any Godot project, featuring non-obvious skill in balancing functionality with performance considerations.