-=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- (c) WidthPadding Industries 1987 0|279|0 -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=-
SoCoder -> Blogs Home -> Blogs


 
Afr0
Created : 27 January 2014
 
System : Mac

The hurdles of running an MMO

My life right now

My life right now consists of going to the university, coming home to fix bugs, going to the gym, coming home to fix more bugs and going to bed.
Rinse and repeat.
The upside is that I have a community eager to constantly log in even when no new features are being added - the downside is that bugs are being reported faster than I'm able to fix them!
Of course, this whole process is one of learning, and for the past month, I've probably learned more about the hurdles of running an MMO than I've learned since I first started play WoW!
Amongst other things, I've learned about database collations, manual table merges, deploying patches/updates effectively, as well as the hurdles of trying to maintain compatibility for x86 and x64 systems at the same time.
I've also learned a lot about best programming practices;

  • Never assume a file to exist, even within a running executable's directory!
  • Never assume a directory to exist, even within a running executable's directory!
  • Never assume paths to be static - this includes paths to files as well as directories.
  • If you think you've found a way to make something idiot proof, some idiot will find a way to break it.
  • Never assume that something works after testing it only once.
  • Never assume that a string is a string is a string is a string!
  • Allowing emptystring accountnames is a bad idea.

 

Comments


Monday, 27 January 2014, 05:06
Jayenkai
One of the best things I've learned lately, is to test something by breaking it!
Seems counter intuitive, but getting something to "Work", and "Not fail" is only good if you actually know that it's doing it's job..

eg..


You run that, it'll give you exactly what you expect, but it doesn't mean it actually works!
What you need to do is force an error, or something expectedly unexpected, so that you know the important bit is actually doing it's job.

Failure = working!
Then you can fix the failure afterwards.
Monday, 27 January 2014, 06:10
Afr0
Yeah, you're referring to unit tests!
I should have started writing them a long time ago, and should probably do it for the client.
For the protocol, I aim to create a protocol tester which will spawn a given amount of threads that will run through the protocol until the server crashes.