We're using Unity
I have these observations to make about it.
1. Bloody hell, you can't half get some stuff done so fast
. The vast majority of game development wank - you know, lighting, shaders, just loading 3D models let alone rendering or animating them, game loops, etc. - all works and been done for you. All you have to do is "make game".
2. It's not exactly super-fast but then that's because it's super-flexible within the bounds of its design remit. So you won't be making Dawn of War or anything with 5,000 units running around but for mostly anything else... it looks like it'll cope.
3. The ability to deploy on mobile devices as well as desktops is of course still the massive red herring that it is with every other cross-platform dream environment. You do not
make desktop games to run on phones, nor vice versa. Just give it a rest already. If you base a decision to use a tool because you can magically make the same sourcecode run on the other, you need to get your head out of your arse and think about what the hell you're up to.
4. C# (on Mono), everyone will tell you, is superficially similar to Java and that they're functionally identical. I can now tell you that they're not really at all. C# is a fairly atrocious language that seems to have been designed by hackers and bodgers trying to play catchup with Java and C++ as fast as possible. It has readability almost as poor as C++, performance seems to lag Java by a decade (and that's because of shitty libraries mostly), and all manner of inconsistency and missing functionality and shittiness that you only realise you were spoiled with when you've used Java for any length of time and try to use something else. It really is a half-baked hack compared to the hundreds of man-years of academic effort and maturity and testing that seems to have gone in to Java.
5. The Unity IDE is a bit temperamental and buggy, but then what IDE isn't? It's particularly poorly integrated with Monodevelop, which is itself, a total crock of shit compared to Eclipse. Navigation is non-existent. Stuff like integrated Javadoc you take for granted. Browsing class libraries. Basic formatting and syntax colouring. All terrible, bugridden, non-functional or anti-functional (I usually have to type everything twice just to get the f**king stuff to format properly because it auto-formats stuff wrongly for me - every single time).
6. Oh, it turns out that you can string together trivial tech demos in Unity in no time at all - because all the tech has been done for you. But it then turns out if you actually want to make a game you've got to get pretty clever with C# "scripting" anyway. And in fact you end up doing all the hard stuff in C#. And you need to actually design a game too, which IMHO is actually the very hardest part of game development. I used to be worried about Unity coming along and "democratising game development" (read: suddenly opening me up to vast competition) but actually it turns out that the "engine" development part of game dev - the bit that people worry about the most because it looks the hardest - is actually one of the smaller aspects of game dev.
7. Being able to easily target PS and XBone at the same time as Steam is a massive advantage
if you have the right connections and understanding. Java is a major hassle in this respect... well it would be if I hadn't just managed to run Ultratron, unmodified, using IKVM. Hmmm.