Giter Site home page Giter Site logo

libgdx / gdx-liftoff Goto Github PK

View Code? Open in Web Editor NEW
483.0 20.0 41.0 6.17 MB

A modern setup tool for libGDX Gradle projects

License: Apache License 2.0

Kotlin 99.12% HTML 0.54% JavaScript 0.01% CSS 0.23% C++ 0.03% Batchfile 0.06%
libgdx setup liftoff gdx project-generator gdx-liftoff gdx-setup

gdx-liftoff's Introduction

libGDX Logo

GitHub Actions Build Status

Latest Version Snapshots

Discord Chat

Cross-platform Game Development Framework

libGDX is a cross-platform Java game development framework based on OpenGL (ES), designed for Windows, Linux, macOS, Android, web browsers, and iOS. It provides a robust and well-established environment for rapid prototyping and iterative development. Unlike other frameworks, libGDX does not impose a specific design or coding style, allowing you the freedom to create games according to your preferences.

Open Source, Feature Packed, and Fostering a Large Third-Party Ecosystem

libGDX is released under the Apache 2.0 License, offering unrestricted usage in both commercial and non-commercial projects. While not mandatory, we appreciate any credit given to libGDX when you release a game or app using it. Check out our showcase for a selection of popular libGDX-powered games. With libGDX, you gain access to a comprehensive set of tools and features to develop multi-platform 2D and 3D games using Java.

Moreover, libGDX boasts a vibrant third-party ecosystem, with numerous tools and libraries that streamline development tasks. Explore the awesome-libgdx repository for a curated list of libGDX-centered libraries, serving as an excellent starting point for newcomers in the libGDX community.

An example game created with libGDX: Pathway by Robotality. Discover more captivating games in our Showcase.

Getting Started with libGDX / Documentation

Thanks to Gradle, you can easily set up libGDX without the need to download the framework itself. Your favorite build tool can handle everything for you. Additionally, we offer a convenient setup tool that automates project creation and downloads all the necessary components. Check out our website for instructions on getting started or refer to our comprehensive wiki.

We provide the libGDX javadocs online for easy reference. Additionally, the javadocs are bundled with every libGDX distribution, ensuring smooth integration with your preferred IDE.

Community & Contribution

Stay up to date with the latest libGDX news by following our blog. For engaging discussions and support, join our official libGDX Discord.

Reporting Issues

Use the Issue Tracker here on GitHub to report any issues you encounter. Before submitting, please read our Getting Help guide, which walks you through the process of reporting an issue effectively.

Contributing to the Codebase

libGDX benefits greatly from contributions made by our dedicated developer community. We appreciate any assistance in making libGDX even better. Check out the CONTRIBUTING.md file for details on how to contribute. Note that contributing involves working directly with libGDX's source code, a process that regular users do not typically undertake. Refer to the Working with the Source article for guidance.

You can also support our infrastructure (build server, web server, test devices) by contributing financially through our Patreon!

gdx-liftoff's People

Contributors

berstanio avatar czyzby avatar drareeg avatar fgnm avatar frosty-j avatar hydrolienf avatar lyze237 avatar mariorez avatar metaphore avatar mr00anderson avatar mudlee avatar payne911 avatar quillraven avatar tommyettinger avatar xpenatan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gdx-liftoff's Issues

Could not find or load main class

A user mentioned in one of my tutorial videos that he was not able to run gdxliftoff because the main class could not be found.
Here is the comment:

Nice tutorial. However, I was getting the following error. 
Error: Could not find or load main class gdx-liftoff-1.9.10.11.jar. 
I fixed it by running: java  -jar gdx-liftoff-1.9.10.11.jar  
I'm not sure why this was the case, but it worked. Is there a better way to fix this?

Do you know why that happens or how to fix it? I personally did not face this issue so far.

liftoff as a Backend Service

With the possible introduction of a new setup tool as a WebApp, there has been discussions about the wonders of being able to extract the Generator's output.

