So far most of the development has been on the server side and implementation of the protocol to be used.
The current state of the project is that you can create an account, log on, create a character, choose a character from your list and finally start a game.
The only thing you can do in the game though is to walk around and see a bunch of enemies walking around randomly. I'm actually developing a simplified WinForms client and a Unity client in parallel - both clients share a lot of code. This allows me to test changes quickly at this stage of development, although it might be something I have to stop once I really get some Unity work done - still to be decided. At the moment it's serving me very well because I'm working with server code, and code shared between the 2 clients.
In the past week my focus has been on state update messages sent from the server to the client.
In particular a basic "interest manager" has been implemented.
The interest manager is responsible for maintaining knowledge about what the client knows - and what the client should know.
It keeps score of the entities already known by the client, and makes sure that unknown entities are published to the client if they come in range. It also takes care of telling the client if an entity comes out of range. Known entities are kept updated if speed or destination changes - but no update is sent when the position changes because of the speed already known to the client.
The following events are sent in the update message:
Spawn: Tells client to construct an entity
Update: Tells client an entity should be updated.
Despawn: Tells client an entity will no longer receive updates - the client is free to remove it.
An article worth reading on the subject: http://ithare.com/mmog-world-states-and-reducing-traffic/
Another area I've been working on is "the grid" serverside - a grid of square cells indexing both the entities of a zone and the static obstructions/walls etc. of the zone itself for fast lookup.
I'm having a hard time deciding if I should get started on Unity animations and dynamic object loading now, or if I should continue serverside and implement combat moves, serverside colliders and simple enemy AI.