Sunday, June 2, 2013

To Reinvent the Wheel, or Not to Reinvent the Wheel

As a programmer (and perfectionist,) quite often I envision that reinventing the wheel is the way to go. As such, I often contemplated programming my own custom game engine, but is it really necessary to start from scratch when there are engines out there capable of doing what you need and more? That is a question I often pondered, and a question which always drove me insane.

Is it better to use this? Is it better to use that? Should I make my own? Should I steal this guy's code? I can't make up my mind, so I'm just going to do something else.

After going through this so many times, I finally decided to sit down and look at the situation more realistically: I have never done any sort of 3D programming before in my life, so in the time it would take me to learn OpenGL or some random library I found on the internet, I could easily learn to use an engine that is already made. I just wanted to make a game, right? That's what I always want to do, but the idea of making my own engine and knowing it from the inside out just appealed to me.

Unity3D was an engine I often looked at but never used. Why put the time into learning to use something when I'll never really know how to use it? As contradictory as that was to my statement in the previous paragraph, it made sense: Why? I could just make my own and know how to use it right off the bat, but that would require knowing how to make it.

I just kept going in circles. My mind was filled with confusion and the sensation of being shoved into a blender. My indecisiveness was getting the best of me (as usual); I needed to do something before it was too late and I lost interest in doing anything at all.

At the time, I had an idea for a game that would be a perfect fit for a certain platform. The idea was a 2D game at first, so - as usual - I fell back to GameMaker for its development. I soon realized that while it could work in 2D, the idea would be better off with 3D visuals instead. This brought me back into the loop of not knowing what to do. Make the engine myself, or use something else?

After weighing my options for the umpteenth time, I came to the conclusion that it would be in my best interest (and the game's) if I went ahead and used an engine to focus on the game itself, and not its foundation. I went with Unity3D due to my prior interest in it and its various platform support, and I have to say that I'm glad I did.

It's not like I probably would've written my own engine anyway; I'm an incompetent programmer who is overly ambitious and often get myself in over my head. Sure, there are some pros to programming your own engine, one of them being flexibility. You can do whatever you want with it and you already know how to use it, but that isn't for me; I don't need features that other engines don't already offer.

As I said before: to each his own. What's good for me may not be good for you and vice versa. Perhaps you have reasons for making your own engine that I do not, or perhaps you just want to do it for the experience. The developers of these engines have worked their butts off to bring you awesome features that would likely take you years to implement into your own engine if you don't know what you're doing, so I see no point in redoing their work when all you want to do is make a game.

That's all I want to do.

1 comment:

  1. When I'm filling the role of game designer, I don't really care what I'm using to reach my goal, just so long as it's able to carry the idea.

    Of course, I create my own engines too, mostly for the sake of creating the engine and seeing what I can do with it. There is no right or wrong way to go about it, and coming up with your own ways of overcoming common problems is all part of the fun.

    Nice blog, by the way.

    ReplyDelete