Tales of the Rampant Coyote

Adventures in Indie Gaming!

Game Development: Rolling Your Own Engine?

Posted by Rampant Coyote on August 11, 2014

CorvetteEngineThis weekend in the indie game developers group on Facebook, a vocal minority (very much a minority) ventured “opinions” disparaging developers who don’t build their own game engine from scratch. The predictable crapstorm ensued. Mainly it was troll-feeding and simply fun to pile on, as these Internet arguments often go.

Now, ignoring for the moment the fact that any “opinion” used to put others down is really just vanity, I’d like to talk about this for a moment. If you followed my post from last week about GameMaker, you can guess what I’m going to say.

I wrote my own 3D engine for my first commercial indie game. It was a challenge, and it was also fun. It was nifty getting my hands dirty with trying to optimize collision detection, the rendering pipeline, and so forth. As a programmer, it’s awesome. After that experience, however, I realized that I’d rather write games than engines.

As a gamer – I really don’t care how a game was made. Sure, if you showed me the trickery and shortcuts behind the curtain, I might be somewhat disappointed, because the magic is gone. Or, like the sausage factory, I’m a little grossed out realizing what’s in it. But in the end, all that really matters is having an entertaining product.

Amateurs and the self-conscious seek to impress their peers. Professionals seek to impress their audience.

Now, it’s very cool if a developer *can* and *does* write their own game engine. That’s awesome. And there are cases where they probably should. Especially now that we are back to supporting less powerful devices (mobile), a custom engine allows us to make some optimizations that are just not possible in a general-purpose engine. I’ve seen efforts to provide Minecraft-style visuals in Unity, and so far I haven’t seen one that impresses me.

But if you do go back and create an engine of your own “from scratch,” how far back do you go? Is it okay to use a powerful, high-level SDK? Or do you have to go down to the metal yourself, writing your code in machine code? If so, you are unlikely to complete your game before the  platform becomes completely obsolete, but good luck.

Obviously, it gets pretty ridiculous to draw the line too far back. Which, to me, illustrates why the line doesn’t shouldn’t exist at all. If your hobby is creating graphic demos, or writing in assembly, or creating game engines, or writing games for obsolete systems, or any other works of technical prowess, then by all means, go for it! I think it’s cool! But if you are a game developer, making games for a more general audience than just “other developers who appreciate stuff written in assembly,” then you should start at whatever point makes the most sense for their game. If it’s a high-level, genre-specific platform like RPG Maker that lets you do your thing just fine, take it and run with it. If you are making a game for an Atari 2600 emulator just for kicks, you are probably going to have to make friends with machine language.

It’s always all about the audience.





Filed Under: Programming - Comments: 7 Comments to Read

  • Cuthalion said,

    Makes sense. I’ve been rolling my own in Java, so… not as low as machine code, not as high as Game Maker. It’s fun, and I can make it do exactly what I want, but honestly, I would’ve been farther along if I’d used an existing engine.

  • Felix said,

    The trouble with existing engines is that all too often you waste a lot of time making them work for you, and the results are still not so great. If you could have written your own engine in the same amount of time, custom-tailored to your needs, then the “savings” from using the premade engine turn out to be a net loss. And then it’s time for a sequel, and the engine you worked so hard to customize has a new, totally incompatible version out, while the old one is now unsupported.

    Sure, players don’t care what you used to make the game, assuming they can tell in the first place. But you do know, and long-term maintainability is just as important as rapid prototyping.

    That said, sometimes an existing engine just fits very well, or the developer happens to know how to use it already, or whatever. Mocking people for their choices is indeed snobbery and nothing more. In fact, I suspect a lot of these engine snobs never get around to making an actual game

  • Anon said,

    The VCS 2600 is a very good example where one should really think about programming in assembly language (which I think people mean when they are talking about machine code). Apart from those ancient or tiny platforms where exactly is assembly language actually needed? If you use it because it’s fun and not because you absolutely need it then you have found a first class time sink…

    RPG Maker on the other hand is a very specialized tool, even if newer versions offer much more flexibility now and (as I understand) include a scripting language that lets you massively expand the boundaries of the standard interface.

    The best road for most devs probably lies in the middle, like so often and most commercial devs use at least half a dozen libraries (for SpeedTree-rendering, physics, audio, network etc.) and often a complete engine in conjunction with a universal “industry standard” programming language.
    Unity for instance isn’t so popular because it’s expensive but because it offers enough of what devs/studios want for a tolerable price (even if it isn’t cheap – but which high-perf multi-platform 3D engine truly is?).

    However, if you are a 2D programmer you may be more inclined to roll your own (because it’s easier to make and you are more flexible) and if you produce something in “2.5D” then you practically /need/ your own engine, at least for the rendering.

    So, often it’s not about “want” but about “need” – which is much more pragmatic.
    This is also the reason we have so many devs who are good in a popular programming language – they learn it not because they like it but because they want to increase their chances of being successful (in the job market).

  • Adam said,

    Related but not exactly the same… I wonder about the ability to ‘compile’ for different platforms when using one of those engines. If I can save 90% or more of my codebase and workflow when I move from Android to IOS then that’s just one more reason why an engine is so worth it. (Though I suppose if you go far enough back on that line, migration *might* be easier) But most of the more mainstream choices would be difficult to port. (Java, .net, etc.)

  • Void said,

    You can use an existing engine, but if it comes as a closed source how do you know that you wouldn’t be stuck with Windows 8, and unable to run your game on Windows 9? That’s a lot of risk.

  • Cuthalion said,

    @Anon: Admittedly I never really checked to see if anything supported 2.5D, but that’s one of the reasons I went with my own. Glad to hear I may not have been better off with an existing engine after all. 😛

    @Adam: That’s actually one of the reasons I picked Java instead of an existing engine, because I figured it would be easier to port. As it turns out, while Java has indeed been easy to port so far (but I haven’t really tested a lot), that needn’t have been a concern. It sounds like other engines tend to handle porting just fine.

  • Xenovore said,

    I wrote my own 3D engine too, back in the day; definitely fun stuff and a great learning experience. Now I prefer something of a middle ground: full engine but with source code so I can change things or add on things as desired.

    Torque 3D is great for this; you get a full-featured engine, all source included.