So, there’s has been a recurring issue during my small programming professional experience. The funny thing, is that I heard the same explanations, theoretical pros and cons, about it. And today, I’m going to write them down, discuss them, and why it’s a bad decision on those contexts, at least from my point of view. So let’s talk about it :)
Stop building your own engine
My working experience is relatively short: I’ve only worked for two companies, one of them not game related, but the tech developed didn’t steer too much from your regular PC gamedev. Both companies developed their own engines to accomplish their goals. But that shouldn’t be so bad, should it? Well, I guess it’s not that much of a bad idea if you want to sell the engine later, or it’s small enough that developing it would be a small task (for example, for a really simple PSP / DS game), but I’m starting to see patterns, so I guess it’s not really a good idea if you’re not willing to take quite a lot of risks.
How it all starts
I know those engines weren’t started just because it was cool to do so (I hope so), but because it was thought that those first projects were small enough that building a small engine together was a simple task. But it’s never a simple task. And that’s the first mistake, in my opinion. You want to actually develop something, in this case a game, and you first start developing the engine it will run on. Is your team big enough? Do you really need it? You’d think that, with such a large amount of available engines, nobody would start building their engine until the company is already profitable from a few released titles. Not the case, you’d be surprised. And we’re not talking about alien hardware, but about platforms which have heaps of engines available.
So, you’re on your startup company, willing to develop a game about that cool idea you have. Before actually starting your engine, tools and game, think about the price. Of course, purchasing an engine might not be cheap, but compare it to the time that it’ll take to develop the engine and tools, then train people on how to use it, and, finally, all the time invested on supporting all the bugs that WILL arise on that basic piece of software. Is it worth? And profitable?
When people start to defend it
So, the engine got built. It obviously took way more effort than what buying and learning to use a commercial engine, has less features and no documentation. There’s no team focused on supporting and extending it, training new employees on how to use it. There’s no forum answering all the questions that arise. It has problems, but it’s done in house… Then the team will start complaining about it, usually comparing it to other available engines.
The developers will start defending it, elaborating about how, having all the source code, it can be easily ported to other platforms, or that you can add new features that other engines don’t support. WRONG. Every feature will take time to develop, and that means money and resources spent on the engine and not the game. Porting it to another platform will take even more time, and the games will need to be heavily modified to be used on other devices (different control schemes, input controllers, performance or memory requirements), thus involving even more time and resources. Do you really want to spend money and time on all that?
Another point that’ll arise, is that the performance given by the custom engine is way better that those available on the market. Is that really true? Do you support all the features that other engines support? Do you really benchmarked against those engines? Does it really stand up against them on all the platforms they support? If so, was it really cheaper to develop? I don’t think so.
Why you shouldn’t go that way
Eventually, if you’re successful, your team will grow. Your engine and tools still support less features than available engines (they’ve whole dedicated teams/companies) and lacks any documentation. Every single new coder your company hires, will need to learn how to work on with it, the general coding guidelines, what can be done with it, how to extend it… And it’ll take lots of time for them to be truly productive. Every single new artist that your company hires, will complain about it lacking features X and Y that EngineZ has, that the tools are hard to use or its UI is not user friendly. And more important, you CAN’T hire already trained people on that technology, most of their knowledge won’t be useful CV wise, which keeping in mind how fast people change companies in the gamedev industry, it’s not a good selling point. Getting new employees will be harder, and getting them to fully productive state will take more time.
You’ll have to devote people to support the engine and tools. People that could be developing new games. People that could be adding cool features to your latest game. People that could help you make it to that tight schedule from your current project. But they can’t, because they’re adding LOD support on your materials, because your engine crawls on the first level from the game you’re already behind schedule.
Take away
So, after being so negative about all the stuff that surrounds tech developed in house, I would like to note that I love developing my engine at home. I don’t have a budget for that. I don’t have deadlines. I’m not going to lose money. It’s a learning process. It has been in development for ages.
I don’t mean that NOBODY should work on their own engine on their companies, but keep in mind the pros and cons. Be clear on what you want to spend money, and be very pessimistic about the amount of time and risk that it’ll take doing so, including developing it, documenting it, supporting it, training people on how to use it, and adding features over the years. If you do realistic numbers, you’ll probably see that it’s not worth it, even if it’d would be cool.
I love games, love being a game developer, but this is a business, and money and risk MUST be important points in many decisions, specially in those companies starting from scratch in a complex industry as ours. So, quoting something I read years ago, thought was nonsense, and now comes to bite me back: “Do you want to develop an engine, or a game?”.