diff --git a/README.md b/README.md index e7823985..3e5177d8 100644 --- a/README.md +++ b/README.md @@ -9,21 +9,23 @@ initially configured your project, and it is very far behind the times on its de The official setup may transition to a web-based tool soon, but any user of the Internet can recall times when formerly-reliable services went offline or had outages. This project provides another alternative setup tool based on [SquidSetup](https://github.com/tommyettinger/SquidSetup), but removing the close ties to the SquidLib libraries to make it more general-use. Using SquidSetup's -code, which is built on czyzby's code, gives us working projects that use Gradle 7.1, ahead of 6.7.1 for the official setup and 4.0.2 for czyzby's gdx-setup. -The current Gradle version is 7.1 at the time of writing, and since gdx-liftoff 1.10.0.4, new projects use that 7.1 version. +code, which is built on czyzby's code, gives us working projects that use Gradle 7.1.1, ahead of 6.7.1 for the official setup and 4.0.2 for czyzby's gdx-setup. +The current Gradle version is 7.1.1 at the time of writing, and since gdx-liftoff 1.10.0.5, new projects use that 7.1.1 version. This allows new projects to "just work" on machines where Java 16 is the default, and the relatively small amount of configuration -changes needed for Gradle 7.1 are all handled by gdx-liftoff. There is an oddity with gdx-liftoff 1.10.0.1 through 1.10.0.4; HTML projects wouldn't build -correctly with Gradle 7.1 and the current version of the "gretty" Gradle plugin, 3.0.4. This has been addressed, somewhat clumsily, by -using [a fork of gretty](https://github.com/tommyettinger/gretty) and depending on it with JitPack, at least until the next gretty release. -This fork, like future versions of gretty, requires Gradle 7.0 or higher, but unlike gretty 4.x, it only requires a JDK 8 or higher, and it includes needed fixes. +changes needed for Gradle 7.1.1 are all handled by gdx-liftoff. Thanks to the Gretty plugin's latest release, Gradle 7.x +now works well with the HTML platform, without additional quirky configuration (earlier versions of Liftoff needed that). Currently, gdx-liftoff projects depend on libGDX 1.10.0 by default, and allow using snapshots as well. The current version of libGDX is 1.10.0, which had a longer release cycle because there was an emphasis on fixing bugs in earlier releases. You can choose any released version of libGDX (or a nightly version) in the Advanced tab of the program window; it will be downloaded if needed when you import the Gradle project into your IDE or run one of most -Gradle tasks. +Gradle tasks. If you're updating from an older libGDX version, see [the official migration guide](https://libgdx.com/news/2021/04/the-ultimate-migration-guide). Projects default to using LWJGL3 instead of LWJGL2 (the old 'desktop' platform), since code tends to be very similar between the two, but LWJGL3 generally offers -more features. This code is tested for compatibility with GWT, including the various changes that Gradle needs with this version. It is sometimes tested on Android, +more features. Somewhat confusingly, gdx-setup used LWJGL2 for its desktop platform until recently, but now uses LWJGL3 and +still calls it 'desktop'. Liftoff projects can have both LWJGL2 and LWJGL3 modules, which shouldn't be needed for too much +longer, but is sometimes needed now. The "desktop" module is LWJGL2, and "lwjgl3" is, well, LWJGL3. **If following a tutorial**, +you may need to change mentions of the "desktop" module to "lwjgl3". This code is tested +for compatibility with GWT, including the various changes that Gradle needs with this version. It is sometimes tested on Android, but Android Studio is often incompatible with recent Gradle releases, and Android certainly doesn't support Java 13 or higher features across the board. Issues with iOS and RoboVM will have to be addressed by someone sending a pull request, because I can't reproduce any iOS issues without an iOS device. @@ -49,9 +51,9 @@ for new projects generated by gdx-liftoff. (such as high-DPI displays), it should probably be preferred. It also allows multiple windows and drag+drop. - LWJGL3 itself supports Linux on arm32 and arm64 hardware, and libGDX since version 1.9.13 (current is 1.10.0) also supports ARM Linux on desktop platforms. - - The new ARM Macs are so-far unsupported by LWJGL, but work is underway to make LWJGL3 run on this newest - type of hardware, as well as on ARM Windows machines. This will only be usable by LWJGL3, not the older - "legacy desktop" LWJGL2. LWJGL2 does appear to work via MacOS "Rosetta" emulation, though. + - The new ARM Macs are so-far unsupported by LWJGL, but work is underway to make LWJGL3 run natively on this + newest type of hardware, as well as on ARM Windows machines. This will only be usable by LWJGL3, not the + older "legacy desktop" LWJGL2. LWJGL2 does appear to work via MacOS "Rosetta" emulation, though. - Desktop should mostly be preferred if you need to also depend on gdx-tools, such as if you need to run the texture packer at runtime. Some machines have issues with an inconsistent or very high framerate with LWJGL3, and using the "Legacy" desktop can fix that. This platform can also be less compatible with some JDKs, and @@ -65,10 +67,10 @@ for new projects generated by gdx-liftoff. the application won't be allowed to start on future JDK versions, LWJGL 2 and 3 both will adapt to any inability to use certain internal APIs, and both should run perfectly fine on Java 16, even though it defaults to blocking what the warnings mention. Actually, Java 16 shouldn't emit these warnings at all. - - Even though you can't build a liftoff project currently with Java 16, you can still run the generated JAR + - Even if you didn't build a JAR with Java 16, you can still run the generated JAR with Java 16, and this may be a good idea for distribution because of some speed and stability improvements in that JVM release. - - iOS should probably not be checked if you aren't running MacOS and don't intend to later build an iOS + - iOS should probably *not* be checked if you aren't running MacOS and don't intend to later build an iOS app on a Mac. It needs some large dependencies to be downloaded when you first import the project. - If you have a Mac that is set up for iOS development, please try to generate any project and see if it gets made correctly! We've had some [good feedback](https://github.com/tommyettinger/gdx-liftoff/issues/28) on iOS @@ -82,9 +84,9 @@ for new projects generated by gdx-liftoff. libGDX 1.10.0 to improve behavior on iOS, and gdx-liftoff may need to apply some changes to template code for iOS projects to work more cleanly with libGDX 1.10.0 . - Android should only be checked if you've set up your computer for Android development. Since gdx-liftoff uses - Gradle 7.1, having an Android project present shouldn't interfere with other platforms or IDE integration, as - long as your IDE supports Gradle 7.1 (Android Studio may in its most recent versions, but IntelliJ IDEA (and - Eclipse with Buildship, though it doesn't support Android development well) should automatically). + Gradle 7.1.1, having an Android project present shouldn't interfere with other platforms or IDE integration, as + long as your IDE supports Gradle 7.1.1 (Android Studio probably does in its most recent versions, but IntelliJ + IDEA (and Eclipse with Buildship, though it doesn't support Android development well) should automatically). - **You must set your project's JDK to a version lower than 16** to use Android, due to current limitations of the Android support in IDEA and Android Studio. JDK 8 and 11 are both good options. - Having an Android module in a larger project changes some of IDEA's features, including disabling hot-swap. @@ -93,8 +95,9 @@ for new projects generated by gdx-liftoff. - If `Java version` is set to 8 on the Advanced tab, then gdx-liftoff sets up the Android configuration to use core library desugaring and other Java-8-related features, allowing a large subset of Java 8 language features, and the standard library in JDK 8, to be used across most platforms (not iOS, though). - - If you are using an Android Studio version before 4.1, you can set the Android Gradle Plugin on the Advanced - tab to a lower version, like 4.0.2, that is compatible with that older Android Studio. + - If you are using an Android Studio version before 4.2 or an IDEA version before 2021.2, you can set the + Android Gradle Plugin on the Advanced tab to a lower version, like 4.0.2, that is compatible with that older + IDE version. - HTML is a more-involved target, with some perfectly-normal code on all other platforms acting completely different on HTML due to the tool used, Google Web Toolkit (GWT). It's almost always possible to work around these differences and make things like random seeds act the same on all platforms, but it takes work. Mostly, @@ -110,10 +113,11 @@ for new projects generated by gdx-liftoff. dependency in all cases). - There are lots of potential dependencies you can add, some official but most third-party (unofficial). - Some to note: ShapeDrawer is a great replacement for ShapeRenderer from libGDX, Ashley (official) and - Artemis-ODB (third-party, more-well-maintained) are both useful Entity-Component System libraries, Typing-Label + Artemis-ODB (third-party, well-maintained) are both useful Entity-Component System libraries, Typing-Label provides all sorts of effects for text, RegExodus and Formic provide support for missing features in GWT, TenPatch enhances the options for NinePatches in GUIs, simple-graphs and gdx-ai are different options for AI, - and Anim8-GDX provides ways to write GIFs and other images that libGDX can't normally write. + Anim8-GDX provides ways to write GIFs and other images that libGDX can't normally write, and gdx-gltf is a much + better way to handle modern 3D graphics in libGDX. - Yes, I wrote or contributed to some of these, so I'm biased. - There are options to add language support for non-Java JVM languages; of these, Kotlin is the best-supported. - The HTML target won't work with non-Java languages, and others targets may be questionable. @@ -171,7 +175,7 @@ see [libGDX's documentation](https://libgdx.badlogicgames.com/documentation/gett - If you had the GWT option checked in the setup and have a non-empty template, you can go through the slightly slow, but simple, build for GWT, probably using the `superDev` task for the `gwt` module, or also possibly the `dist` task in that module. - - GWT builds have gotten much faster with Gradle 7.1 and some adjustments to configuration, so + - GWT builds have gotten much faster with Gradle 7.1.1 and some adjustments to configuration, so if you were avoiding GWT builds because of slow compile times, you might want to try again. - If you had the iOS option checked in the setup, you're running Mac OS X, and you have followed all the steps for iOS development with libGDX, maybe you can run @@ -180,6 +184,8 @@ see [libGDX's documentation](https://libgdx.badlogicgames.com/documentation/gett - Agreeing with libGDX, MOE is no longer supported. Although there are "MOE Community" builds, they come with a breaking change disclaimer that appears likely to break libGDX with MOE Community 1.6.0. You can use gdx-liftoff 1.9.10.9 if you desperately need MOE for some reason. + - MOE may be added back to libGDX in a future version, and if it does, Liftoff will have to somehow add it back + to the project generator. This is somewhere that help would be appreciated, if MOE does wind up back in libGDX. - Consider changing the icons when you're looking to distribute your app. [appicon.co](https://appicon.co/) or some similar service can generate all the different requisite sizes. - `ios/data/Media.xcassets/AppIcon.appiconset` has the iOS icons, `android/res` has icons in @@ -189,12 +195,12 @@ see [libGDX's documentation](https://libgdx.badlogicgames.com/documentation/gett Gradle has some quirks. Here's some notes on things you might encounter during upgrades from other projects or older versions. - - All builds currently use Gradle 7.1 with the "api/implementation/compile fiasco" resolved. Adding dependencies + - All builds currently use Gradle 7.1.1 with the "api/implementation/compile fiasco" resolved. Adding dependencies will use the `api` keyword instead of the `compile` keyword it used in earlier versions. All modules use the `java-library` plugin, which enables the `api` keyword for dependencies. - You may need to refresh the Gradle project after the initial import if some dependencies timed-out; JitPack dependencies in particular may take up to 15 minutes to become available if you're using any of those, - like SquidLib. In IntelliJ IDEA, the `Reimport all Gradle projects` button is a pair of circling arrows in the + like gdx-gltf. In IntelliJ IDEA, the `Reimport all Gradle projects` button is a pair of circling arrows in the Gradle tool window, which can be opened with `View -> Tool Windows -> Gradle`. - Like the official gdx-setup, the soon-to-be-shut-down `jcenter()` repo will not be used in new projects. - In earlier versions, jcenter() was last in the list because of a different flaw it had that allowed impersonation. diff --git a/build.gradle b/build.gradle index 550784f2..710e31ee 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ buildscript { } } -version = "1.10.0.5-SNAPSHOT" +version = "1.10.0.5" mainClassName = 'com.github.czyzby.setup.MainKt' jar { diff --git a/src/main/kotlin/com/github/czyzby/setup/config/configuration.kt b/src/main/kotlin/com/github/czyzby/setup/config/configuration.kt index 453807ed..18f5f3c4 100644 --- a/src/main/kotlin/com/github/czyzby/setup/config/configuration.kt +++ b/src/main/kotlin/com/github/czyzby/setup/config/configuration.kt @@ -28,7 +28,7 @@ import com.kotcrab.vis.ui.widget.file.FileChooser @Component class Configuration { companion object { - const val VERSION = "1.10.0.5-SNAPSHOT" + const val VERSION = "1.10.0.5" const val WIDTH = 600 const val HEIGHT = 700 const val PREFERENCES_PATH = "gdx-liftoff-prefs" diff --git a/src/main/resources/templates/tabs/advanced.lml b/src/main/resources/templates/tabs/advanced.lml index a7f51ca0..c128358f 100644 --- a/src/main/resources/templates/tabs/advanced.lml +++ b/src/main/resources/templates/tabs/advanced.lml @@ -14,7 +14,7 @@ @androidPluginVersion - 4.1.3 + 4.2.0 @desktopJavaVersion diff --git a/version.txt b/version.txt index 827ed19a..89808a53 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.10.0.4 +1.10.0.5