{"id":13529020,"url":"https://github.com/libgdx/gdx-liftoff","last_synced_at":"2026-04-01T17:11:39.133Z","repository":{"id":37259218,"uuid":"188758773","full_name":"libgdx/gdx-liftoff","owner":"libgdx","description":"A modern setup tool for libGDX Gradle projects","archived":false,"fork":false,"pushed_at":"2026-03-17T09:52:54.000Z","size":14409,"stargazers_count":657,"open_issues_count":21,"forks_count":64,"subscribers_count":19,"default_branch":"master","last_synced_at":"2026-03-17T22:54:58.603Z","etag":null,"topics":["gdx","gdx-liftoff","gdx-setup","libgdx","liftoff","project-generator","setup"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/libgdx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-05-27T02:36:34.000Z","updated_at":"2026-03-17T09:52:58.000Z","dependencies_parsed_at":"2023-12-11T02:29:43.947Z","dependency_job_id":"756d756c-d996-4c69-90e3-09e4390fc395","html_url":"https://github.com/libgdx/gdx-liftoff","commit_stats":null,"previous_names":["tommyettinger/gdx-liftoff"],"tags_count":101,"template":false,"template_full_name":null,"purl":"pkg:github/libgdx/gdx-liftoff","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libgdx%2Fgdx-liftoff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libgdx%2Fgdx-liftoff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libgdx%2Fgdx-liftoff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libgdx%2Fgdx-liftoff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libgdx","download_url":"https://codeload.github.com/libgdx/gdx-liftoff/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libgdx%2Fgdx-liftoff/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gdx","gdx-liftoff","gdx-setup","libgdx","liftoff","project-generator","setup"],"created_at":"2024-08-01T07:00:31.587Z","updated_at":"2026-04-01T17:11:39.127Z","avatar_url":"https://github.com/libgdx.png","language":"Kotlin","funding_links":[],"categories":["Resources"],"sub_categories":["Setup and Deployment"],"readme":"[![Build status](https://github.com/libgdx/gdx-liftoff/workflows/build/badge.svg)](https://github.com/libgdx/gdx-liftoff/actions/workflows/build.yml)\n\n# 🚀 gdx-liftoff 🚀\n\nA setup tool for [libGDX](https://libgdx.com/) Gradle projects.\n\n[![Screenshot of gdx-liftoff](.github/screenshot.png)](https://github.com/libgdx/gdx-liftoff/releases)\n\n\u003ch1 style=\"text-align: center;\"\u003e\n    📥\n    \u003cstrong\u003e\u003ca href=\"https://github.com/libgdx/gdx-liftoff/releases\"\u003eDOWNLOAD\u003c/a\u003e\u003c/strong\u003e\n    📥\n\u003c/h1\u003e\n\nTo generate a project, [download](https://github.com/libgdx/gdx-liftoff/releases) the latest application `jar`.\nThe latest release targets 1.14.0 by default. Once you have the right JAR, \nrun it (usually double-clicking will do), or run the following command manually (replacing the `VERSION` appropriately):\n\n```shell\njava -jar gdx-liftoff-VERSION.jar\n```\n\n**You must build with Java 17** or newer (up to 26)! Gradle's current version, as well as current Android tools, now\nrequire your installed JDK to be version 17 or higher. Regardless of what platforms you target, Gradle 8.10 and up need \na JDK with a version at least 17! You can still target other releases, as low as 8 typically, while building with any of\nthe JDK versions 17 and up. Stable target releases of Java from 8 to 26 work here now. **If you use a JDK version that\nisn't 21** for Gradle, then the automatic desktop release packaging with Construo will need some configuration changes\nso it downloads the same version of JDK that Gradle uses. This isn't hard, but is tedious, so using **21 exactly** is\nrecommended for this reason. See our\n[Troubleshooting](https://github.com/libgdx/gdx-liftoff/blob/master/Troubleshooting.md#how-do-i-change-the-construo-jdk-download-links-so-i-can-bundle-a-jdk-other-than-jdk-21)\ndocument for more details.\n\nWhen you enter the JDK version you use for a project, it is **always one integer**, such as `8` or `21`. Entering any\nbugfix or point releases after that will confuse Gradle and lead to bizarre bugs. JDK versions, or language levels,\nnever include bugfix versions, and when you enter one here it should always be a single int, with no `.` or `_` .\n\nJava 25 and 26 are now somewhat supported to build your projects, in recent Liftoff versions.\nJava 25 does include some useful features for reducing memory usage, if you enable them. Java 26 came out on March 17,\n2026, and surprisingly is already supported by Gradle. It doesn't add any (complete) language features, but does have\nseveral preview features and new APIs. In order to run with Java 25 or newer, LWJGL3 must use version 3.4.0 or later;\nthis is automatically handled by the current Liftoff version using Gradle constraints. If you find you need an older\nLWJGL3, you can now simply change `lwjgl3Version` in `gradle.properties`, which will make the constraints require a\nversion of your choosing. One reason you might need this is to better support Wayland on Linux, which changed how it\nworked starting in LWJGL 3.3.4 . Currently, libGDX 1.14.0 uses LWJGL 3.3.3 unless some Gradle config changes that\nversion. The constraints on the LWJGL version default to LWJGL 3.4.1 instead now, allowing Java 25 and up to work.\nTypically, you either leave `lwjgl3Version=3.4.1` unchanged, or set it to `lwjgl3Version=3.3.3` for Wayland reasons.\n\nIf you don't know what JDK you have installed, or don't have one, then either of the JDK 21 installers from OpenJDK\nvendors [BellSoft Liberica](https://bell-sw.com/pages/downloads/#jdk-21-lts) or\n[Azul Zulu](https://www.azul.com/downloads/?version=java-21-lts\u0026package=jdk#zulu) are recommended for Windows users.\nThey have good default settings in their MSI Windows installers. Oracle's OpenJDK (and especially its proprietary JDK)\nare *not* recommended. This is partly because their installers have confusing default options. The other part is that\ntheir licensing is not as clear as OpenJDK vendors that must use GPL v2 with Classpath Exception as their license.\nOracle can change (and has changed) licensing without much warning. On Linux, use your package manager to install\nOpenJDK 21. On macOS, you might need to get both an AARCH64 OpenJDK and an x86_64 OpenJDK to use certain parts of libGDX\n(any tools that still use LWJGL2 will need the x86_64 OpenJDK to run, and will use Rosetta). The links given for Windows\nshould also have working macOS installers.\n\nDo not install a JRE. If you have a JRE installed, you should install a JDK in its place, and make the JDK the default. \n\nIf you have any trouble, you can try our [🐛Troubleshooting Guide🐛](Troubleshooting.md).\n\n## Features\n\nIn addition to most features of the original `gdx-setup`, the `gdx-liftoff` tool offers:\n \n- **Project templates.** You can choose one of many project skeletons highlighting various libGDX features.\n- **Instant input validation.** Your project data is validated as you type it in.\n- **Other JVM languages support.** You can choose additional languages for your project, like Kotlin or Scala.\nTheir standard libraries, Gradle plugins, and appropriate source folders will be included.\n- **Customization.** You have more control over the versions of software used by your application.\n- **More third-party extensions.** Their versions are fetched from Maven Central or JitPack, so your project is always \ngenerated up-to-date.\n- **Automatic configuration for tricky extensions.** If you're having trouble setting up\nArtemis-ODB, Lombok, or several other libraries, Liftoff does some extra work, so you don't have to. \n- **Preferences support.** Basic data of your application is saved, so you don't have to fill it each time\nyou generate a project.\n- **Optional Gradle runner.** You can optionally execute Gradle tasks after project generation. Gradle doesn't have to\nrun for a project to be created.\n- **Supports all libGDX backends.** Do you need the LWJGL2, LWJGL3, and/or Headless backends? Liftoff\nprovides simple checkboxes to add any and all official platforms, plus some special other modules.\n- **Convenience features.** If you have JetBrains Toolbox, you can open a just-generated project in IDEA with one click\n(it needs \"Generate Shell Scripts\" set in Toolbox). If you use Eclipse, you can still import Gradle projects normally.\n- **Up-to-date.** This project prides itself on updating quickly after releases of major external components such\nas Gradle or libGDX itself.\n- **More backends are supported.** The headless backend has been part of libGDX for a long time, but wasn't easily\naccessed in gdx-setup; it is a checkbox here. TeaVM, an increasingly-popular alternative to GWT for browser-based \napplications, is also here, and works with Kotlin and other JVM languages as well as it does with Java. MOE, an\nalternative backend for iOS, is also here, and works with newer Java versions than the official RoboVM.\n- **Build native executables out-of-the-box.** The Construo plugin lets you assemble a JDK with your project's JAR and\nlaunch it with a native Win64 .exe, MacOS (x64 or AARCH64) .app, or Linux x64 executable. Configuration is also included\nfor Graal Native Image, though this is less likely to \"just work\" immediately.\n\n## Guide\n\nFor the video-inclined, [@raeleus](https://github.com/raeleus) produced this tutorial video.\n\n[![Gdx-Liftoff Tutorial Video](https://img.youtube.com/vi/VF6N_X_oWr0/hqdefault.jpg)](https://www.youtube.com/embed/VF6N_X_oWr0)\n\nIf you'd rather read text, then here you go...\n\nGdx-Liftoff is a relatively straightforward GUI application.\n - Enter a project name/package/main-class-name.\n - Click Project Options.\n - Select options you want (additional platforms, non-Java languages, official extensions, and/or a template).\n - Click Next.\n - Select any third-party extensions you want to add.\n - Click Next.\n - Enter a project path and optionally change Java version (such as to 8 for better iOS support).\n - Click Generate, and let the magic happen.\n\nAfter that you can open the project in the path you specified, or open it more quickly in IDEA if it's installed how\nLiftoff can see it (using [JetBrains Toolbox](https://www.jetbrains.com/toolbox-app/), ideally, though a manually installed IDEA can sometimes work).\n\nIf you want to use Kotlin, a Kotlin template is recommended (such as `Kotlin Logo`); these mention that they use \"Kotlin\nlaunchers\" in their descriptions. The KTX libraries are all available as third-party extensions; these aren't required\nfor Kotlin projects, but they can be helpful. KTX and other Kotlin-based libraries need Kotlin enabled. Currently,\nprojects generated here default to using Kotlin 2.2.21, which may have some incompatibilities with the earlier 1.9.x\nreleases. You could instead set the version to the newest 1.9.x release (currently 1.9.25), in the Languages dialog,\nwhen you select Kotlin as an option. The 2.x series of releases claims a number of nice improvements, however, and most\nlibraries appear to be either very close to compatible, or are compatible already. Liftoff itself is built using Kotlin\n2.x , as well as substantial Java code (compatible with Java 8).\n\nSome things are structured differently in Liftoff projects, compared to gdx-setup projects. Where gdx-setup put almost\nall configuration in `/build.gradle` (in the project root), including for subprojects like `android` or `html`, Liftoff\nputs only shared configuration in the root `build.gradle`, keeps all user-configurable version information in\n`/gradle.properties`, and moves per-project configuration to `/core/build.gradle`, `/android/build.gradle`,\n`/html/build.gradle`, etc. Liftoff also calls the project that depends on LWJGL3 `lwjgl3`, since you can also create a\nproject that depends on LWJGL2, and that's called `lwjgl2`. You might need to change references to the \"desktop\" module\n(as gdx-setup calls LWJGL3) to `lwjgl3`, since that's the most likely desktop module you would be using.\n\nIf you're adding dependencies to build.gradle files, you will probably need to add them to `/core/build.gradle` rather\nthan `/build.gradle` in the root. Some dependencies may also need parts added to `/lwjgl3/build.gradle`,\n`/html/build.gradle`, and so on. If a library says to add lines to the dependencies section, that almost always means\nthe block inside `dependencies { }`, but **not** inside `buildscript { }`. There are often two dependencies blocks, and\nyou generally want the last one. Templates selected in Liftoff handle this automatically.\n\nFor more details on how to use the application and how it works, see the [usage guide](Guide.md).\n\nWhen submitting a pull request, please format the application with the `ktlintFormat` Gradle task.\n\n## Credits\n\nThe project was forked from the [`czyzby/gdx-setup`](https://github.com/czyzby/gdx-setup) repository.\n[@czyzby](https://github.com/czyzby) and [@kotcrab](https://github.com/kotcrab) created the original application,\nas well as a set of libraries that it depends on (`gdx-lml` and `VisUI` respectively). Since then, the project is\nmaintained by [@tommyettinger](https://github.com/tommyettinger). Graciously, czyzby came back and made a wide variety of improvements, so big\nthanks there! Thanks also to [@metaphore](https://github.com/metaphore), who now maintains gdx-lml (which this used and may still use).\n\n[@raeleus](https://github.com/raeleus) created the\n[Particle Park skin for scene2d.ui](https://ray3k.wordpress.com/particle-park-ui-skin-for-scene2d-ui/),\nwhich was adapted to be the default skin added to new projects (if the _\"Generate UI Assets\"_ option is selected).\n\"Accademia di Belle Arti di Urbino and students of MA course of Visual design\" has created the _Titillium Web_\nfont that the skin uses (under SIL OFL license). Oh yeah, and he did some other stuff starting in version 1.12.1.10,\nsuch as *almost the entire release*. Huge thanks to raeleus for the complete overhaul of the user experience!\n\n[@Berstanio](https://github.com/Berstanio) has provided help in a number of ways to this project, such as by maintaining\nMOE Community Edition and PRing updates to it here, as well as handling the Graal Native Image helper, and probably even\nmore things over the years. [@obigu](https://github.com/obigu) has also contributed a lot of valuable, clean code to the\nproject, helping a variety of places.\n\nOther project contributors include [@Mr00Anderson](https://github.com/Mr00Anderson), [@lyze237](https://github.com/lyze237),\n[@metaphore](https://github.com/metaphore) (again!), and [@payne911](https://github.com/payne911).\nPeople who haven't directly contributed code have still helped a lot by spending their time to test on platforms\nlike macOS and iOS; [@JojoIce](https://github.com/JojoIce) is one of several people who made a difference regarding iOS. And of course,\nmany thanks go to all the early adopters for putting up with any partially-working releases early on!\n\nThe \"Space Shuttle\" icon was drawn by [Delapouite](https://delapouite.com/) for the large \n[game-icons.net](https://game-icons.net) collection. These icons are also available in a libGDX atlas format\n[in this repo](https://github.com/tommyettinger/game-icons-net-atlas), if you want to use the whole collection yourself.\n\nThanks also to everyone who has made the various libraries and tools Liftoff depends upon. From the huge team\nresponsible for Graal Native Image, to [Construo](https://github.com/fourlastor-alexandria/construo) by pretty much a\n[team of one](https://github.com/fourlastor), some of the best features of Liftoff aren't in Liftoff code at all.\n\n---\n\nGood luck, and we hope you make something great!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibgdx%2Fgdx-liftoff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibgdx%2Fgdx-liftoff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibgdx%2Fgdx-liftoff/lists"}