Honestly, I think the lack of a decent one is one of the main things keeping Nim from being taken seriously as a game dev language. I don't think a simple wrapper or c2nim conversion will suffice, because something so fundamental to a game's architecture deserves to make the fullest use of Nim's features possible.
I was thinking of porting something like Ash or maybe Ashley to Nim over winter break (mid-December to late January). But I'll be juggling a few other things over the winter, so I'm not confident in my ability to do so alone. If I spearhead a port of some existing ECS framework (so we can leverage its design instead of reinventing that wheel), would anyone be interested in following suit? It wouldn't need to be a big, elaborate project (like, say, artemis-odb; Jesus Christ), but it's important that it be polished, documented, and bug-free.
Any takers on a collaboration?
Awesome, to have the attention of one of the core devs can only be a good thing. :)
While I will be busy over winter break, it's the kind of "busy" that I have control over (balancing projects as opposed to meeting deadlines or planning events). So the more people here that follow suit, the more I'll put into it myself.
Related note; do you have any sort of preference for an ECS? Anything you've used before, even in other languages?
I myself like artemis-odb, which I've linked, but it's massive and a lot of it seems to revolve around Java-specific optimizations and language workarounds.
Whatever is actually decided upon, I think it's important that it be very easy to define components, systems, and patterns thereof. Oh, and to serialize it all.
Do you have a list of ECS implementations that you consider 'good'? I have not seen any yet, but I also haven't looked for many months.
This is definitely a research interest of mine, but low priority at the moment.
The only one that Nim has at the moment is entoody. I think it could be a good starting point, especially for all the memory management stuff (if you do ECS right, it can be really fast), but at the moment it's lacking. There doesn't seem to be a central "World" (as is common for ECS libraries) or a way to create systems, for instance.