LibGDX Project Setup v3.0.0!

Sep 24, 2012 by     37 Comments    Posted under: Desktop applications, LibGDX Project Setup

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.

The tool, like before, lets you configure new projects quickly by providing only the necessary information.

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 new start screen lets you immediately guess what’s the biggest change: the support for updating an existing project with the latest version of LibGDX (and other libs).

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.

The new classpath review screen, as you guessed, lets you review your classpaths before updating the projects.

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
It may no be very clear, but in the vast majority of use cases, you won’t delete 10 libraries while adding 5 new ones and updating 15 others on a single update, so there should not be much to worry about. And even if you do something wrong, a manual edition of the classpaths in Eclipse can restore everything :)

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

The whole user experience (UX) has been redesigned to present the new content more clearly.

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.

Each time a download is triggered by the application, you will see it in the taskbar.

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

Even the help dialogs from the FAQ have been converted to sliding panels.

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

Good luck with your projects!

37 Comments + Add Comment

  • OMG! This is sick how much workd did You put in this to make it this look that polished.
    Just watching the animations made me wish to start new project asap :P

    • Haha, I’m glad you like it, thanks :-)
      I love UI experiments with java and swing (or any other tech). You can really get a lot of cool things happening with not that much work if you know where to start. Of course, in this case, not having to create a tween engine from scratch helped a lot to get the animations up and ready quickly.

      • You mentioned “not having to create a tween engine from scratch helped a lot to get the animations up and ready quickly.” in your comment. What exactly you meant ? Have you used libgdx to create this setup application ??

  • [...] a bit more about the tool, and understand how to proceed with the update mode, there is a (big) blog post about it detailing everything that is to [...]

  • Great sir, you deserve a gold medal! :D

  • looking great! thanks for this awesome tool :)

  • Merci pour tout ce que tu fais Aurelien.
    Bonne continuation.

  • I checked it out too! Looks great :-D

    There is a few things that prevent me from using it:

    1) I have several Android projects plus an Android library project (full and lite version of same application)
    2) if I change the project suffix (advanced settings) I doesn’t recognize my projects

    Also, because I am having several Android projects, I am using symlinks. I am aware it’s not the optimal solution. Any thoughts on that?

  • The update feature is cool. Good job dude!

  • I am first here,and there is a problem,the font is too small

  • Wonderfull tool, thank you!

  • I just came here to Thank You :)

  • Wonderful. I use libGDX since one and half a year, but i was always missing something when building a new prototype.

    This tools is great.

    Thank you.

  • What a great tool, it answers all my questions!

    Thank You.

  • This saves many people hundreds of hours of dependency hell. Thank you!

  • The tool looks great, but I still have difficulties in setting up my first project. I get the message: “At least one selected library has a missing or invalid archive.” And I am stuck.

    Wouldn’t it be possible that someone prepares a bundle with “everything ready” for development with libgdx? I am really having a hard time :-(

    Thanks,
    Pau

  • There most have been some connectivity problems. The problem fixed itself :-)
    Thanks for the great job.
    Pau

  • [...] are, you’ve setted up your project using the magnificent Setup UI tool. Aurelien Ribon’s free tool automatically creates cross platform libgdx Eclipse projects, [...]

  • it’s showing connection error (i use a proxy sever to connect to internet) any solution

  • it’s showing connection error (i use a proxy sever to connect to internet) any solution

  • I am truly thankful to the owner of this web page who has shared
    this great paragraph at at this time.

    Feel free to visit my blog post – flyer advertising
    calgary (Roseanna)

  • Wow, this post is good, my younger sister is analyzing these
    things, therefore I am going to inform her.

    My site … Television Via Internet

  • I cannot download either third party tools. They both appear red (pinkish) and a mouse over says:

    “IO Exception, Connection has been reset”

    I really am trying to use the Tween Engine but I cannot figure out how to use the Tween engine in my project after using the LibGDX Setup tool if I cannot get the tool to download the tweenengine. Any suggestions?

  • Nevermind…..Problem solved. Antivirus program was blocking it from downloading.

  • Does not work when you are behind a proxy. All you get is red boxes saying connection error.

    Please put in a option to allow a proxy to be entered.

  • Any plans to update gdx-setup-ui to support Android Studio?

  • Every weekend i used to pay a quick visit this
    web site, for the reason that i want enjoyment,
    for the reason that this this site conations genuinely nice funny information
    too.

    Feel free to visit my blog post … pool builder brisbane

  • Hi! Great Tool. Many thanks for that.

    But it seems to have a bug. If you open the advance settings and change the path for the html project, the path will be ignored.

  • So this is strange:

    The download version from this site adds the html path correctly but has no ios project.

    The version in the libgdx nightlies don’t add the html path correct but has the ios project.

  • I also agree with you. i believe that there are numerous lessons being learned from this book. By not reading the book, we miss out on some issues that are a sure impact to our life. However, I do think you ought to be a certain maturity so that you can get from this book what you need

  • Thank you very much, Aurelien Ribon, brilliant work, billiant mind!

  • I really hope this works. I have been trying unsuccessfully to set up a LibGDX project all day now. I have tried to use the set up UI on the LibGDX site and this doesnt really work. I tried to join the forum so I could get some help but there is a question required to join – which build of libGDX is the current one. I believed it to be 1.0.0 but apparently this is wrong and despite searching on google for sometime cannot find an answer to that so actually cannot even ask for help on the forum. Am about to give up on the basis that it would be so much quicker and easier for me to simply learn android from the android developers site and write my own game engine library that to use libGDX…

  • Awesome! Its genuinely amazing piece of writing, I have got much clear idea about from this article.

  • What’s Going down i’m neew to this, I stumbled upon this I have discovered It absolutely helpful and
    it has aided me out loads. I’m hoping to give a contribution &assist different customers lijke its helped me.
    Good job.

  • [...] = "600"; androiddevLibGDX Project Setup v3.0.0! November 13, 2014 Ducky Leave a comment http://www.aurelienribon.com/blog/2012/09/libgdx-project-setup-v3-0-0/ androiddev ad_idzone = "1174252"; ad_width = "728"; ad_height = "90"; Post navigation Previous [...]

  • Very soon this web site will be famous amid all blogging and site-building
    users, due to it’s nice content

Got anything to say? Go ahead and leave a comment!

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>