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 syncVECSSyncStrategy abstraction with a default server-authoritative snapshot replication (dirty-checked deltas + periodic reconciliation + anti-ghost). Transport is Godot's MultiplayerAPI (RPC).

Installation

  1. Copy the addons/vortarisecs/ folder into your project.
  2. Open the project in the Godot editor and enable VortarisECS under Project → Project Settings → Plugins.
  3. Done — the VECS singleton and all VECS* 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.

Reviews

VortarisECS has no reviews yet.

Login to write a review.

Consider supporting the creators!

If you enjoyed this asset consider supporting its creator. Follow the link below.