A draft backend has been proposed, and is only lacking the Generator itself: https://github.com/MrStahlfelge/gdx-setup-backend/blob/master/src/main/java/com/badlogic/gdx/setup/rest/ProjectGeneratorController.java#L45

There has been discussions about what would be the easiest approach to this. There seem to be two main approaches (always taking as an input a list of all the non-default options, and outputting a ZIP):

  1. A Headless version which would basically work through the command-line interface. (And then use the ProcessBuilder to call from within the backend's Service.)
  2. An "Adapter" (or "Simulator") that would analyze the args variable of the entry-point of the program (https://github.com/tommyettinger/gdx-liftoff/blob/master/src/main/kotlin/com/github/czyzby/setup/main.kt#L15) and simulate the interactions of a user with that.

iOS readme section

The iOS section of the Readme.md isn't clear with the prerequisites of running a clean base project.

Please correct me if I'm wrong, but the current base project seems to require a robovm call in the ios build.gradle file. Mobivm seems to require a real signing (iosSkipSigning = false) with a real iosSignIdentity and iosProvisioningProfile.

I'm curious as to what everyone's experience with iOS setup have been like, and if we can add anything to the readme to help future liftoffers.

Understanding Headless, Server, and Shared modules

Hi, awesome project, sorry if this isn't quite the right place for this!

Other than the quick mouseover, I can't find any documentation on what these modules actually do or when I would want to use them. Since Headless says it can be used for testing or a server, do I use that for a terminal-only server and the Sever module if I want to make a server with a GUI? And what exactly does Shared do that Core does not?

I cannot tell what I might need and I just assume it's pretty hard to change things after generation, at least if it's anything like the official setup jar.

HiDPI

The UI is too small on HiDPI screens.
size
HiDPI support would be much appreciated :)

The new file desn't run under Java 11 for some reason

Hi all.

I tried to run the latest JAR file under Java 11 but for some reason I'm getting these exceptions:

cmd_yh7yrZ2L6f

Here's the full details on my Java installation (for reference):

cmd_ddjapRte5A

How to reproduce the problem: Download AdoptOpenJDK version 11, install it, set it to JAVA_HOME and try to run the new Liftoff JAR through it.

So what's going on and what do I do about it?

Zishan Rahman.

Program crash on window click

I generated my project. It popped open a window giving me some information about the project. I attempted to copy the information so I can save it in notepad for later. When I clicked in the window the program crashed.

Here is the stracktrace.

java -jar gdx-liftoff-1.10.0.5.jar Exception in thread "main" java.lang.IndexOutOfBoundsException: index can't be >= size: 617 >= 606 at com.badlogic.gdx.utils.FloatArray.get(FloatArray.java:131) at com.kotcrab.vis.ui.widget.VisTextArea.drawSelection(VisTextArea.java:250) at com.kotcrab.vis.ui.widget.VisTextField.draw(VisTextField.java:350) at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:111) at com.badlogic.gdx.scenes.scene2d.ui.ScrollPane.draw(ScrollPane.java:543) at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:124) at com.badlogic.gdx.scenes.scene2d.Group.draw(Group.java:58) at com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup.draw(WidgetGroup.java:170) at com.badlogic.gdx.scenes.scene2d.ui.Table.draw(Table.java:126) at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:111) at com.badlogic.gdx.scenes.scene2d.ui.Table.draw(Table.java:117) at com.badlogic.gdx.scenes.scene2d.ui.Window.draw(Window.java:253) at com.kotcrab.vis.ui.widget.VisWindow.draw(VisWindow.java:239) at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:111) at com.badlogic.gdx.scenes.scene2d.Group.draw(Group.java:58) at com.badlogic.gdx.scenes.scene2d.Stage.draw(Stage.java:129) at com.github.czyzby.autumn.mvc.component.ui.controller.impl.StandardViewRenderer.render(StandardViewRenderer.java:13) at com.github.czyzby.autumn.mvc.component.ui.controller.impl.AnnotatedViewController.render(AnnotatedViewController.java:165) at com.github.czyzby.autumn.mvc.component.ui.InterfaceService.render(InterfaceService.java:467) at com.github.czyzby.autumn.mvc.application.AutumnApplication.render(AutumnApplication.java:139) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.update(Lwjgl3Window.java:403) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.loop(Lwjgl3Application.java:143) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:116) at com.github.czyzby.setup.MainKt.main(main.kt:87) at com.github.czyzby.setup.MainKt.main(main.kt)

Does not run on mac (lwjgl3)

Mac needs -XstartOnFirstThread added to the run task. I quick hack fixed this by adding the following the lwjgl3's build.gradle. I'm sure there are cleaner solutions.

import org.gradle.internal.os.OperatingSystem

run {
    switch (OperatingSystem.current()) {
        case OperatingSystem.LINUX:
            break
        case OperatingSystem.MAC_OS:
            jvmArgs '-XstartOnFirstThread'
            break
        case OperatingSystem.WINDOWS:
            break
    }
}

`gdxdialogs` dependencies seem to have an incorrect groupId

In thirdPartyExtensions.kt#L173:

    override fun initiateDependencies(project: Project) {
        addDependency(project, Core.ID, "de.tomgrill.gdxdialogs:gdx-dialogs-core")

        addDependency(project, Android.ID, "de.tomgrill.gdxdialogs:gdx-dialogs-android")

        addDesktopDependency(project, "de.tomgrill.gdxdialogs:gdx-dialogs-desktop")

        addDependency(project, iOS.ID, "de.tomgrill.gdxdialogs:gdx-dialogs-ios")

        addDependency(project, GWT.ID, "de.tomgrill.gdxfacebook:gdx-dialogs-core:sources")
        addDependency(project, GWT.ID, "de.tomgrill.gdxfacebook:gdx-dialogs-html")
        addDependency(project, GWT.ID, "de.tomgrill.gdxfacebook:gdx-dialogs-html:sources")
        addGwtInherit(project, "de.tomgrill.gdxfacebook.html.gdx_dialogs_html")
    }

de.tomgrill.gdxfacebook:gdx-dialogs-core:sources de.tomgrill.gdxfacebook:gdx-dialogs-html de.tomgrill.gdxfacebook:gdx-dialogs-html:sources should probably be de.tomgrill.gdxdialogs:... as is in the Maven Repository. (Did they changed the groupId somehow?)

Kotlin dsl and AGP and b2d-light version update

Hi,

first of all: thank you a lot for this setup. It produces a much better and more modern result than the one from libgdx.

I would like to ask three things, if possible:

  1. android gradle plugin can be increased to 3.6.0 from 3.5.0 in my opinion
  2. box2d light version can be increased from 1.4 to 1.5
  3. when I select "kotlin" as a language it would be great if it produces build.gradle.kts and settings.gradle.kts files

I think nothing of that is super urgent but would be great if that gets changed. Also, is there a reason why you did not use the buildSrc folder approach and instead you define the versions in gradle.properties file? This is just a question out of interest, why you choose that approach over the other :)

