Skip to content

⚙️ An open-source ECS engine built from ground up in Scala 3

License

Notifications You must be signed in to change notification settings

axyiee/basalt-engine

Repository files navigation

Basalt Engine

An ECS¹ engine built from ground up in Scala 3 with architectural support for Cats Effect and modularity in mind.

Roadmap

  • Entity composition
  • Platform-agnostic object and event abstraction
  • Synchronous (main-thread) code execution
  • Input/output support in queries with FS2
  • State/scene preservation and loading
  • Query composition with entities and streams
  • Data persistence and (de)serialization to Circe

Background

Inspired by Bevy Engine – a data-driven game engine written in Rust – ECS implementation, we focus on logic built on top of resources, entities, and systems (could be simplified as data and functions). This approach is really nice because it's a very flexible and powerful design pattern that allows code to be easily reused, extended, and quickly written.

Reference

¹: Software architectural pattern "Entity component system".

Related projects

  • ECScala - An ECS Scala framework. This is such a nice proof-of-concept that helped this project to get started, so I'd like to thank its developers!
  • flecs - A fast entity component system (ECS) for C & C++
  • Dominion - Insanely fast ECS (Entity Component System) for Java