Meta server system

Published May 04, 2008
Advertisement
Meta-server

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.
0 likes 8 comments

Comments

OrangyTang
You've taken four days off but you've still managed to implement all those features? You're a machine. [grin]

Seriously though, how on earth do you manage to be so productive?
May 04, 2008 07:45 AM
rollo
He must be doing large quantities of Bullshark Testosterone :D Genetically different, baby!
May 04, 2008 08:48 AM
AniCator
I want to be as productive as you are!
May 04, 2008 11:37 AM
Gaiiden
Quote:Original post by rollo
He must be doing large quantities of Bullshark Testosterone :D Genetically different, baby!

Ysaneya is ALPHA. Alpha baby! Woo!
May 05, 2008 08:39 PM
Ysaneya
Quote:Original post by OrangyTang
You've taken four days off but you've still managed to implement all those features? You're a machine. [grin]


Not really, if you read my post again you'll see I implemented all those features on a period of 3 weeks :)
May 06, 2008 03:22 AM
Dragon88
Quote:Original post by Ysaneya
Quote:Original post by OrangyTang
You've taken four days off but you've still managed to implement all those features? You're a machine. [grin]


Not really, if you read my post again you'll see I implemented all those features on a period of 3 weeks :)


pfffft well now you're not epic anymore :P Seriously though, congrats. Have you done all this stuff before?
May 06, 2008 06:08 PM
liqwiz
You make it sound like you coded the entire meta-server in one blow, without any testing until the last line. And once you where done the thing ran smooth & without a single bug.

Or I'm imagining the way you'll be remembered after 'this' is done =]. Nice work, if you have time I think many of us would love to see another movie. It doesn't matter if it's in the same area as any previous video(s), it's just soothing. It really is.. soothing.
May 15, 2008 05:49 PM
Ysaneya
Quote:Original post by liqwiz
You make it sound like you coded the entire meta-server in one blow, without any testing until the last line. And once you where done the thing ran smooth & without a single bug.

Or I'm imagining the way you'll be remembered after 'this' is done =].


Lol, not at all. Since I introduced the first classes, I've created a set of "simulated clients" that emulate the client network protocol and connect to the server in various ways. They're all instanced in their own threads too, to test parallelism and synchronization problems. I would never test something that important only at the end.
May 16, 2008 03:49 AM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement