Sign in to follow this  

An Entity System Implementation

This topic is 2844 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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!

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

This topic is 2844 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this