Compiling and using Liftoff projects as 3rd party libraries

This is to record discord events regarding an issue with wanting to use liftoff projects as a dependency such as a API jar. This does not work out of box because the gwt.xml files are not kept through compiling when using maven/java to produce a artifact. In order to get the .gwt.xml to stay through compilation the only solution that worked was jar { from project.sourceSets.main.allSource from project.sourceSets.main.output } to be used in the module that you want to publish on maven. This will include the gwt.xml in the source jar output on maven.

Add TenPatch to third party extensions

Hello. I would like to humbly request that you add TenPatch to the third party extensions of your app. I don't really know how to get figures on how many people use my lib, but it's a number greater than 0. It's a really useful extension for those that use it, however! If you must deny my request, it could be done without any negative feelings or ill wishes from my side.

See more about my project: https://github.com/raeleus/TenPatch

Thank you for considering my request!

ProGuard file generated for android has the wrong name

Hi, I've noticed that the name of ProGuard file is not the same of the one listed in default gradle generated into android module.

In the gradle we have proguard-rules.pro
https://github.com/tommyettinger/gdx-liftoff/blob/4853024550a62fa677a54664749d2450f86cd971/src/main/kotlin/com/github/czyzby/setup/data/platforms/android.kt#L147

But the file generated is proguard-project.txt: https://github.com/tommyettinger/gdx-liftoff/blob/master/src/main/resources/generator/android/proguard-project.txt

