// the find
leudz/shipyard
Entity Component System focused on usability and flexibility.
Shipyard is a sparse-set based ECS library for Rust, aimed at game developers who want automatic workload parallelism and fine-grained control over component storage. It sits between the complexity of Bevy's ECS and the minimal approach of hecs, offering built-in scheduling, change tracking, and parallel iteration without requiring a full engine.
- Workload system automatically infers parallelism from borrow signatures—systems that don't conflict on component types run concurrently without manual thread management, and there's a visualizer tool to inspect the schedule.
- Sparse-set storage with grouping gives predictable cache behavior; grouped components iterate in the same order with good locality, and the data structure choice is well-documented rather than hidden.
- Change tracking (Added/Modified/Deleted) is built into the storage layer rather than bolted on, so you can filter iterators by mutation status without extra bookkeeping.
- Versioned guides for every major release are included in the repo, which is rare and genuinely useful when you need to maintain older projects or track what changed between versions.
- The ecosystem is thin—860 stars after years of development means finding third-party plugins, integrations, or community answers is noticeably harder than with Bevy or even Specs. You'll write more yourself.
- Grouping (the mechanism for fast multi-component iteration) requires opt-in configuration and has restrictions on what can be grouped; if you misapply it or add components that break group invariants, you get panics at runtime rather than compile errors.
- No stable 1.0 release yet, and the API has broken significantly across versions (0.4 through 0.11 all have migration notes), so betting on it for a long-lived project carries real maintenance risk.
- The serde support is a feature flag but serializing the full world state with entity relationships is still non-trivial and under-documented compared to what you'd expect for save-game or networking use cases.