Fire Up Your Engines… Any of Them!
For those who don’t know, both Wrack and Exoverse are using the same engine written from scratch – most likely because I have no life. But, is it really a custom engine, though? After all, it’s using a graphics library that I didn’t write (DirectX). It’s also using an audio library that I didn’t write (XAudio3D). Hell, we even started using a physics library that again, I did not write (Bullet). So, what gives?! This doesn’t sound very custom! And couldn’t I have saved myself all this hassle by using a real engine like Unity or Unreal? Wouldn’t that have been better?!
First, I think it’s important to look at what the role of any engine (or library – sort of a sub engine) is. Simply put, it’s to be a toolset to carry out what you want to do effectively and efficiently. A graphics library that can’t display a PNG image on the screen or an audio library that can’t play WAV files is a pretty bad one. Similarly, a physics engine that can’t bounce a ball around your world without turning your game into a slideshow is no good either.
Typically, your needs aren’t going to change depending on which engine or library you’re using. If you want to play a music track, it had better sound the same whether you’re using FMOD, XAudio, or whatever you’re using. Some engines might have fancy capabilities (like volume, ooo), but typically these capabilities are seen elsewhere (because something like volume control is important). Most engines have pretty similar toolsets (the same way most physical toolsets will have a screwdriver) so for whatever game you’re trying to make you ought to have the tools you need.
This is why it’s generally pretty ridiculous to look down upon a game because of (let alone care about) the engine it uses. A couple of weeks ago, there was a controversy over somebody saying they wouldn’t buy a game because it was using Unity… which is utterly ridiculous. There are good games made in Unity as well as bad ones, but there’s nothing the Unity toolset is lacking that causes games to be bad (to my knowledge, anyway). If a game made in Unity is bad, it’s purely because the developer made a bad game. If someone showed you an ugly drawing, and they linked it to you with imgur.com, you wouldn’t blame the site for it and then swear it off for good, would you?
It would be like if we cared about which camera was used to film movies, which (unless it’s an IMAX camera) we pretty much don’t. I don’t recall anybody in recent memory seeing a movie trailer, doing a bit of research and then saying “They shot that with a Kodak?! Welp, won’t be seeing that!” When it comes down to games though, I think we hear about engines for one simple reason – marketing.
If you want to sell anything, it makes sense to make yourself known to those who might buy what it is you’re offering. (I’ve often taken the opposite approach. It hasn’t worked.) Movies don’t advertise what kind of camera they’re using because there probably aren’t a tremendous amount of amateur filmmakers present in the audience (besides, most phones already have adequate cameras). Games though are much more difficult to develop, and there are a lot of indie game developers out there playing other games.
Unfortunately though, in getting their name out there, they also end up co-branding with whatever game is using it – which they have no control over, and may or may not be good. A bad game will tend to make a player look less favorably at everything associated with it, fair or not, including the engine.
It’s probably far-fetched wanting engine logos splashed on the screen whenever you load a game to be done with, but I think it would help. The same goes for media attention paid to which engine a game uses. But, if engine developers more finely aimed their marketing cannons at developers instead of any gamer ever, the media and general gamers would be able to get back to the proper level of care for a particular engine – which is none. Do you care about watering techniques Starbucks uses to grow their crops? Probably not, and it doesn’t make sense to care about which rendering pipeline (OpenGL/DirectX) a game uses either.
So, don’t fall for it. Realize that at the end of the day, engines are just tools to serve the developers in making a game. That’s it. They don’t make or break a game. Just sit back, enjoy your coffee, and enjoy the game.