Entity Component System - Component Pool Design

A fast accessible collection.

So, with the organization and distribution of the EntityIDs, the next order of business is to be able to assign data to these objects, so that they can be a part of and interact in systems and with each other. This is accomplished by assigning different components, and these components will reside in the assembled component pools.

A Failed Component Pool Implementation

We must fail to learn from our mistakes

So, with the organization and distribution of object IDs complete, the more interesting work comes with having to quickly, and efficiently storing the associated sets of data so that any/all data can be quickly accessed and/or modified for possibly an incredible number of times, each pass, for a possibly realtime system, but not only that, these objects may be shared across multiple threads, and as such, data integrity must be a major consideration.

Entity Component System Design

A quick overview of an ECS

Oftentimes, when a large new project lift off the ground, a backbone architechture needs to be selected/devised in order to serve the needs, current and future, of that project. That includes the requirements of being easy to maintain, modify, and expand when necessary, encompassing new requirements as they are added.

Vulkan Graphics Static Pipeline Template

Setting up graphics pipeline, with some less boilerplate

To make setup/teardown of Vulkan graphics pipelines easier, I have created a dtemplate type that contains all the required groundwork to build new pipelines. These pipelines however, are static, unchanging and use the same set of shader modules. Perfect for smaller, test programs.