At the moment we have basics which work, hence we are gathering team to continue work. Game without graphics can't exist.
We virtually divided our work to 2 aspects: server and client. while Ray worries about client, i do server side. Unfortunately I haven't prepared such a fancy picture of class hierarchy but will try to give some info:
I have huge background expirience in server side projects. Obviously server is going to be threaded, and in a simple structure:
main server thread
server timers threads[]
server services thread (like heavy mysql queries which involve global select, etc)
server-side client threads[]
each map is different object hence different threads[]
there will be more, i believe so
Race conditions? Being careful, checking everything you access twice, using synchronization or symaphore, pretty standart method.
Client is going to have few threads:
input/output thread, main functions thread, graphics thread, communication with server is threaded.
Handling updates? We are at the stage of creating the game, not updating. SVN is the choice we made, server side and client side are goign to be same version since they will be in 1 project under SVN control.