Generated file should be renamed into proguard-rules.pro :)

android buildToolsVersion missing

when building android platform, the line
buildToolsVersion '2x.x.x'
is missing in file build.gradle generating a build error
AAPT: error: attribute android:appCategory not found.

High CPU load

Just letting liftoff sitting idle (maybe at a certain page) made the fan rev up to max and CPU load was quite high. Not a big deal, but also maybe just something that is easily fixed and nobody noticed yet.

Update libKtx version

the default libgdx version is 1.9.10 but the default libktx versions are still for 1.9.8. They should be updated to the latest 1.9.10 version which as of the time of this issue's creation is 1.9.10-b6

Naming of projects inconsistent

After generating a project with several platforms and importing them into Eclipse, the names will mostly be in the form of:
<ProjectName>-<platform>
something like
MyGame-desktop
But for Android it will be
<ParentFolder>-Android

If you don't name the folder and project the same it will get quite confusing.
Can probably be fixed by adding:
eclipse.project.name = appName + '-android'
to the build.gradle file in the android folder.

Same thing for the parent project/folder. Not sure how to change the name there.

Default build does not work for 'html' module

When running a just created liftoff project and running html:superDev results in the exception below.

Task :html:draftCompileGwt FAILED
Loading inherited module 'com.virtual_hex.games.freeuniverse.GdxDefinitionSuperdev'
   Loading inherited module 'com.virtual_hex.games.freeuniverse.GdxDefinition'
      Loading inherited module 'com.virtual_hex.games.freeuniverse.Shared'
         [ERROR] Unable to find 'com/virtual_hex/games/freeuniverse/Shared.gwt.xml' on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source?

The resolution is to update this block

task addSource {
    doLast {
        sourceSets.main.compileClasspath += files(project(':core').sourceSets.main.allJava.srcDirs)
        sourceSets.main.compileClasspath += files(project(':shared').sourceSets.main.allJava.srcDirs)
    }
}

in the html modules build.gradle.

Grab scroll focus on mouse over.

As a new user to your excellent GDX Liftoff, there is only one nagging issue I have with the UI. Scroll focus isn't assigned to scroll panes unless you click on them first. It would be much more convenient if it automatically grabbed focus when the mouse is over the widget. Thank you for your help.

Suggestion: include FragmentActivity example on Android

