So after all those dedicated posts about Component object model i decided to use that into my game, utilizing Artemis.Net.
Now, about networking it is unclear, on how i should properly integrate that, without messing up my components/systems.
I'm planning to use Authorative server model.
So basically from what i understand, i would have an 'agreed' clean/begining state of objects in both server and client. Then, when a component from any of entity updates, it is marked 'dirty' and is added to some sort of queue 'send list'. Or when it is needed to create new entity, a 'create this entity from this template' type of message is sent.
What is unclear, is how to properly implement this right from the start, so i have a nice system to work with, that i will not have to change later. Where do i store the 'dirty' flag? In each component? How do i manage different versions/generations of entity?
How do i manage cycles or behaviours, that are consistent and depend on system? For example, if i have circle on ground, that changes its color to,say, red, if player steps on it, and continues to pulse and change its behaviour, depending on color. I would have a 'Pulsates' component in entity, that has property like 'isPulsating' and 'currentPulseColor', that would change every frame. But i dont want to send pulsating color every frame, if i know, that if i had a message update of 'isPulsating', i can calculate pulsating color just from that, i dont need updates on pulsating color every frame from server. How do i manage and distinguish between things like 'isPulsating' and 'currentPulseColor'? And then again, i would sometimes need to know everything, for example, if the circle was not in range, and then becomes visible, i dont know for how much long it had been pusating and therefore cant calculate its color, and i need that data...
hplus0603 Had a little insight into this a while a go, could you maybe help me with this?
Edited by Shuun, 11 April 2013 - 05:19 AM.