Distributed Entity Component System for Go
Proof-of-concept implementation of a distributed Entity Component System in Go. This project is a work in progress and is not intended for production use. And entity component system is a design pattern that is used to separate data from logic in a game engine. This allows for a more modular and flexible design such as add components to entities at runtime. This project is a distributed implementation of an entity component system. This means that the entities and components in different "worlds" are ran on different nodes in a network. This allows for a more scalable design where the entities and components can be distributed over multiple nodes in a network.
go get github.com/SvenDH/recs
For now there is a default world with moving boids that is rendered in a web browser. To run the example use the following command in the root of the project
go run . data
Add a empty entity to a world to create the world
curl -XPOST localhost:8080/world -d '{}'
Now you can navigate to http://localhost:8080 in your browser to view the world
- Add entities and components to a world (uses Arche as ECS implementation)
- Distributed worlds (uses Hashicorp's Raft implementation)
- Log/WAL based world persistence
- SSE based real-time world updates
- Entity indexing for different queries (e.g. get all entities within a certain radius)
- Web based world viewer and editor
- Make editing and viewing worlds and entities permission based
- Add tests