I very often come across this situation: game developers want to port from or to android and sometimes they cannot because it takes much money/time to port, or because of this is never happens at all.
Sometime it can be a simple a business decision - like iOS brings more money than android. But that should only happen from AAA mobile developers like for example Plants vs Zombies 2 now which will be at least for now an iOS exclusive.
My question is: Why are these devs not using software frameworks to port this stuff ?
I’m not sure how good libgdx’s iOS porting is - but there are other frameworks than libgdx that do this also of course.
At least android <-> pc seems to work almost perfectly.
So why this ignorance ? Do they really dont know that these solutions are actually good ? Do they believe that these are unreliable ?
Publishers outsourcing their iOS development to the cheapest 3rd party, ignoring the quality and portability of the resultant code.
The myriad of Android devices means there’s a lot more to getting a game onto Android than just having it compile; device quirks, different input configurations, wide performance variance requiring significant scalability in resources & runtime performance to name just a few.
Less attractive platform because of higher piracy rates and lower price expectations.
There are a lot of reasons LibGDX hasn’t gained more “pro” recognition:
Doesn’t appear to be very tightly integrated with ad support. I think more documentation will help this.
Not very tightly integrated with social sharing support (i.e. FB/Twitter APIs for iOS 5+)
iOS backend still seems to have some quirks, and ultimately it comes off as a bit of a “workaround” … Therefore not attractive if your primary target is iOS.
No video decoding; this makes it less attractive especially for interactive apps like AR
The UI library is great, but not up to the standards of HTML5 UIs or Flash/AIR UIs. It’s also not as easy for designers to work on, and is more of a programmer-friendly UI toolkit.
The 3D API is not yet very mature
It is open source and maintained by independents, so you aren’t going to get the kind of (company) support that you might from a larger organization like Unity
The HTML5 backend is nice, but WebGL support is still poor, especially in the mobile field. Plus, WebGL seems like overkill for many simple 2D embedded games.
Not easy to integrate with technologies like Kinnect, Leap Motion, Occulus, etc
JNI is just a giant WTF for most people, myself included. This is not good if I hope to use certain 3rd party APIs like OpenCV.
The real question is why Unity is not more popular amongst AAA studios and other interactive fields (i.e. digital advertising, digital storytelling). It fixes pretty much all these issues and ports to more platforms…
I’ve had the pleasure of working with Unity for one project at university now. I went from dislike to curiosity and now finally, after using it, to loathing. It’s dreadful.
I mean I am sure there are ways to use Unity more “sensibly” but from the start on its just a designers tool. Even things are threads are really hard to get working right. Often things happen and you simply dont know the cause / cannot debug.
I could write a whole paper on it now, but basically its a designers tool, kinda like Processing, and for that purpose its good: Getting a 3D prototype fast and test things out is fine. If you want to make something decent however, all that simplicity comes back to bite you, and someone who is even remotely skilled in games programming will be baffled at how things work in Unity(though not all things, Unity isn’t the worst offender but its bad enough not to use it for big projects).
We might be the worst case of this, as we had little time, didn’t read the Unity docs very much and expected to be able to make a game since we can make anything with opengl/libgdx. Well no such luck.
I’m going to dredge up this topic and say - could you expand on this a little please?
I’m planning a mobile project that has to work on both Android and iOS (and Mac and Windows) so the obvious options are Unity and libGDX. But I’ve only just dabbled in Unity and it already feels… uncomfortable. I have no idea to actually architect the game in a way that doesn’t feel cobbled together, and I have The Fear that going from quick prototype to a proper, robust game is going to be a nightmare.
Or maybe I’m being cranky because I’m trying to learn something new.
OrangyTang - you should also consider AIR/AS3 as a platform. Very strong tools and cross-platform support; plus the ability to write your own “native extensions” in ObjC (iOS) and Java (Android).
@Orangy Tang I succeeded in reusing some stuff written by a researcher located in Belgium to run a subset of J2ME under Android. Maybe it could help you a bit.
Thank you for writing this. I’ve never used Unity or wanted to use it, because it’s not the tool for me, and it’s not the right tool for many budding game developers. Now though, I’ve got hard arguments other than “it’s not for you” to tell people to stay away from it.
Well… I still wonder why is .NET still used, especially for (indie) games. :persecutioncomplex: Except not too bad language (C#) this is just worse Java platform alternative for Windows only.
Good, keeps those bastards away from my nice UIs! UIs that aren’t built with code have so much pain built-in.
[quote]- JNI is just a giant WTF for most people, myself included. This is not good if I hope to use certain 3rd party APIs like OpenCV.
[/quote]
Mario’s fancy gdx-jnigen solves this, it’s super cool. It isn’t even libgdx specific, IMO more Java projects should use it. It makes using native libs with Java easy. Eg, JGLFW was a breeze.
[quote]The real question is why Unity is not more popular amongst AAA studios and other interactive fields (i.e. digital advertising, digital storytelling). It fixes pretty much all these issues and ports to more platforms…
[/quote]
I’m no Unity expert, but probably because it is pretty terrible. The Unity guys themselves tell you if you are targeting mobile that you can’t use most of the “cool Unity stuff”. It crashes a lot, especially if you try to debug at all. For a game of any complexity you end up writing as much or more code as you would otherwise, except you also have the pleasure of also dorking around in a GUI and figuring out the Unity black box magic, closed source, odd conventions, etc. Did I mention it crashes regularly? It does have an interesting entity framework, though parts are a bit silly (update, lateUpdate, evenLaterUpdate, etc). I hear it has a nice pipeline for art stuff and a GUI makes non-technical people feel good about their place in life, the universe, and everything, but I don’t see it as an industry killer. Then again, I’m biased. I do think tools could be written to do what Unity wants to do and could have a huge impact, I just don’t think Unity is it. I’m doing everything I can to stop myself from trying to write those tools. :persecutioncomplex: No more tools!
Damned tools, can’t help it! Spine is a huge amount of work for a tool with smaller scope than something that competes with Unity. I want to make games someday!
The only thing C# has that Java doesn’t is the ability to use pointers… which a JIT compiler I’m sure will create with equatable Java code. Java has been multi-platform for a long time, C# is just starting… it will have years of hiccups I’m sure.