For those as ignorant of the Java/Android scene as me:
LibGDX is a game-development application framework written in Java with some C/C++ components for performance dependent code. It allows for the development of desktop and Android games by using the same code base. It is cross-platform, supporting Windows, Linux, Mac OS X, Android, WebGL enabled browser and iOS. -- https://en.wikipedia.org/wiki/Libgdx
I found LibGDX to be an incredible framework to quickly iterate with. I really miss working with it as much as I did in 2012. The core developers are some really great guys who are always willing to lend a hand. I probably wouldn't have finished Droid Towers if it wasn't for their continued encouragement.
Good timing! I just started working with libGDX yesterday with my little brother. We decided it would be better to use it than roll our own Java framework and I think that was the right choice. It's been fairly straight-forward to work through the install and demo game located here: https://github.com/libgdx/libgdx/wiki/A-simple-game
I used this framework back on version 0.95 for a school project. We started late (of course) and got stuck on an API call that we could not figure out. Emailed a dev at like 10 or 11pm and got a response. Act of heroism...
LibGDX is a lot of fun to work with, and a great way to target both Android and iOS with the same code base.
What you might not have thought of, is that you don't have to limit yourself to games. I created a successful productivity app entirely in LibGDX (shameless plug, https://play.google.com/store/apps/details?id=com.absoluteat...). Features common in games and LibGDX, such as the very good performance and the rich animation capabilities can add a bit of flair to an otherwise boring app and make it stand out from the crowd.
I see that with the 1.0 release, you can now even embed a LibGDX fragment into your otherwise 'native' Android app. I can see this being very useful for apps where you want to have your animated custom gauges and widgets surrounded by the native OS chrome.
I found the most powerful feature is that you can create an app without a need to deploy it to a real device over and over again. It saves a lot of time even creating a multi touch game like Sum and Blossom https://play.google.com/store/apps/details?id=com.carrotfiel...
I agree fully, it's a huge productivity win. I built a small layer that simulates or at least stubs out all the device-only APIs for the desktop target; switching resolutions & DPI dependent assets (works), loading translated strings from Android XML files (works), opening the marketplace (stub), setting alarms and timers, etc.
I estimate I spent 99% of the development time on the desktop target with a redeployment cycle of just a few seconds, and only test on the device occasionally.
I'm considering using for the same thing. Especially with scene2d ui available - the temptation is large to build something that targets all desktops and ios and android easily.
It's time for cross platform uis again, native is getting old.
Been working with LibGDX since 2010 - I still remember buying the Newton physics game on my Motorola Droid. This was the best 2D Android game engine back then, and it still is in my opinion :) Congrats to the devs!
I recently managed to release my first game (https://play.google.com/store/apps/details?id=com.thomshutt....) using LibGDX and it really was a pleasure to work with - lightweight and not too opinionated, but with some nice abstractions over the more fiddly aspects such as out of the box Desktop/Web/Android/iOS support, input handling, app lifecycles etc.
You can. https://github.com/libgdx/libgdx/wiki/Using-libgdx-with-Cloj... (Bounce Away is a pretty fun game that uses both.) The problem I'm waiting for someone else to solve though (and maybe I'll just make it a side-project one day...) is a more idiomatic Clojure interface to LibGDX. Something like PyGame would be pretty sweet too, though PyGame is wrapped around SDL and the whole "blitting" pattern of getting stuff to the screen (which doesn't care if you're writing functional, oop, or procedural code) doesn't really work outside of 2D games.
You already can, just be warned that if you use something different than Java you won't be able to export to the web. From my understanding (please correct me if I'm wrong) LibGDX converts only Java code to JavaScript and HTML5.
If you're interested in an entity-component architecture for game development, here's a nice example project to get you started with learning how to do it. It uses libgdx for graphics and Artemis (http://gamadu.com/artemis/) for the entity component system:
looks like a really big effort to make developing on android a better experience, by clumping libs together, rather than just a game engine. I was not able to find out if the scene2d thing has a partitioning algorithm of some sort. Maybe It's irrelevant for an android device ?
Seems like good stuff though. Sadly I don't really "like" java...
The main problem which you will get with languages like Scala , Clojure and other functional languages on JVM is a lot of garbage generated during the execution. And garbage collector on Android isn't even remotely as effective as standard one. This often forces you to write code which is not really idiomatic and which rather resembles java. That is possible in Scala (I'm not sure about Clojure), but to some extend it defeats whole purpose of using something other than java.
I've often considered C++ as a mandatory requirement for game development. Java is fine though, but I just don't use it, and if I have to choose between java and C++, I go for C++...
I've often considered Assembler as a mandatory requirement for game development. C++ is fine though, but I just don't use it, and if I have to choose between C++ and Assembler, I go for Assembler...
And assembly. I've heard from my boss (who did games a while ago at a very notable company that still makes very well-known Triple-A games) that when they were making a sequel to their first game, getting an assembly programmer who really knew the CPU pipeline increased the performance of their graphics pipeline by 40-50%. (at least) I would imagine that modern games continue to need people who can program extremely optimized assembly, especially for consoles.
If you prefer C++, Cocos2d-X may be a good fit for you. I've tried it, but I just couldn't stand it, because of the way they've translated the Objective-C object model and bolted this on top of C++. To me it looks hardly idiomatic C++. I can understand their technical reasons though (easier to translate the original Cocos2d-iphone to C++).
While I understand the desire for good performance, using a higher-level language can give you some huge gains in the prototyping and iteration phase of design. That's where it counts when it comes to trying out game ideas and seeing what works.
LibGDX is a game-development application framework written in Java with some C/C++ components for performance dependent code. It allows for the development of desktop and Android games by using the same code base. It is cross-platform, supporting Windows, Linux, Mac OS X, Android, WebGL enabled browser and iOS. -- https://en.wikipedia.org/wiki/Libgdx