Home

Awesome

Build status

🚀 gdx-liftoff 🚀

A setup tool for libGDX Gradle projects.

Screenshot of gdx-liftoff

<h1 style="text-align: center;"> 📥 <strong><a href="https://github.com/libgdx/gdx-liftoff/releases">DOWNLOAD</a></strong> 📥 </h1>

To generate a project, download the latest application jar and run it (usually double-clicking will do), or run the following command manually (replacing the VERSION appropriately):

java -jar gdx-liftoff-VERSION.jar

You must build with Java 17 or newer! Gradle's current version, as well as current Android tools, now require your installed JDK to be version 17 or higher. Regardless of what platforms you target, Gradle 8.10.1 needs a JDK with a version at least 17! You can still target other releases, as low as 8 typically, while building with any of the JDK versions 17 and up. All stable target releases of Java from 8 to 23 work here now. We use Gradle 8.10.1 because it will work out-of-the-box with Java 23 even before it has a final release (which will be soon, if not already complete).

If you have any trouble, you can try our 🐛Troubleshooting Guide🐛.

Features

In addition to most features of the original gdx-setup, the gdx-liftoff tool offers:

Guide

For the video-inclined, @raeleus produced this tutorial video.

Gdx-Liftoff Tutorial Video

If you'd rather read text, then here you go...

Gdx-Liftoff is a relatively straightforward GUI application.

After that you can open the project in the path you specified, or open it more quickly in IDEA if it's installed how Liftoff can see it (using JetBrains Toolbox, most likely, though a manually installed IDEA can also be used).

If you want to use Kotlin, a Kotlin template is recommended (such as Kotlin Logo); these mention that they use "Kotlin launchers" in their descriptions. The KTX libraries are all available as third-party extensions; these aren't required for Kotlin projects, but they can be helpful. KTX and other Kotlin-based libraries need Kotlin enabled. Currently, projects generated here default to using Kotlin 2.0.20, which may have some incompatibilities with the earlier 1.9.x releases. You could instead set the version to the newest 1.9.x release (currently 1.9.25), in the Languages dialog, when you select Kotlin as an option. The 2.x series of releases claims a number of nice improvements, however, and most libraries appear to be either very close to compatible, or are compatible already. Liftoff itself is built using Kotlin 2.x , as well as substantial Java code (compatible with Java 8).

Some things are structured differently in Liftoff projects, compared to gdx-setup projects. Where gdx-setup puts almost all configuration in /build.gradle (in the project root), including for subprojects like android or html, Liftoff puts only shared configuration in the root build.gradle, keeps all user-configurable version information in /gradle.properties, and moves per-project configuration to /core/build.gradle, /android/build.gradle, /html/build.gradle, etc. Liftoff also calls the project that depends on LWJGL3 lwjgl3, since you can also create a project that depends on LWJGL2, and that's called lwjgl2. You might need to change references to the "desktop" module (as gdx-setup calls LWJGL3) to lwjgl3, since that's the most likely desktop module you would be using.

If you're adding dependencies to build.gradle files, you will probably need to add them to /core/build.gradle rather than /build.gradle in the root. Some dependencies may also need parts added to /lwjgl3/build.gradle, /html/build.gradle, and so on. If a library says to add lines to the dependencies section, that almost always means the block inside dependencies { }, but not inside buildscript { }. There are often two dependencies blocks, and you generally want the last one. Templates selected in Liftoff handle this automatically.

For more details on how to use the application and how it works, see the usage guide. If you would like to contribute to the project, you might find the architecture document helpful.

When submitting a pull request, please format the application with the ktlintFormat Gradle task.

Credits

The project was forked from the czyzby/gdx-setup repository. @czyzby and @kotcrab have created the original application, as well as a set of libraries that it depends on (gdx-lml and VisUI respectively). Since then, the project is maintained by @tommyettinger. Graciously, czyzby came back and made a wide variety of improvements, so big thanks there! Thanks also to @metaphore, who now maintains gdx-lml (which this used and may still use).

@raeleus created the Particle Park skin for scene2d.ui, which was adapted to be the default skin added to new projects (if the "Generate UI Assets" option is selected). "Accademia di Belle Arti di Urbino and students of MA course of Visual design" has created the Titillium Web font that the skin uses (under SIL OFL license). Oh yeah, and he did some other stuff starting in version 1.12.1.10, such as almost the entire release. Huge thanks to raeleus for the complete overhaul of the user experience!

Other project contributors include @Mr00Anderson, @lyze237, @metaphore (again!), and @payne911. People who haven't directly contributed code have still helped a lot by spending their time to test on platforms like macOS and iOS; @JojoIce is one of several people who made a difference regarding iOS. And of course, many thanks go to all the early adopters for putting up with any partially-working releases early on!

The randomized icons chopped up and used for Android projects come from the OpenMoji project. If you want to use these icons in a less-mangled format, there's openmoji-atlas to access these emoji from libGDX conveniently.

Thanks also to everyone who has made the various libraries and tools Liftoff depends upon. From the huge team responsible for Graal Native Image, to Construo by pretty much a team of one, some of the best features of Liftoff aren't in Liftoff code at all.


Good luck, and we hope you make something great!