Object-Oriented Entity-Component-System Design

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Stream - Scalable APIs for Chat, Feeds, Moderation, & Video.
Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.
getstream.io
featured
InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
  1. entt

    Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more

    > Anyone solved this before?

    Sure. Take a look at EnTT[1], a popular C++ ECS library. It comes with two main tools to deal with this: Sorting[2] and groups[3]. EnTT gives you a large spectrum of tools with different trade-offs so that you can tune your code based on usage patterns. Obviously different bits of code will have conflicting access patterns, so there's no one-size-fits-all solution, but EnTT lets you optimise the patterns that are most important to you (based on profiling, hopefully).

    [1] https://github.com/skypjack/entt

    [2] Sort one component to be in the same order as another component, so that they can be efficiently accessed together: https://github.com/skypjack/entt/wiki/Crash-Course:-entity-c...

    [3] https://github.com/skypjack/entt/wiki/Crash-Course:-entity-c...

  2. Stream

    Stream - Scalable APIs for Chat, Feeds, Moderation, & Video. Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.

    Stream logo
  3. habitat

    Modern applications with built-in automation

    Personal anecdote: Habitat was developed as a sort of application deployment / configuration management tool in Rust, and the architecture there is roughly equivalent to an ECS. I found it a joy to work with and work on. Not sure if it's fundamentally a better software pattern, but it at least meshes with my brain better than how most OO-style software is laid out.

    https://github.com/habitat-sh/habitat

  4. froggy

    Component Graph System experiment

    What I found in practice is that many people start using the ECS for speed, and then draw themselves into a corner of the design space. Now they have to weight every step on "how would it work in ECS?", and dedicate effort to fight the ECS paradigm.

    For example, a mesh may contain multiple materials. Is each material chunk a separate entity? Or maybe each bone in a skeleton is a separate entity with its own "parent" and "transform" plus other component.

    One of the different approaches is component graph systems [1]. It lacks the ability to mix and match components, but provides a more natural (and simpler) model to program for.

    [1] https://github.com/kvark/froggy/wiki/Component-Graph-System

  5. Hazel

    Hazel Engine

    IIRC, all those engines provide an ECS that could be compared to entt.

    Also, there is Hazel[0] which is based on entt and is the subject of an amazing youtube series[1].

    IMHO, tinier means less features, at that point what could be considered comparable?

      [0] - https://github.com/TheCherno/Hazel

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • EnTT: Gaming meets modern C++ 3.9

    4 projects | news.ycombinator.com | 21 Dec 2021
  • Component Graph System

    2 projects | news.ycombinator.com | 16 Jul 2021
  • Using Jolt with flecs & Dear ImGui: Game Physics Introspection

    4 projects | dev.to | 17 Apr 2024
  • Building W-9 Crafter

    4 projects | dev.to | 28 Mar 2024
  • alacritty-themes not working any more!!!

    6 projects | dev.to | 7 Jan 2024