My title is a cliche but I was reminded of it recently as I was looking for a graphics engine for my web-based MMOG. While there are free engines available, Ogre 3D probably first among them, people who expect to make money generally work harder than those who don’t – RakNet vs. HawkNL being a prime example. So I was prepared to pay for a low cost graphics engine, and one of these is Power Render. I took a first glance at their website. Had this been the first time I encountered Power Render I would have taken a second. But instead I closed the page without further consideration. This is because I had used it about 6 years ago in version 3.0 or something like that. I wasn’t that great of a programmer then compared to now and had even less tolerance for poor API design. In short, I was pissed off that after a week I couldn’t even get the library to compile (no project files were included) and that I had wasted $150 or something like that because you had to pay before you could get any code. I wrote a negative review on the gaming website I was running (though the website had nothing to do with programming APIs) and remember to this day not to use Power Render.
Is that logical or fair? Probably not. It may be the world’s best 3D library right now for all I know. Will I ever look at using it again? No. It probably has working project files now and may even have up-to-date documentation but I’ll never know because I already wasted $150 learning that it didn’t (back then) and don’t want to go through that again.
The lesson to be learned is not so much to let people use your code before paying for it (though that is important if you don’t want forever pissed off customers), but that you only get one chance to launch your product. I got more of a proportionate gain in traffic for RakNet on launch day than on any time since then, except possibly when I started giving it away for free two years ago. But that was a bad thing because a few months later I’d find a crippling bug, which I’d fix shamefaced and wonder how anyone could have used RakNet with that bug. Then I’d do some order of magnitude performance improvement and be shamed at anyone could have seen how sub-optimal my library was. And so on. The RakNet of today doesn’t really share a single line of code with the RakNet of 4 years ago, is a million times faster, and has 10X the features. Yet someone who looked at RakNet 4 years ago wouldn’t have the impression of the hyper-fast full featured RakNet of today, but the slow, weak, clumsy version of then. In fact, the GameDev.net review still refers to the RakNet of 4 years ago and this is analogous to the impression many people probably have today of the library.
The same holds true in game development, but it’s even worse. Because with a programming library, if someone doesn’t buy your library today that’s OK because someone 4 years from now who has never heard of it might and you’ve been working on it the whole time. But with a game, once you get your two weeks of shelf space you’re gone. Nobody will buy your game 4 years later: They wouldn’t have heard of it and even if they did there are games with 4 years worth of graphics advancements to compete with yours.
In every project I’ve ever worked on, game development has gone on to the very end, with a month of bug testing, and that’s it. There was no dedicated time spent on game design, or fun, or balance. These things were worked on simultaneously while the levels were being built and the game programmed. The problem is that if you make a level that’s not fun, or an AI that’s too hard, nobody knows that and even if someone did it wouldn’t matter because the person responsible is the same person who created the problem and they probably don’t agree with you. What might be fun to a programmer who plays the game 10X a day for years might not be fun for someone who has never seen it before. So these games are released, and they have good graphics, and they may be novel, but nobody is playing them 6 months later.
To make a classic game, or programming library, or probably a lot of other things I think it’s extremely important to look at the issue of quality over completeness. Blizzard does this, and it takes them years to make a game, but they are making something like 10 million * 15 dollars a month right now with WoW where other MMOGs are considered a success to get 1/100th those subscription rates.
I think for my own MMOG I’m going to spend X months developing it, then force myself to spend another X months polishing it, with closed beta tester feedback the whole time. Because I only get one shot to launch, and if I can pull this off I will be pretty wealthy. But if I fail, I will have lost years of my life and a ton of money.