An Entity System Implementation

Started by
3 comments, last by Rainweaver 14 years, 1 month ago
Hello everyone, I've been working on a Entity System implementation for quite some time now. I think it's time to give it a bit of exposure, in the hope that people will not only use it, but also improve it by contributing. It is fully functional, albeit with some missing features that I plan on implementing soon. I've written a short presentation, available here. All code, including general-purpose libraries in standalone projects, is freely available under a Creative Commons BY-NC-ND 3.0 license and can be found here. I'd like to thank the professional and indie devs sharing their knowledge on these forums. Might come across as a gratuitous compliment, but I really mean it. Questions and constructive criticism more than welcome!
Rainweaver Framework (working title)

IronLua (looking for a DLR expert)



Advertisement
It would be nice if your documentation had well-defined paragraphs. As it is, it was kind of hard to read. Other than that, it sounded nice. It would also be good if you included code samples on that page, so people can get a feel for how it works. I didn't try to read any of the code, since I don't do .NET, so I can't give you any more feedback.
Thank you - I made few modifications to the home and documentation pages, I hope they're more "palatable" now. I'll keep on adding more info.
Rainweaver Framework (working title)

IronLua (looking for a DLR expert)



I'm interested in the parallelism part of the system - have you started implementing this yet or is it planned for the future?

Thanks for sharing ;D
You could say the system already handles message dispatching in a parallel way; this is what happens:

* each entity has a message queue
* entity receives messages unless frozen; message is queued
* a Parallel Task Library task is spawned, unless there's one already running,
and the message is dispatched according to the component model

You can check out the following methods in Rainweaver.Entities/EntitySystem.cs for more detail:
internal void ForwardMessage(long sender, long receiver, int messageTypeId, int instanceId) { }internal static void PerformDispatchTask(object taskState) { }


I know this can be improved by having different paths and different message dispatch strategies depending on how many entities are active.

Different machines may host other, cooperating entity systems as well.
Rainweaver Framework (working title)

IronLua (looking for a DLR expert)



This topic is closed to new replies.

Advertisement