There comes a time in every young man’s life when he realizes that he may be programming the server back-end for an MMORPG. I assume many of you have already gone through a similar period of self-revelation and discovery, but for those who haven’t I think it would ease my mind a bit to run you through the key points.
First of all, I’m sure many of you read my previous blog post so you know I have been working on a procedurally generated universe to explore. The more keen among you will probably point out that I made that blog post a long time ago and there have been few updates since then. Lots of stuff has been happening, excuses I know, and I’ll get into that but first lets talk about why world generation isn’t finished yet.
World generation isn’t finished because the world it generates is really boring without a server to fill it full of stuff. I got noise sampling, scale + distances, multi-threaded loading of regions, stars, stellar bodies, new screens and art etc. All of that code is currently working and yet really all it makes is an infinitely large scrolling backdrop. I couldn’t bring myself to release such a thing. So instead I drank a lot of coffee, laid out all my best notes in a hundred notepad++ tabs, checked my bank to see how much longer I have before I run out of money, and started planning the server code.
The server’s architecture is a little different from typical hosted multiplayer games, it is a huge project, it requires quite a bit of fancy networking, multi-threading and client state management, and it’s the reason I’m making bad jokes about MMORPGs. Most importantly it will take more than a few paragraphs to explain so lets get the excuses out of the way.
Right around the same time I started writing the first lines of code for the server I had to stop, take apart my computers and move all my stuff to a new apartment. Not a bad thing, the new apartment is very nice, but it was a pretty big distraction. This was something that has been planned for a pretty long time, and it was guaranteed to be a pain no matter when it happened. I’m glad to finally be moved and settled in so I can get on with things.
Of course the second thing was an even bigger distraction because a little while before moving I received notice from the state of California that my application to file a whole ton of paperwork and pay a bunch of fees was approved. Yay fees! The good news is I am now more or less incorporated in the state of California under the name Reason Generator Inc. There is still plenty of stuff left to work out before it will all be official, but that’s what the paperwork and fees are for. This is a big step towards making this game of mine into a legitimate business venture and it’s all very exciting and scary. Is this what being an adult feels like?
So with my life full of such fun distractions recently, mainly my blog is what suffered from lack of attention. I have been coding plenty, about as fast as my mind can keep up with the complexity of this newest project, and as I code I have to come to terms with how big of an undertaking the server is. I’ve decided that I am going to approach the server code the same way I did the client code: iterative stages, and only recently have I figured out what the first stage should be.
For stage one I am building a super simplified version of the server to try and get all of the core components worked out for testing. The server will host a bare-bones persistent world with the minimum needed to get players playing an actual game. Then the plan is for me to host a single instance of said server on a public IP, update some alpha clients with the ability to connect to the server, and let people break it. I expect the first 3 people to join the server will have a grand adventure with minimal technical issues, after that I expect things to get more interesting. I probably won’t make the initial tests open to the general public because to be honest the first testers will not be having fun, they will be causing server down-time in the name of science!
If things go as planned (you know how likely that is) then my next blog post ought to be about what type of game you can expect to play once I have released alpha version 3 (0.0.3.0) and also more info on my plans for testing. It’s only going to be the first iteration, but I think it will be pretty cool regardless.
The long term plan is more of an abstract: I know more or less how to build a server, and I know more or less how I want the game to play. What I need is to determine if it is going to be more or if it is going to be less. If the server can be made to support 4 players, well then I will sit down and design the best 4 player space exploration RPG ever. If, on the other hand, the server can be made to support a lot of players, well then I suppose I get to be a bit more creative with the promises I make. I expect the server to handle somewhere between 4 players and a lot of players.