You’ve probably heard the phrase “jack of all trades, master of none.” The idea is simple: when you specializing in everything, you specialize in nothing. So, fundamentally, you’re “kinda’ good” at everything; but, never great at one particular thing.
This applies to technology.

Generally, a swiss army knife will provide you with a blade that’s not sharp enough or sturdy enough, a toothpick that gets lost, scissors that can hardly cut through an envelope, and a tiny magnifying glass that’s useful for… what, exactly?
Compare that to a Gerber knife.

The Gerber is a precision instrument. It has only one purpose: to be a damn good fixed blade.
Technology is like this.
Unity, for instance, advertises itself as a highly configurable, general purpose engine: “Unity is a multiplatform game development tool, designed from the start to ease creation. A fully integrated professional application, Unity just happens to contain the most powerful engine this side of a million dollars.” (From Unity3D.com).
Well, that’s all wonderful. It’s a general purpose engine that can do 2D, 3D, RPG’s, FPS’s, deploy to the web, deploy to various platforms, etc. But, at what cost? What is it sacrificing for this generality?
A simple question: why has it taken so long for Unity to support the Android OS? (They still haven’t fully supported it).
Let’s look at another element of the modern engine. Typically, as the number of supported features increases, the complexity of the system MUST at least linearly increase. For instance, on that Swiss army knife we see various tools, each tool requires an understanding of how it works in general, how it works for that particular implementation, and its strengths and weaknesses. The more features, the more overhead.
This can be seen in Ogre3D. Ogre3D is an extremely powerful, general-purpose renderer. The problem? It has so many features that sorting through them when attempting to build a simple application becomes a chore. Sure, Ogre3D is great if you’re going to build a large-scale application or game! But, when you just want to develop something small? Well, then you’re forced to use a template they developed in an effort to hide the complexity of the renderer (http://www.ogre3d.org/tikiwiki/Basic+Tutorial+1&structure=Tutorials).
This isn’t to say that specialization is the key to solving all of these complexity issues/change dependencies. Unreal Engine shows us that this definitely isn’t true. UnrealEd, Unreal’s editor, has a variety of subsystems and complex displays for building out advanced FPS games. Once you’ve wrapped your head around the entire system, it’s not too bad to throw together a high quality product; but, there’s a lot of overhead to learning the engine.
Well, what’s the solution, Andrew?
First, simplicity. The kitchen sink isn’t needed. An engine’s purpose must be strictly defined. Its method of achieving that purpose needs to be explicit, as well. The Cuttlefish Engine’s motto is “write your game once.” How does it achieve this? Well, by “…generating native source code (Objective C, Java, and more).”
Second, intuitive tools. Developers understand Photoshop, Maya, IDE’s, etc. Why reinvent the wheel? Why should programmers learn a complex, new language? Cuttlefish uses a C#-like language for scripting as well as a series of well developed visual scripting systems. Additionally, Cuttlefish’s designer is simple to comprehend with few windows, immediately understandable options, and without a plethora of screens. So, check that off our requirements.
Finally, an engine must be humane. It must anticipate the needs of the users and provide human understandable output when errors are made without exploding. Many engines have utilized C++ and asserts to build their tools. This leads to multiple crashes throughout the day that can inhibit content creation. Reliability and having a system in place to recover from faults is pivotal to staying on schedule. I can’t stress the frustration of having worked hours on content only for the tool to crash and corrupt the data. Horrible. Cuttlefish’s designer is a kind, warm friend that explains your mistakes without exploding.
That’s why we’ve decided to go with Cuttlefish. It’s simple, but strong. It provides us with the platform we need to develop rapidly.
We’ll be the first title to ship with the Cuttlefish Engine
Stay tuned for more details on our project, screen shots of development, etc.!