ecs-faq
relic
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ecs-faq
-
Show HN: Interactive ECS Systems/Component Explorer for Cities: Skylines 2
The Wikipedia article provides a broad overview, while this FAQ offers a more systematic exploration: https://github.com/SanderMertens/ecs-faq
-
Sparsey 0.11.0 Release - Better Performance
Sparsey is an Entity Component System focused on flexibility, conciseness and providing features exclusive to its sparse set-based implementation.
-
Beginner looking for code review : my ECS lib !
For further reading, here is a great article about these different approaches within Rust specifically: https://csherratt.github.io/blog/posts/specs-and-legion/ and here is a great general resource for commonly-used terms and techniques in ECS development: https://github.com/SanderMertens/ecs-faq
-
Ways to create game engines
Godot has a node based system (nodes can have child nodes linked to them, and there are different types of nodes for the type of functionality they represent). Another alternative could be a more OOP approach (utilising inheritance as the main means of extending functionality), not aware of any modern engines that take this approach anymore. It’s also worth noting that ECS implementations can differ wildly, this faq from the flecs creator has a good rundown on what some of different variants are.
-
Is ECS really the way to go in C++?
You might wanna take a look at https://github.com/SanderMertens/ecs-faq, it lays this all out better than I can.
-
Flecs 3.2, a high performance game development framework for C and C++ is out!
To find more about ECS, see the FAQ: https://github.com/SanderMertens/ecs-faq/blob/master/README.md
-
Functional relational programming model in Clojure(Script)
Using the relational model for app data in memory is really interesting.
Martin Fowler wrote about doing that as a way to get around the "object-relational mismatch" issue[1]. Richard Fabian describes "data-oriented design" as having a lot of overlap with the relational model[2]. ECSes becoming very popular in game engines are basically in-memory relational databases where "components" are "tables"[3].
[1]: https://martinfowler.com/bliki/OrmHate.html
[2]: https://dataorienteddesign.com/dodbook/
[3]: https://github.com/SanderMertens/ecs-faq#what-is-ecs
-
does an ECS system need unique identifier ( uuid ) ?
This is the ECS FAQ I'm currently using.
-
What are some things you have used ECS for?
While Unity's DOTS/ECS is positioned as solving performance issues for large numbers of objects, there are a number of other advantages. See https://github.com/SanderMertens/ecs-faq for a more in-depth look. IMHO the reusability and extensibility ECS encourages is as valuable as any performance increase. Compared to the GameObject style, which encourages random state mutations and side-effects, ECS enforces a more functional style, which results in code that is easier to reason about and test.
-
Dominion VS Artemis, the missing benchmarks (link in the comments)
thanks, i think a little more background on the ECS world will help you get the context, this is from the author of Flecs: https://github.com/SanderMertens/ecs-faq
relic
-
FoundationDB: A Distributed Key-Value Store
I've been tooling around with "Tuple Database", which claims to be FoundationDB for the frontend (by the original dev of Notion).
https://github.com/ccorcos/tuple-database/
I have found it conceptually similar to Relic or Datascript, but with strong preformance guarantees - something Relic considers a potential issue. It also solves the problem of using reactive queries to trigger things like popups and fullscreen requests, which must be run in the same event loop as user input.
https://github.com/wotbrew/relic
-
Use of Posh for frontend development?
As an alternative to datascript you might be interested to try https://github.com/wotbrew/relic which does materialized views of queries with incremental maintenance.
-
Out of the Tar Pit (2006) [pdf]
I came across this after seeing relic[0] submitted the other day and thought it was pretty interesting.
I've been into CRDTs for a while and have started wondering about generic mechanisms for distributed data. This lead me to read a lot more about the Relational Model of data and eventually to the Event Calculus.
What's interesting to me is that these things end up feeling a lot like CRDTs[1] or Event Sourcing. I haven't quite finished pulling on these threads but the relic link was a timely read considering!
I really liked the first half of this paper and the Authors categorization of complexity. However the second half fell a bit short for me. It seems they made the same mistake as many other people (SQL != Relational) and their idea of Feeders and Observers seems a bit more like an escape hatch than an elegant method for interfacing with the outside would.
[0] https://github.com/wotbrew/relic
- Relic: Functional relational programming for Clojure(Script)
- Relic: Functional relational programming for Clojure(Script).
- Functional relational programming model in Clojure(Script)
- wotbrew/relic: FRP for Clojure(Script)
-
ANN: relic - functional relational database and military grade anti-tar library.
I have recently cut the first alpha release of relic that I'm happy to share: https://github.com/wotbrew/relic.
What are some alternatives?
Node RED - Low-code programming for event-driven applications
walkable - A Clojure(script) SQL library for building APIs: Datomic® (GraphQL-ish) pull syntax, data driven configuration, dynamic filtering with relations in mind
dominion-ecs-java - Insanely fast ECS (Entity Component System) for Java
tigris - Tigris is an Open Source Serverless NoSQL Database and Search Platform.
EntityComponentSystemSamples
hugsql - A Clojure library for embracing SQL
entt - Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more
penpot - Penpot: The open-source design tool for design and code collaboration
Superstar-Game-Suite - A top-down 2D game creation suite for platforming, world building, and story telling.
hyhac - A HyperDex Haskell Client
ygopro - A script engine for "yu-gi-oh!" and sample gui
datascript - Immutable database and Datalog query engine for Clojure, ClojureScript and JS