Why not Unity or Unreal?

Tags: Game Engines, Custom 3D Engine, Software Architecture, Unity and Unreal, Independent Development, Low-level Programming


Some people ask why I choose not to use Unity or Unreal, considering them obvious, almost the only possible choice.

Will try to explain in details:

From the beginning I was looking for what could differ me from what is usually seen on the market (including Unity and Unreal projects). There was a list of things that I didn’t like and wanted to avoid or improve. Technically in particular: dependence on pre-built animations that are often out of sync with the ground, heavy models (in megabytes), huge textures (artists love that), overloaded rendering and shaders (for the sake of versatility), preset scripts, etc. Visually, I wanted to achieve a less epic and more cute picture (not in the cartoonish sense). Obviously, such goals imply low-level programming rather than high-level tools. What pushed me in this direction?:

First: Unity/Unreal market is pretty overdeveloped, overcrowded and overfunded. I am not ready to compete with Hollywood, Pixar or Electronic Arts. Don’t want to work on a project that simply has no chance of being on par with competition. Maybe it’s better to look for MY OWN niche instead?

2. Using these engines implies huge application sizes and most likely more powerful hardware, while I’d prefer to keep it more light and less demanding.

3. Such projects depend heavily on artists, which I simply don’t have. Besides, working with them most likely would turn into animating THEIR fantasies. Actually, a valid option too, just for another project types.

4. This may sound snobbish, but many programmers (myself included) don’t actually consider scripting to be programming.

5. Most Unity/Unreal projects I’ve seen look technically similar and boil down to 4-5 at most repetitive templates with different characters/environments. The main difference is the art. So I’d say these are ideal tools for artists-centric projects, less for programmers. On another hand, if your project fits one of these templates – then sure, it’s a perfectly reasonable choice.

My case was a bit different. But when you don’t fit and don’t intend to fit into someone’s mold, then doesn’t it make sense to give it up and proceed outside of it? Seems weird to use a tool to build something it’s not intended for.

Of course, I had doubts regarding my decision: am I “reinventing the wheel” or missing something important? Until I actually tried myself (in particular Unity). In many cases I failed to implement properly what I had in mind, and the process itself (instead of programming) came down mostly to searching for pre-built solutions, which in the end didn’t always meet your expectations, and often lead you to attempts to bypass, “fix” or “cheat” them. In short: it often seems easier to write from scratch yourself. And in general, I prefer to bend my code/tools to fit my design, rather than bending design to fit the tool/template. Many programmers will understand me.

Unity/Unreal fans (primarily beginners) say it’s so developed and advanced, that if you haven’t found something, it means you just haven’t mastered the engine well enough. Probably… I even tend to agree. But mastering it to such extent is a separate CAREER by itself and probably would take more time and effort than writing your own engine. And that’s exactly what I ended up with 🙂


Leave a Reply

Your email address will not be published. Required fields are marked *