FAQ
Here's some common questions and, more importantly, answers.
Is it open source?
A: There's two parts to Cuttlefish: the engine, and the Designer. The engine is the actual code for each platform that makes things work. That code is completely open source.
The designer is the desktop tool you use to edit tile layers, create particle systems, and so on. The Designer spits out the full source code for your game. That code is completely yours - combine that with the open-source engine, and you have every line of code your game actually needs to run.
The designer itself - that's not free, nor open source. But all the designer data files are XML, so it’ll be easy to write your own tools if that’s what you need. We also have plug-in support on our radar.
Is it 3D?
A: Not yet. It will have some 3D features. Think Flash, 2D done in 3D, so with particle systems, scaling/stretching/rotation, etc.
You don't need 3D to make a successful game, and in fact, most hit mobile games are actually 2D. Angry Birds, Fruit Ninja, Osmos, Farmville, We Rule, Cut the Rope - none of those are 3D, and all are conceptually possible under Cuttlefish.
That said, we get that 3D's awesome, so it's on the horizon. The engine's been designed with 3D in mind from the start, so it's not going to feel tacked on later.
Is your focus on particular platforms?
A: Ideally, we'd release builders for as many different platforms as possible. But we have limited resources, so we're picking carefully. What we're doing with the beta is releasing first for Windows Phone. We'll follow up with iPhone, then Android.
So, if I'm interested in iOS or Android, I should wait?
A: No! Start making your game now... your game exists in a platform-agnostic state, and we've shipped simulators for iPhone, iPad, and Android devices. You can run your game in those; you just won't be able to run it on device, or submit it to the app store, until the iOS/Android builders are complete. When they are, the designer will prompt you to update, and you'll be able to hit build and ship your game.
We can't say specifically when these builders will be ready but, if you're starting to build a professional-quality game now, they'll likely be ready before you're ready to ship.
Why Windows Phone first?
A: It's still relatively young, which means fewer apps are available, which means greater opportunity for game makers, so we wanted to get complete support for it out first. You can build a game using the public beta version of Cuttlefish, downloadable now, and you can submit that game to the Zune Marketplace, and make some cash off it. What better way to test a beta!
How is it possible to write the same code for iPhone, Windows Phone, etc? They use different native languages!
A: Cuttlefish works through code generation. You write your game in the Designer, and it generates the actual Objective C, C++, C#, Java, whatever, for that particular phone. Your entire game is then built by XCode, or Visual Studio, or Eclipse/gcc. So unlike other engines, your game doesn’t take a huge performance hit because it's running some interpreted language. And it's definitely not Javascript based!
Cross platform. So it's slow / bulky / unintuitive / etc.
A: You're thinking of traditional cross-platform engines, which yes, can sometimes be all of those because they have to compensate for platform differences as they run. Cuttlefish compensates for platform differences when your code is built.
For example: say that, for whatever reason, loading a sound on a particular platform is really slow. A traditional cross-platform layer can't control when that sound is loaded - when your code says "load sound," the best it can do is shrug, and load the sound. But on Cuttlefish... Cuttlefish writes the code. Cuttlefish could change that to be a background load, or to load all sounds at once, or whatever works best on that platform. Think of Cuttlefish as both an engine, and a guy who knows how to write really fast code for that engine. The Cuttlefish Designer writes code that accesses the engine in the most efficient means possible. We haven't had to do anything this drastic, but if we needed to, we could parse and completely rewrite the logic you craft in the designer. Cross-platform without limits.
Cross platform, that means lowest common denominator... cross-platform locks me into using only what the engines support.
A: Again, Cuttlefish is different. Cuttlescript lets you bind your own native functions and classes directly to your project, and those can be different for each platform... so if you're a programmer or have access to one, you don't need to worry about your hands being tied by the engine. If we don't support it, you write your own native code, or you link the generated code with any library or assembly you need for each platform. Nothing is just flat out "not doable."
Can I use xxx library?
In general, yes! There's been a ton of code released already for some platforms. Those libraries - for example, the Flurry APIs, or your ad-serving API of choice - you can integrate into your Cuttlefish game, and then access through a native script gateway.
Obviously, they won't work on platforms they weren't designed for... Flurry isn't going to magically work on Windows Phone 7 unless they release a Windows Phone 7 assembly you can use in Cuttlefish. But if they do, you can!
Again, think of the contractor model - if you can have your contracted genius iPhone programmer use a particular library, then you can also have Cuttlefish use it.
Networking?
A: Yes, but, there's been some redirection here. We've backed away from building out support for "PC"-esque, low-latency multiplayer, because as it turns out, virtually nobody deathmatches on their phones.
We're now focused more on the kind of multiplayer that's like Words With Friends or Farmville, where everyone's hitting a central database somewhere, and a half-second to fetch the data isn't a showstopper.
Towards that end, the engine supports asynchronous web requests (for example, fetching JSON or XML data in the background). We're working on building out more support for this, but the basics you absolutely need are there. Downloading certain assets or game configuration data from a central server is also possible.
And, if you DO want low-latency deathmatch via bluetooth, you can always write that yourself (no limits - see above)!
Physics?
A: Very much yes. We have fully integrated box2d, and we have a full physics editor. Physics is completely scriptable - you can build anything in script, and you have access to the low level collision events between objects.
Everything Else
Got a question not addressed here? Head on over to the forums!
