Description
Changelog
Reviews (0)
VortarisECS
A modern, data-oriented ECS (Entity-Component-System) framework for Godot 4.7+, written in C++ as a GDExtension (godot-cpp). Easy to use, robust, extensible and network-synchronizable — with a typed C++ hot path and a friendly GDScript API.
Features
- Pure C++ data components — components are plain trivially-copyable structs stored in cache-friendly archetype columns (SoA). A declarative schema macro exposes fields for GDScript access and binary serialization.
- Lightweight entity handles — 64-bit layered ids (slot + generation); O(1) stale-handle detection; network preassigned ids.
- Fast queries — archetype membership in O(1); incrementally maintained
query cache;
.changed()change detection. - Deferred command buffer — batched structural changes with a single archetype transition per entity and one cache invalidation per flush.
- C++-first systems — typed
world.for_each<Position, Velocity>hot path with zero Variant overhead; group scheduling with dependency ordering, per-system timers and flush modes; GDScript systems via_script_process. - Observers / events — ADDED / REMOVED / CHANGED / MATCHED / UNMATCHED / custom events, re-entrancy safe.
- Deterministic binary serialization — little-endian, fixed-width, byte-identical snapshots.
- Pluggable network sync —
VECSSyncStrategyabstraction with a default server-authoritative snapshot replication (dirty-checked deltas + periodic reconciliation + anti-ghost). Transport is Godot's MultiplayerAPI (RPC).
Installation
- Copy the
addons/vortarisecs/folder into your project. - Open the project in the Godot editor and enable VortarisECS under Project → Project Settings → Plugins.
- Done — the
VECSsingleton and allVECS*classes are available from GDScript.
Quickstart
# The engine singleton (auto-created).
var world: VECSWorld = VECS
# Spawn an entity and add a script-defined component.
var e: VECSEntity = world.create_entity()
world.add_component(e, "Position", {"x": 10.0, "y": 5.0})
# Type-safe C++ systems iterate the same archetypes.
# Query and iterate (GDScript convenience view).
for entity in world.query().with_component("Position").each():
var pos: VECSComponent = entity.get_component("Position")
pos.setf("x", pos.getf("x") + 1.0)
Platforms
Prebuilt binaries for Windows, Linux and macOS are included
(windows x86_64 / linuxbsd x86_64 / macos universal), for both debug and
release. Requires a 64-bit platform; Godot 4.7 or newer.
Version
- Current: 0.1.3 (2026-08-11)
- Compatibility: Godot 4.7+ (GDExtension, forward-compatible)
License
MIT — see LICENSE.
Links
- Repository: https://github.com/Vortaris/VortarisECS
- Documentation: https://github.com/Vortaris/VortarisECS/blob/main/docs/quickstart.md
Changelog for version v0.3.2
No changelog provided for this version.