skypjack on software About C++, EnTT, gaming and everything in between https://skypjack.github.io/ ECS back and forth Part 13 - No policy is the best policy - I’ll leave this topic to a part 2 that will follow shortly. Well, yeah, for some definitions of shortly at least. :) Here we are with the second part of the post about sparse sets and pointer stability. We were left saying that no policy is the best policy during... Sat, 09 Oct 2021 00:00:00 -0700 https://skypjack.github.io/2021-10-09-ecs-baf-part-13/ https://skypjack.github.io/2021-10-09-ecs-baf-part-13/ ECS back and forth Part 12 - Introduction to sparse sets and pointer stability - With my last post I’ve revised the big matrix model and given some hints on pointer stability among the other things. This time, I want to dig a little further into the sparse set model to describe how we can have pointer stability also in this case. There are actually... Sun, 29 Aug 2021 00:00:00 -0700 https://skypjack.github.io/2021-08-29-ecs-baf-part-12/ https://skypjack.github.io/2021-08-29-ecs-baf-part-12/ ECS back and forth Part 11 - The Big Matrix revised - Of the three most important models, there is one that I haven’t talked about much but that can offer much more than what has been said so far. Let’s take a closer look at the big matrix model, to find out how to make it suitable even for more demanding... Sat, 12 Jun 2021 00:00:00 -0700 https://skypjack.github.io/2021-06-12-ecs-baf-part-11/ https://skypjack.github.io/2021-06-12-ecs-baf-part-11/ Hello, EnTT Library of libraries - This series is a response to the request of many people and is thought on the one hand to explain the design and ideas behind many choices in EnTT, on the other to show how this library can be used to develop something from scratch. In no case is the... Fri, 02 Apr 2021 00:00:00 -0700 https://skypjack.github.io/2021-04-02-hello-entt-01/ https://skypjack.github.io/2021-04-02-hello-entt-01/ ECS back and forth Part 10 - Hybrid storage - Time for a new part of the ECS back anf forth series. With this post I want to go through the hybrid storage chimera for ECS libraries and explain why it’s not that good as it seems at a first glance. EnTT already comes with an hybrid storage and it... Sat, 27 Feb 2021 00:00:00 -0800 https://skypjack.github.io/2021-02-27-ecs-baf-part-10/ https://skypjack.github.io/2021-02-27-ecs-baf-part-10/ ECS back and forth Part 9 - Sparse sets and EnTT - It’s been a while since my last post. You know: a global pandemic, a son that is now 4 years old, the time spent in researching for something that I’ve been chasing for some time in the ECS field, and so on. In the end, here we are again, with... Sun, 02 Aug 2020 00:00:00 -0700 https://skypjack.github.io/2020-08-02-ecs-baf-part-9/ https://skypjack.github.io/2020-08-02-ecs-baf-part-9/ ECS back and forth Part 8 - Type Id - When I started writing this series, the approach used to make EnTT work across boundaries was questionable. It worked but in a cumbersome manner that was difficult to work with, sometimes unclear or even dangerously close to being unstable. I tried to give some insights of this approach with my... Sat, 14 Mar 2020 00:00:00 -0700 https://skypjack.github.io/2020-03-14-ecs-baf-part-8/ https://skypjack.github.io/2020-03-14-ecs-baf-part-8/ Idioms, you're doing it right Italian C++ Day 2019 - These are the slides of a talk I gave at the Italian C++ Day 2019 in Parma. The conference was organized by the Italian C++ Community. The goal of the talk was to describe the evolution of the language from the point of view of its idioms. I tried to... Sun, 01 Mar 2020 00:00:00 -0800 https://skypjack.github.io/2020-03-01-idioms-done-right-it-cpp-day-2019/ https://skypjack.github.io/2020-03-01-idioms-done-right-it-cpp-day-2019/ ECS back and forth Part 7 - Shared data - This time I want to answer a question that has been asked me several times on gitter or directly through issues open to EnTT. Given that sharing data can be a concise and elegant solution to some problems, I’m not a fan of the built-in solutions offered sometimes for this... Sun, 02 Feb 2020 00:00:00 -0800 https://skypjack.github.io/2020-02-02-ecs-baf-part-7/ https://skypjack.github.io/2020-02-02-ecs-baf-part-7/ ECS back and forth Part 6 - Nested groups and perfect SoA to the rescue - With this post I described what is probably one of the most interesting features of the sparse set based model. The grouping functionality makes possible what is called perfect SoA, that is something we can achieve only with this approach among the ones described by the series. As we have... Tue, 19 Nov 2019 00:00:00 -0800 https://skypjack.github.io/2019-11-19-ecs-baf-part-6/ https://skypjack.github.io/2019-11-19-ecs-baf-part-6/ What are unevaluated operands in C++? Hello choice trick - Recently I had the opportunity to write an article for a new online magazine, Human Readable. Generally, these kinds of things don’t go public and are only accessible with a subscription. However, the first issue was published for everyone and my article is therefore freely available! The topic is my... Sat, 26 Oct 2019 00:00:00 -0700 https://skypjack.github.io/2019-10-26-what-are-unevaluated-operands-in-cpp/ https://skypjack.github.io/2019-10-26-what-are-unevaluated-operands-in-cpp/ GitHub Actions, the missing notes CMake, Qt and IFW - GitHub Actions is a truly nice tool. Since I tried it the first time, I can no longer do without it… and it’s still only available in public beta! However, it has some shortcomings, both in terms of packages and documentation, which make it difficult to use in some cases.... Wed, 23 Oct 2019 00:00:00 -0700 https://skypjack.github.io/2019-10-23-gh-greets-qt/ https://skypjack.github.io/2019-10-23-gh-greets-qt/ ECS back and forth Part 5 - Sparse sets and sorting - As we have seen with this post, the sparse set is a great tool for decoupling component pools and creating a much more flexible model. Another of the big advantages of using sparse sets, although less obvious, is that of being able to easily sort an entire pool of components... Wed, 25 Sep 2019 00:00:00 -0700 https://skypjack.github.io/2019-09-25-ecs-baf-part-5/ https://skypjack.github.io/2019-09-25-ecs-baf-part-5/ ECS back and forth Part 4, insights - Hierarchies and beyond - Hierarchies aren’t a nightmare anymore. No matter if all you want is to go from the leaves to the root of a tree, to visit a fixed number of children or to support an unconstrained model where all the entities can have an unlimited amount of children. There exists a... Tue, 20 Aug 2019 00:00:00 -0700 https://skypjack.github.io/2019-08-20-ecs-baf-part-4-insights/ https://skypjack.github.io/2019-08-20-ecs-baf-part-4-insights/ ECS back and forth Part 4 - Hierarchies - Hierarchies, both a blessing and a curse for the entity-component-system architectural pattern. One of the first questions that anyone makes when starting to work with an ECS is how to represent hierarchies in this model without ruining the performance. There are several approaches to the problem and what’s the best... Tue, 25 Jun 2019 00:00:00 -0700 https://skypjack.github.io/2019-06-25-ecs-baf-part-4/ https://skypjack.github.io/2019-06-25-ecs-baf-part-4/ ECS back and forth Italian C++ Conference 2019 - These are the slides of a talk I gave at the Italian C++ Conference 2019 in Milan. The conference was organized by the Italian C++ Community. The goal of the talk was to present the three best known and apparently most used models for the implementation of a software (either... Mon, 17 Jun 2019 00:00:00 -0700 https://skypjack.github.io/2019-06-17-ecs-baf-it-cpp-conf-2019/ https://skypjack.github.io/2019-06-17-ecs-baf-it-cpp-conf-2019/ The C++ of EnTT Level UP Conference 2019 - These are the slides of a talk I gave at the Level UP Conference 2019 in Rome. The conference was organized by AIV, the Italian Academy of Videogames. I was asked to talk about the C++ of EnTT and the techniques mainly used in the library. Unfortunately the time wasn’t... Fri, 17 May 2019 00:00:00 -0700 https://skypjack.github.io/2019-05-17-the-cpp-of-entt-levelup-conf-2019/ https://skypjack.github.io/2019-05-17-the-cpp-of-entt-levelup-conf-2019/ ECS back and forth Part 3 - Why you don't need to store deleted entities - When it comes to working with the ECS architectural pattern, it’s common to destroy entities sooner or later. In this case, it’s likely that entity identifiers are recycled for several reasons, then returned the next time a new entity is created. Unfortunately, most of the time this part is poorly... Mon, 06 May 2019 00:00:00 -0700 https://skypjack.github.io/2019-05-06-ecs-baf-part-3/ https://skypjack.github.io/2019-05-06-ecs-baf-part-3/ EnTT tips & tricks Groups on sale - Groups in EnTT are an incredibly powerful tool that allows for perfect SoA under certain circumnstances. However, they’ve also some limitations. How far can we go to squeeze the best from them? With this post, I’ll describe some tricks to get something more from a group. In fact, there are... Fri, 12 Apr 2019 00:00:00 -0700 https://skypjack.github.io/2019-04-12-entt-tips-and-tricks-part-1/ https://skypjack.github.io/2019-04-12-entt-tips-and-tricks-part-1/ ECS back and forth Part 2, insights - Sparse sets and grouping functionalities - After publishing part 2 of the ECS back and forth series (if you haven’t read it yet, do it now), I received several requests for further information on sparse sets. In particular, requests for more details on the grouping functionalities and on the support they can offer to different access... Thu, 21 Mar 2019 00:00:00 -0700 https://skypjack.github.io/2019-03-21-ecs-baf-part-2-insights/ https://skypjack.github.io/2019-03-21-ecs-baf-part-2-insights/