In my kotlin project, libgdx is used for client graphical interface, where the main game logic is launched and ran by kotlin coroutine. This is pretty straightforward for desktop, but not so much for Android. I spent some time to realize that I can use lifecycleScope for Android (https://developer.android.com/topic/libraries/architecture/coroutines#lifecyclescope).

However, the android template generated by this wizard and some other open source projects that I referred to rely on the default AndroidApplication class, and I spend a pretty long time to realize that this doesn't work nicely with lifecycleScope. Where a simple AndroidFragmentApplication with FragmentActivity (https://github.com/libgdx/libgdx/wiki/Starter-classes-and-configuration#game-fragment) works flawlessly in my case.

Therefore, I suggest that including a template of FragmentActivity may help other people to set things up quicker.

[LWJGL] GLFW_VERSION_UNAVAILABLE error on Linux

I downloaded the latest release as of today, and ran the Jar file as-is with no modifications.

Screenshot at 2020-10-03 16-58-48
java -jar gdx-liftoff-1.9.11.3.jar
[LWJGL] GLFW_VERSION_UNAVAILABLE error
Description : GLX: Failed to create context: BadValue (integer parameter out of range for operation)
Stacktrace :
org.lwjgl.glfw.GLFW.nglfwCreateWindow(GLFW.java:1714)
org.lwjgl.glfw.GLFW.glfwCreateWindow(GLFW.java:1897)
com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.createGlfwWindow(Lwjgl3Application.java:465)
com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.createWindow(Lwjgl3Application.java:409)
com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.createWindow(Lwjgl3Application.java:395)
com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.(Lwjgl3Application.java:114)
com.github.czyzby.setup.MainKt.main(main.kt:87)
com.github.czyzby.setup.MainKt.main(main.kt)
Exception in thread "main" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't create window
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.createGlfwWindow(Lwjgl3Application.java:468)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.createWindow(Lwjgl3Application.java:409)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.createWindow(Lwjgl3Application.java:395)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.(Lwjgl3Application.java:114)
at com.github.czyzby.setup.MainKt.main(main.kt:87)
at com.github.czyzby.setup.MainKt.main(main.kt)

lsb_release -a
No LSB modules are available.
Distributor ID: LinuxMint
Description: Linux Mint 19.3 Tricia
Release: 19.3
Codename: tricia

Dynamic third-party list

It would be very nice to be able to specify personal 3rd party libs in some way so that one can add personal dependencies in the list. I have 3 extensions (not ready for general consumption) that I often use in my games. If setup could read in an extension configuration then that remove all need to always have to fiddle with the gradle files afterwards.

Android SDK : "AppData" not listed

When trying to find my Android SDK through the File Explorer provided by liftoff, I can't find the AppData folder. I do see Application Data, but that folder is empty in the visualizer.

My SDK is located in C:/Users/payne/AppData/Local/Android/Sdk, that's slightly problematic...

I can, however, just paste that value in and it gets recognized as valid.

Project generation error

When ever I try to make a project, with either LWJGL3 or Desktop(Leagacy), I allways get the same error:
Preparing the project...
com.badlogic.gdx.utils.GdxRuntimeException: Error copying source file: icons\libgdx16.png (Internal)
To destination:...(lwjgl3/Desktop)\src\main\resources\libgdx16.png (Absolute)
at com.badlogic.gdx.files.FileHandle.copyFile(FileHandle.java:718)
at com.badlogic.gdx.files.FileHandle.copyTo(FileHandle.java:603)
at com.github.czyzby.setup.data.files.CopiedFile.save(projectFile.kt:106)
at com.github.czyzby.setup.data.project.Project.saveFiles(project.kt:121)
at com.github.czyzby.setup.data.project.Project.generate(project.kt:89)
at com.github.czyzby.setup.views.dialogs.GenerationPrompt$doBeforeShow$1.run(generationPrompt.kt:45)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Unable to generate project due to an exception. Try again.

OS: windows 10
Java: 8
This is on the latest gdx-liftoff version: 1.9.12.1

Tooltip got stuck

Hello. I'm not sure how I got this to happen:
image
I was just browsing the third party extension and the kotlin tooltip came up. I don't think I was mousing over the offending target, but it still came up on its own. It won't dismiss itself.

User Experience

Just a collection of small things. The strike-through means it's been done.

  1. Missing something closer to a native OS file explorer.
    image
  2. The "New Directory" button image should have a + instead of a *.
    image
  3. Don't display the "Android SDK" thing when people haven't checked the Android tickbox.
    image
  4. Reorganize the platforms, maybe?
    image
  5. Do not allow Shared in platforms if you don't have Server selected.
    image
  6. Both Desktop platform options should be one after another, rather than separated.
    image
  7. Remove the two Toggle buttons: most probably no one uses them.
    image
  8. Try to figure out how to indicate that there are clickable links that open a browser tab (like those "?").
    image
  9. About the image above: how to reconcile with the Advanced tab which also showcases Java version selection? I think it should be merged.
  10. Prevent selection of the extra Languages if the HTML platform was selected?
    image
  11. The descriptions should probably be left-aligned, and then add a bit more padding in between the columns of the table.
    image
  12. Do not display "KTX" Third-party if "Kotlin" isn't select in Languages.
    image
  13. Increase the alpha of the background of the tooltips.
    image
  14. Remove Polski language translation.
    image
  15. Unclutter this based on previous selections: do not give a choice to select a Java version for the server if the Server platform wasn't selected.
    image
  16. Should we allow selection of the Gradle Wrapper version?
    image
  17. It's weird to have within the same dialog, at the top a gray "Generating", then right below a "Generating new project" in red, and then at the bottom a "Setup complete" in green, all at the same time. This could be reworked a bit.
    image
  18. All in all, the "flow" of the user's interaction could be rethought, and I think making it more of a "step by step" wizard-approach could eliminate a lot of complexity in terms of "if user has selected X, then don't show Y" and such. But that's a lot of work.

Unable to run application on Linux with Java 11+

java -jar yields the following error logs:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.lwjgl.LWJGLUtil$3 (file:/home/mj/Downloads/gdx-liftoff-1.9.10.5.jar) to method java.lang.ClassLoader.findLibrary(java.lang.String)
WARNING: Please consider reporting this to the maintainers of org.lwjgl.LWJGLUtil$3
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Inconsistency detected by ld.so: dl-lookup.c: 111: check_match: Assertion `version->filename == NULL || ! _dl_name_match_p (version->filename, map)' failed!

It seems that you should use LWJGL3 (if you are not already) or update to a newer version of LWJGL.

Error copying icon

Hi, I'm getting this error:

Preparing the project...
com.badlogic.gdx.utils.GdxRuntimeException: Error copying source file: icons\libgdx16.png (Internal)
To destination: C:\Users\WilsonFooYuKang\Documents\Bitbucket\migrate\TuxFight\lwjgl3\src\main\resources\libgdx16.png (Absolute)
at com.badlogic.gdx.files.FileHandle.copyFile(FileHandle.java:718)
at com.badlogic.gdx.files.FileHandle.copyTo(FileHandle.java:603)
at com.github.czyzby.setup.data.files.CopiedFile.save(projectFile.kt:106)
at com.github.czyzby.setup.data.project.Project.saveFiles(project.kt:121)
at com.github.czyzby.setup.data.project.Project.generate(project.kt:89)
at com.github.czyzby.setup.views.dialogs.GenerationPrompt$doBeforeShow$1.run(generationPrompt.kt:45)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)

I don't dare to move further because it also appears that no AndroidManifest.xml and other Android files are generated.

Everything is tiny.

I need to squint and lean in to read everything, and I have pretty good eyes. My OS is Fedora 32, on a Dell XPS 9370, which has a fairly high pixel density. This is really not a common issue for me, though.

Android targetSDK and android kotlin source folder

I made a fresh new project with the latest release using the Kotlin language option and in my opinion two things could be improved:

  1. Android target SDK version is 25 which produces an error in IDEA because it seems Google Play Store requires a minimum version of 26. I changed the target and compile sdk version to 29 which got rid off this error but I am not 100% sure if this is everything you need to do. It seems to work for me but I am no gradle android expert

  2. The lwjgl3 backend correctly recognizes src/main/kotlin as a source directory. The android backend does not do that. You need to adjust the build.gradle file and replace the ../java folders to ../kotlin. Would be great if the setup took already care of that. Maybe you can leave out those fixed file paths and then it accepts both java and kotlin directory as source directories?

  3. One minor thing - why was desktop project renamed to lwjgl3? I personally would prefer if it is still called desktop.

  4. One question from me: why is the core project e.g. adding its dependencies via api instead of implementation? I thought api should be used in case you need to export these dependencies if someone is using your project as a dependency? Since you are going to develop a game or application which will not be used as a dependency, wouldn't implementation than be the better option?

iOS issues

Using just the plain output from liftoff and sending it to apple will generate a few errors, of which all of them are fairly easily fixed. I have pasted the error from Apple followed by the solution.

ERROR ITMS-4236: "Invalid value '0.0.1-SNAPSHOT' for bundle_short_version_string" at SoftwareAssets

robovm.properties
app.version=0.0.1
(remove all letters)

ERROR ITMS-90208: "Invalid Bundle. The bundle IOSLauncher.app does not support the minimum OS Version specified in the Info.plist."

<key>MinimumOSVersion</key>
<string>7.1.2</string>

I am not sure 7.1.2 is the correct to go with, but that is what I had in another project...

ERROR ITMS-90474: "Invalid Bundle. iPad Multitasking support requires these orientations: 'UIInterfaceOrientationPortrait,UIInterfaceOrientationPortraitUpsideDown,UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationLandscapeRight'. Found 'UIInterfaceOrientationPortrait,UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationLandscapeRight' in bundle 'com.trilligames.trillitest'."

https://www.badlogicgames.com/forum/viewtopic.php?t=27402

ERROR ITMS-90475: "Invalid Bundle. Your app supports Multitasking on iPad, so you must include the UILaunchStoryboardName key in your bundle, 'com.xxxxxx.xxx’. Learn more (https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW40)."

https://developer.apple.com/forums/thread/20405

WARNING ITMS-90025: "Missing recommended icon file. The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format for iOS versions >= 7.0. To support older versions of iOS, the icon may be required in the bundle outside of an asset catalog. Make sure the Info.plist file includes appropriate entries referencing the file. See https://developer.apple.com/documentation/bundleresources/information_property_list/user_interface"

https://appicon.co/
Generate icons there and follow general guidelines for how to add them (basically add result in ios/data/ and remove the old stuff)
Next two errors are the same problems.

WARNING ITMS-90026: "Missing recommended icon file. The bundle does not contain an app icon for iPad of exactly '152x152' pixels, in .png format for iOS versions >= 7.0. To support older operating systems, the icon may be required in the bundle outside of an asset catalog. Make sure the Info.plist file includes appropriate entries referencing the file. See https://developer.apple.com/documentation/bundleresources/information_property_list/user_interface"

WARNING ITMS-90026: "Missing recommended icon file. The bundle does not contain an app icon for iPad of exactly '76x76' pixels, in .png format for iOS versions >= 7.0. To support older operating systems, the icon may be required in the bundle outside of an asset catalog. Make sure the Info.plist file includes appropriate entries referencing the file. See https://developer.apple.com/documentation/bundleresources/information_property_list/user_interface"

Error copying source file iOS

When iOS is selected as target platform and "generate project!" is selected an exception is thrown:

Preparing the project... com.badlogic.gdx.utils.GdxRuntimeException: Error copying source file: generator/ios/data/Media.xcassets (Internal) To destination: /.../test/ios/data/Media.xcassets/Contents.json (Absolute) at com.badlogic.gdx.files.FileHandle.copyFile(FileHandle.java:718) at com.badlogic.gdx.files.FileHandle.copyTo(FileHandle.java:603) at com.github.czyzby.setup.data.files.CopiedFile.save(projectFile.kt:106) at com.github.czyzby.setup.data.project.Project.saveFiles(project.kt:121) at com.github.czyzby.setup.data.project.Project.generate(project.kt:89) at com.github.czyzby.setup.views.dialogs. GenerationPrompt$doBeforeShow$1.run(generationPrompt.kt:45) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Unable to generate project due to an exception. Try again.

Maybe some files are missing? (generator/ios/data/Media.xcassets) Worked in 1.9.11.2 and somewhere between there and this version it was broken.

RegExodus version in conjunction with TypingLabel

Checkmarking TypingLabel in the Third Party Extensions tab results in the following generated code:

api "com.github.tommyettinger:regexodus:$typingLabelVersion"

This isn't correct because the latest version of RegExodus is 0.1.10 and does not correlate to the version of TypingLabel. Maybe RegExodus could be a separate check mark in the list and it could be automatically checked when folks select typing label. Sorry for the trouble.

Android box2d build failing 1.10.0

I updated my project from libgdx version 1.9.14 to 1.10.0, and noticed the build was failing on android.
I run the program via cmd (gradlew android:installDebug)

ss1

It seems after removing the lines from android/build.gradle fixed the problem.

natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi"

gdxVersion=1.9.14 fails for iOS

When building iOS with the RoboVM Tools plugin in Eclipse it fails for gdxVersion=1.9.14. Going back to 1.9.13 works.

Stack-trace fills up with lots of error of the same type:

2021-03-02, 01:52:26: [ERROR] duplicate symbol '_Java_com_badlogic_gdx_utils_BufferUtils_find___3FIILjava_nio_Buffer_2IIF' in: 2021-03-02, 01:52:26: [ERROR] /Users/.../.robovm/cache/ios/thumbv7/release/Users/.../.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.9.14/c7d0536467112c5313c7da6d34a2c1229192623f/gdx-platform-1.9.14-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libgdx.a(com.badlogic.gdx.utils.BufferUtils.o) 2021-03-02, 01:52:26: [ERROR] /Users/.../.robovm/cache/ios/thumbv7/release/Users/.../.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.9.14/c7d0536467112c5313c7da6d34a2c1229192623f/gdx-platform-1.9.14-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libgdx.a(com_badlogic_gdx_utils_BufferUtils.o) 2021-03-02, 01:52:26: [ERROR] duplicate symbol '_Java_com_badlogic_gdx_utils_BufferUtils_find__Ljava_nio_Buffer_2IILjava_nio_Buffer_2IIF' in: 2021-03-02, 01:52:26: [ERROR] /Users/.../.robovm/cache/ios/thumbv7/release/Users/.../.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.9.14/c7d0536467112c5313c7da6d34a2c1229192623f/gdx-platform-1.9.14-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libgdx.a(com.badlogic.gdx.utils.BufferUtils.o) 2021-03-02, 01:52:26: [ERROR] /Users/.../.robovm/cache/ios/thumbv7/release/Users/.../.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.9.14/c7d0536467112c5313c7da6d34a2c1229192623f/gdx-platform-1.9.14-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libgdx.a(com_badlogic_gdx_utils_BufferUtils.o) 2021-03-02, 01:52:27: [ERROR] ld: 126 duplicate symbols for architecture armv7

Not sure if this has anything to do with liftoff, but it will anyway affect users of it. Took me a while to figure out what the real problem was. Not sure if it could work building it any other way (different IDE/using gradle and so on).

Remove GDX Facebook from Third-party list

It sadly looks like GDX Facebook has died. Hasn't been updated in 2 years and it stopped working quite some time ago at least for iOS. It will actually block your app from being added to app store and not with a very clear hint that it is the GDX Facebook that is the culprit.

Originally posted by @TomGrill in TomGrill/gdx-facebook#63 (comment)

If anybody had suggestions for how to replace this with something else I will be really happy, since that is what I used until it started blocking my apps.

Having this in the 3rd party list will probably only do bad at this point.

Alternatively update the hover text to explain the problems. Maybe it somewhat works for android but very outdated.

Option for number of spaces used in gradle indentations

For those, like me, who much prefer larger indentations (typically 4 spaces, or tabs), it would be nice to have an option in the GUI to define the indentation size used in the various generated gradle files.

As of right now, gradle files are created with 2 spaces per indent. In my experience, this is quite uncommon. Even the default project created by gradle init --type java-application uses 4 spaces per indent.

"[...] I'd also change it to 4 spaces, 2 make my eyes bleed haha"
-RafaSKB on Discord

WebSocket template does not work

Since echo.websocket.org is no longer available, the WebSocket template likely doesn't work. As a rather niche feature that can be easily reproduced with the library documentation, I think it should be removed, or updated to use another WebSocket service at the very least.

Legacy code cleanup

  • Remove excessive @author annotations from KDocs.
  • Change package from legacy com.github.czyzby.setup to gdx.liftoff.
  • Remove customs forks of gdx-lml libraries.
  • Add Kotlin linter. Format code.
  • Add @Suppress("unused") annotations for methods, classes and fields accessed via reflection.
  • Add contribution guide.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.