[HN Gopher] Show HN: Evolved.lua - An Evolved Entity Component S...
___________________________________________________________________
Show HN: Evolved.lua - An Evolved Entity Component System for Lua
I'm excited to announce the first release of my library,
evolved.lua! evolved.lua is a fast and flexible ECS (Entity-
Component-System) library for Lua. It is designed to be simple and
easy to use, while providing all the features needed to create
complex systems with blazing performance. Enjoy!
Author : blackmat
Score : 45 points
Date : 2025-05-21 15:46 UTC (7 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| euvin wrote:
| Cool to see a new ECS project! I've been learning and using JECS
| (https://github.com/Ukendio/jecs) for a project of mine, and some
| of the core ideas (like Chunks) felt familiar. This project
| definitely seems to have a more in-depth documentation though and
| a _lot_ more features especially by having its own scheduler
| stuff. Would love to try it out on a new project someday
| blackmat wrote:
| Hmm! I haven't heard of JECS before. I need to check it out :-)
| Thanks for the kind words!
| cmovq wrote:
| > Components are stored in contiguous arrays in a SoA (Structure
| of Arrays) manner, which allows for fast iteration and processing
|
| Does this actually matter in Lua? Aren't all array elements going
| to be pointers to heap allocated objects anyways?
|
| The point of SoA is your likely to be accessed values are
| adjacent in memory, but if you're chasing a pointer to get that
| value then you're not getting anything out of it.
| PhilipRoman wrote:
| Lua uses tagged unions so that primitives are stored inline
| within a table. Some time ago I benchmarked this and the perf
| gains from SOA were significant. Besides, even if you had to
| chase pointers, SOA still means you can reduce the number of
| allocations.
| blackmat wrote:
| Yes, organizing components as SoA can provide a significant
| performance boost in Lua, especially with LuaJIT. Both
| iteration and element access become faster, and it also reduces
| memory allocations and GC pressure when creating entities. And
| yes, Lua tables can be contiguous in memory if you use them
| carefully.
| dogprez wrote:
| What makes it an "envolved" ecs?
| blackmat wrote:
| Honestly, it's just a fancy way of saying I learned a few
| things from earlier attempts and made some tweaks. I just think
| "evolved" sounds cool!
| poly2it wrote:
| Any examples of projects using this?
| blackmat wrote:
| Not yet, but I wrote this library to use in a project of mine.
| When I finish it, I will add a link to the README. As for a
| small demo project, I have one in mind, but I haven't started
| it yet.
| je42 wrote:
| One alternatives I like is https://bakpakin.github.io/tiny-
| ecs/doc/
| blackmat wrote:
| Yeah, tiny-ecs is good, but it doesn't quite fit my needs. With
| these thoughts in mind, I started this project.
___________________________________________________________________
(page generated 2025-05-21 23:01 UTC)