Archive for February, 2007

How I’m Trying To Keep To A Reasonable Scale

Sunday, February 25th, 2007

How do you design your project so that you can never finish it?

Dream big! That’s all it takes. Think about all the millions of people out there that are going to love your game, then think about everything you’ll need to do to support that!

In general, when I design a program, I hate to box myself in early. I always want to make everything as flexible as possible so that later, I can do anything I want. This is a recipe for, if not disaster, at least a very long development time. Flexibility, in many cases, is complex, especially if it has to be robust. Planning for everything takes a very long time.

With this project, I have to keep reminding myself that I’m not making World of Warcraft, as much as I might like to. It would be overwhelming, to say the least, if my customer base came even within two orders of magnitude of theirs. I have to keep my design to a reasonable scale. Is it likely the game will have 100,000 customers? Only one indie* game that I’m aware of has reached that many subscribers. No, I don’t think it’s likely. Is it more likely the ceiling is somewhere around 10,000 subscribers? Yes, it’s more likely, though there haven’t been many indie MMO’s that have done that well, either.

There is a big difference in the amount of code necessary to support the difference between those two numbers, though, and if I were to spend my time aiming for the larger one, I might never get finished as I add functionality to support the larger numbers of servers required.

The thing is, I like figuring out the scale types of problems. It’s fun. But going down that road would be a project killer, and I have to keep reminding myself of that.

So, with that in mind, here is what I need to keep telling myself when designing the project:

Design for 1000 concurrent players. More is a waste of time.

* My definition of indie is a couple of people, no more than ten, coding in their bedroom for years, hosting it themselves, and never involving a publisher.

Reminder For Next Year: Get Flu Shots

Monday, February 19th, 2007

I haven’t made much progress since I last posted. I’ve been unable to critically think due to an extended (for me) bout with the flu. Nearly five days lost forever. I did gain lots of levels in World of Warcraft. I don’t know yet how many lessons there are for me in it, yet, as I don’t have a large set of comparisons to work from.

I know that I don’t care for the chat interface all that much. I wish it would create a separate tab when you join a party that would be a party only tab. It seems to just color the party messages a different color, which is fine, in a way. It means you don’t have to switch back to the general tab to see all the general messages, but it also means, as a new user, I don’t, sometimes, really understand where my messages are going to. Have to play some more, I guess.

Conversion complete

Sunday, February 11th, 2007

Well, the move to RakNet 3.0 (from 2.52) is complete and it certainly does look like it solves my problem. Hopefully, I don’t have to do that again.

And with that in mind, I’ll be working on what some call a “Connection Server”, but I prefer to call a Packet Router. Basically, once you log in, you’ll be handed off to the Packet Router and it will crack each packet open and figure out which server to send it to. This will help in allowing easy reconfiguration of the servers when the population grows to large for the current configuration. Reconfiguration could potentially even happen while the system is up and running, though, in practice that might happen so infrequently that it isn’t worth the effort.

I really wanted to work on the chat server, but I realized that I’d end up redoing a bunch of code unless I did the packet router (at least the basics of it) first.

Additional Blog Features

Wednesday, February 7th, 2007

For some reason, I like to write everything myself, including my blogging software. I finally added a better way to see old posts via the month list to the right. I also added comments. We’ll see if they stick.

So It Seems There’s a Solution

Wednesday, February 7th, 2007

After some exploration, there is a beta version of RakNet 3.0 (I’ve been using 2.52) that solves most of my problem. The new version removes the server and client interfaces and combines them into a peer interface that allows multiple connections on different IP’s and ports.

Since it’s likely to come out of beta before I do, I’ve started the migration.