LibGDX Project Setup v3.0.0!
Here it is, finally, the new major release of Project Setup for LibGDX!
This is a revolution.
If you never saw this name before, it is a desktop application I made as a special request from Mario Zechner (lead developer of LibGDX). LibGDX is an awesome game development library that lets you deploy your game to many targets, like Android, Windows, Linux, OS-X, web browsers and maybe soon iOS. However, this comes at the price of a rather complex configuration of the Eclipse IDE when you want to create a new project. Four projects have to be set up, with links between them and shared resources. Nothing impossible, but the Project Setup application was created to make this configuration as easy as possible, which was a success.
The image below shows the screen dedicated to the creation of a new project. It did not change much since what was already released. By specifying four parameters, like the name of the project, its package name or the destination folder, you can get ready to code by just pressing a button.
Now, this new major release brings a ton of new changes and additions. The most blatant one is the presence of an update mode. As soon as you launch the application, you now land on a start screen presenting you two choices: creation or update, as illustrated below. You will also quickly understand my new approach to UI/UX: presenting only what is necessary at a time, and removing the use of modal dialogs, which I consider as annoying as web popups when there are too many of them in a single application (which was really the case for this one due to the amount of things I need to present now).
The update mode
Updating a library can be easy : you download a zip file, and then just need to unzip the jars from it and copy them to the “libs” folder of a project, replacing the old ones. Well, it is indeed the case for libraries like the Apache Commons for instance, but LibGDX? After having downloaded the new nightly build, the correct jars need to be replaced in every of the 4 projects (core, android, desktop, html). I’m the lazy kind, so I wanted a way to automate that. The issue is that since the tool doesn’t make a real difference between LibGDX and the third-party libs, the process need to support all of these libraries! And it does.
The update screen is quite similar to the one used for creating a new project. The real change lies in the “step 1″ panel. You just need to select a core project of one of your games, and the tool will analyse stuff and detect everything for you. If you want to update a third-party library you used in your project, don’t forget to select it in the library selection panel. Also, you can add a new third-party library to an existing project by selecting it in the same way, if it was not already present. When ready, proceed to the classpath review screen.
This screen is very important, and you should pay a high attention to it. It presents you the files that will be listed in the classpaths of each project. Elements in blue are updated files, green ones are new elements (coming from a new library you selected), and orange ones are unknown elements. Now, an unknown element is not a bad one you need to remove. It can be either:
- a file from a third-party library you didn’t choose to update. Leave it like that, it won’t be touched and will stay as it was.
- a file from a third-party library you don’t want any more. You can select it and delete it then.
- a file from a third-party library you want to update, that changed the name of a file since its last version. Delete it (but make sure the new names are listed as green elements).
- a file from a library you manually added, which is not an official third-party one. Don’t touch it.
- the main class name in the GWT modules list, since it’s not related to a library. Don’t touch it :p
UI / UX changes
With this desktop application, I tried a new approach to UI design and content presentation. Since there are many things to present to the users, which may be quite big (like the classpath review panel), putting everything on screen at once was not an option. One possibility would have been modal dialogs, like what I do in nearly every other tool I made. I even wrote a tutorial about how to create pretty dialogs. However, this requires Java7, and I’m quite bored of dialogs. I could also use a tabbed design, but that feels very old-school in most apps now. It’s totally okay for development tools, but I wanted a way to tell everyone: “LibGDX is an awesome library made by awesome people, welcome“.
That’s why I decided to create the SlidingLayout library I presented in a previous post. With that one, it was very easy to create different “screen configurations” and to animate the transitions between two configurations. See the following animated gif (with crappy colors because of compression), it says it all :)
I also used the Universal Tween Engine to animate the taskbar of the tool. I do not want to hide something from you and contact remote servers without you knowing it. Therefore, every download started by the tool is shown in the taskbar with a progress report. If a problem occurs, the associated tile will become red and won’t disappear automatically, to let you know what went wrong.
I’m kinda pleased with the way content is presented now. I may reuse this for other applications that needs to display different things, without having to popup modal dialogs all the way. I’m aware it may not please everyone; it’s not Win8 but it’s quite a new way to make applications. However, I’m pretty sure the transition speed is high enough to keep responsiveness on top, and the transitions help to understand the order of screens much better than anything else :)
I also spent some time polishing the UI by replacing every button and checkbox by a custom implementation, to add more consistency between the windows, linux and os-x versions of the tool, but this is a small detail :p
TL;DR, gimme the links!
The application source code is hosted on GitHub as a self project, and is also included in the LibGdX source code, in the “extensions/gdx-setup-ui” folder. However, I only commit the stable releases to LibGDX, to avoid people using a broken release. Individual commits are still pushed to the project self repository.
Get this 3.0.0 release from the project download page, or from the LibGDX nightly build.
Download page: https://github.com/AurelienRibon/gdx-setup-ui/downloads
Project page: https://github.com/AurelienRibon/gdx-setup-ui
Thanks for reading, I hope you will enjoy this application as much as I enjoyed making it! Also, big thanks to every beta-tester who helped me test this application! If you are now able to spend more time on your games and less on the IDE plumbing, then I’m glad to be a small part of the process ;)