Roll your own engine, roll your own problems

Recently I was approached by a group of hobby gamers who wanted me to make some art for a game they were working on (for the record, I have no interest). They tried to persuade me that they were worth working with with the line “…and we’ve built our own engine.”

A few days later I heard the same on MSN, about a small hobby project – “We’ve built our own engine”.

Which made me ask – “WHY?”

If you are a programmer wanting to learn about engines, then by all means, go ahead (although you’ll learn quite a lot just tinkering with existing engines). But if you are a small group of hobbiests wanting to make a game, you really shouldn’t.

Writing engines is hard. Really hard. And there are already so many out there that there is bound to be one that suits your needs, or almost suits your needs without you having to write it all. Some do costs hundreds of thousands of pounds, but Torque costs $100 for a single license.

You’ll need to write your own tools, and probably exporters. You’ll need to figure out lighting, and memory access, and probably streaming. Oh, and animation systems and directional sound. Input and output routines. I almost forgot about particle systems, and the scripting language to write the actual gameplay with. Oh, did you want network code with that?

You are going to end up writing more engine code than game code.

“But it’s a great way to learn!”

Yes, for one or two people – but what are rest of your team going to do while you hack away for months? Yes, they can make assets, assets that they will not be able to see in game because there is no game yet, because there is no engine to build a game with.

In the end, an engine is a program that maintains the game world, and if you want to make a game, why not concentrate your efforts on making a game? An off the shelf engine will probably suit most of your needs, allowing you to spend more time on the fun stuff.

Thank you to Dino for the phrase I used for the title.

Technorati Tags: , ,

2 Responses to “Roll your own engine, roll your own problems”

  1. thnom Says:

    Nice article rick but not all indie games revolve around 3d. Simulation games really “require” their own engines for the rule sets and such. Database formats are best propriety as to only store what is needed, etc. I wouldn’t think of making my own engine for an indie 3d project though. No point, at all.

  2. Dino Says:

    In response to the article,

    I agree with the article, there really is no point building your own engine from scratch these days – I used to think it was a good idea, but 10 yrs in the industry had lead me to think otherwise. I had the fortune of using RenderWare for a short time last year and was blown away with it’s feature set and just plain *good design*. It had quirks, but so does everything.

    The phrase “we built our own engine” really means “we think we know how write a kick ass renderer” and often means “we didn’t really think we’d need to support a full asset pipeline and countless other features all of which need to interface with the renderer at some point”. To a publisher it comes across as “we’ve built our own project timebomb ready to explode halfway thru development, crushing all hope of releasing the game with anything like a reasonable timeframe or budget”

    If you want to do small, indie stuff that you’re not interested in getting paid for while you develop it and might never complete or see any return on, then rolling your own is the way to go :)

    In response to thnom,

    Simulation games don’t “require” their own engines any more than first person shooters “require” a light-gun. Memory of modern consoles (and even handhelds) is sufficient enough that you rarely need to roll your own proprietary file formats these days (a lot of game devs use XML in native format all the way up to release).

Thoughts on this?