{"id":101161,"date":"2019-10-02T17:06:49","date_gmt":"2019-10-02T17:06:49","guid":{"rendered":"http:\/\/gamefromscratch.com\/post.aspx?id=02979435-648b-4e08-9b9e-df46c4d19303"},"modified":"2019-10-02T17:06:49","modified_gmt":"2019-10-02T17:06:49","slug":"flecs-fast-lightweight-entity-component-system","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2019\/10\/02\/flecs-fast-lightweight-entity-component-system\/","title":{"rendered":"FLECS\u2013Fast Lightweight Entity Component System"},"content":{"rendered":"<p><a href=\"https:\/\/github.com\/SanderMertens\/flecs\">FLECS<\/a>, the Fast Lightweight Entity Component System, is a recently released open source C99 based framework for creating games and applications using the ECS design pattern.&nbsp; It is an exceptionally well documented library, with several examples as well as a complete web based interface for profiling and debugging entities in your game world!<\/p>\n<p>FLECS is described as:<\/p>\n<blockquote>\n<p>Flecs is a <a href=\"https:\/\/github.com\/SanderMertens\/ecs_benchmark\">Fast<\/a> and Lightweight ECS. Flecs packs as much punch as possible into a small library with a tiny C99 API and zero dependencies. Here are some of the things it can do:<\/p>\n<ul>\n<li>Process entities on multiple threads with a lock-free, zero-overhead staging architecture <\/li>\n<li>Organize components &amp; systems in reusable, library-friendly modules <\/li>\n<li>Run systems every frame, periodically, on demand or on change events <\/li>\n<\/ul>\n<p>Additionally, flecs has a flexible engine that lets you do many things, like:<\/p>\n<ul>\n<li>An expressive prefab system with prefab variants, component overrides and nested prefabs <\/li>\n<li>Create specific system expressions with AND, OR, NOT and optional operators <\/li>\n<li>Create hierarchies, indexes and DAGs with container entities&nbsp; <\/li>\n<\/ul>\n<\/blockquote>\n<p>The code is released under the liberal MIT open source license, while the web dashboard is under the more restrictive GPL v3 open source license.&nbsp; As mentioned earlier, FLECS has excellent documentation <a href=\"https:\/\/github.com\/SanderMertens\/flecs\/blob\/master\/Manual.md\">available here<\/a> as well as a wealth of samples available <a href=\"https:\/\/github.com\/SanderMertens\/flecs\/tree\/master\/examples\">here<\/a>.&nbsp; The developer also has several full featured code samples available in their own repositories including a <a href=\"https:\/\/github.com\/SanderMertens\/ecs_pong\">pong game<\/a> and more available <a href=\"https:\/\/github.com\/SanderMertens?tab=repositories\">here<\/a>.&nbsp; Finally the dashboard is in a separate repository available <a href=\"https:\/\/github.com\/flecs-hub\/flecs-systems-admin\">here<\/a>.<\/p>\n<p>You can learn more about FLECS in the <a href=\"https:\/\/www.youtube.com\/watch?v=iICjM1gx8Lw\">video<\/a> below.<\/p>\n<p align=\"center\">[youtube https:\/\/www.youtube.com\/watch?v=iICjM1gx8Lw&#038;w=853&#038;h=480]<\/p>\n<hr>\n","protected":false},"excerpt":{"rendered":"<p>FLECS, the Fast Lightweight Entity Component System, is a recently released open source C99 based framework for creating games and applications using the ECS design pattern.&nbsp; It is an exceptionally well documented library, with several examples as well as a complete web based interface for profiling and debugging entities in your game world! FLECS is [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[],"class_list":["post-101161","post","type-post","status-publish","format-standard","hentry","category-game-development"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/101161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=101161"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/101161\/revisions"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=101161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=101161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=101161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}