[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)