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 ?

1) Publishers outsourcing their iOS development to the cheapest 3rd party, ignoring the quality and portability of the resultant code.2) 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.3) 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...

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 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).

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.

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.

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.

- 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.

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.

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...

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. No more tools!

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.

I'm going to dredge up this topic and say - could you expand on this a little please?

I could but... the bottom line is: it's a shiny turd.Very simple to get in to, very hard to make something complex and nicely working and polished code-wise. Nearly impossible to do good QA / tests / debugging unless you really know everything about the inner workings.Basically the amount of work to create something good/complex in Unity, is as much as with a professional engine, I guess even more. But this work would be extremely frustrating kind of work.If you want to make something very simple, very fast and it can have bugs (basically a prototype), then you may use Unity. In other cases building up expertise with any other engine/framework will be a better use of time.

The knowledge you gain from Unity is useless and specific to Unity's behavior, not all of it, but major frustrating parts. If you learn libgdx, virtually all these concepts can be found in other big engines as well and will help if you have to work with something else too.

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.

(I'm talking about Java 8 )

That's not correct. C# has a lot of small features java is missing (Properties, Real Generics, operator overloading, optional parameters, Extension Methods, LINQ, nice operators like "??", the "var" keyword, real dynamic objects etc.). All in all those are mostly some small code syntax improvements, but it makes working with C# a pleasure and removes a big amount of boilerplate code in my opinion (this is important, it's only my opinion) C# is simply the more beautiful language than java (i notice it everytime i code something in java). But I still have to say, that I prefer eclipse over visual studio.

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.

(I'm talking about Java 8 )

That's not correct. C# has a lot of small features java is missing (Properties, Real Generics, operator overloading, optional parameters, Extension Methods, LINQ, nice operators like "??", the "var" keyword, real dynamic objects etc.). All in all those are mostly some small code syntax improvements, but it makes working with C# a pleasure and removes a big amount of boilerplate code in my opinion (this is important, it's only my opinion) C# is simply the more beautiful language than java (i notice it everytime i code something in java). But I still have to say, that I prefer eclipse over visual studio.

C# as a language IMO beats java hands down. The problem with C# is mainly on the server side, where linux is king. It's lagging horribly in mature concurrency libraries and frameworks, smaller choice of libraries in general, etc..

My only gripe about C# is it's kind of a kitchen sink language. They had the benefit of seeing what java did poorly and improved on it, but it's kind of done in an ad hoc manner.

They had the benefit of seeing what java did poorly and improved on it, but it's kind of done in an ad hoc manner.

The one big thing about C# is the ability to pass objects by value and by reference and lack of type erasure plagued generics. The downside is that the APIs are fairly bad, threading support was/is bad, and where ever else it differs from Java it favors error prone syntax and semantics to precise source code. (Of course I haven't done much C# programming since Visual Studio 2005 was beta, but I still read new C# source code.)

Java was also designed in an ad hoc manner. The downside to the way languages like C, C++, Java, and C# are developed is they all have dumb quirks leftover from their origins that will never disappear.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org