In the past 3 weeks, I've been busy working on the meta-server. The meta-server is the server on which the client is first connecting. It handles connections to the server clusters ( shards ), patches, authentication, etc.. I won't go deeply in all details, but here are the list of things I've implemented so far:
- authentication
- accounts databases
- registration keys ( for alpha, beta, etc.. )
- statistics
- access lock
- versions checks
- automatic patching ( downloading from mirrors, installing a patch.. )
- warning dialog boxes ( when no connection could be established, or when the drivers are obsolete, etc.. )
- EULA dialog
- security ( signature IDs for transactions / connections )
- bans ( per account or IP address )
- listing shards, getting their description
- logs
- disconnections / reconnections
- busy servers: waiting in a line
- admin rights
Bandwidth optimizations
I've tested and debugged the meta-server by simulating users in different threads, for concurrent access, and at every step I've also verified performance and network bandwidth.
Speaking of network bandwidth, I found a very simple optimization in my RDP ( reliable UDP ) protocol, that allowed to merge ACK packets to packets there were ready to be sent. I think it saved from 10 to 30% of the total bandwidth, which is excellent for only 5 lines of code :)
Story system
Since last week I've also started working on a procedural story system for players and NPCs. Breslin is helping me to formalize the system. It seems like it'll be working quite well so far. More infos on it in a future dev journal.
GTA IV
This week, I've also bought GTA IV on the XBox 360. So I've taken the past 4 days as "vacation", more exactly to play GTA IV to death. In addition to being a lot of fun, it's also very interesting and inspirational for the way the missions are handled. I will also come back on this in a future journal.
Seriously though, how on earth do you manage to be so productive?