Skip to content

Commit fc3ead0

Browse files
committed
Add the 1.13.0 announcement
1 parent 9a7a65d commit fc3ead0

File tree

6 files changed

+147
-59
lines changed

6 files changed

+147
-59
lines changed

_pages/dev/versions.md

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,5 @@ sidebar:
2121
# libGDX {{ site.data.versions.libgdxRelease }}
2222
Keep up to date with the latest versions of dependencies and dev tools! Instructions on how to update your Gradle files can be found [here](/wiki/articles/updating-libgdx).
2323

24-
### RoboVM
25-
- RoboVM Version: {{ site.data.versions.robovmVersion }}
26-
- RoboVM Gradle Plugin Version: {{ site.data.versions.robovmPluginVersion }}
27-
28-
### Android
29-
- Android Build Tools Version: {{ site.data.versions.androidBuildtoolsVersion }}
30-
- Android SDK Version: {{ site.data.versions.androidSDKVersion }}
31-
- Android Gradle Tool Version: {{ site.data.versions.androidGradleToolVersion }}
32-
33-
### GWT
34-
- GWT Version: {{ site.data.versions.gwtVersion }}
35-
- GWT Gradle Plugin Version: {{ site.data.versions.gwtPluginVersion }}
36-
3724
### Extensions
38-
Our extensions use their own versioning schemes. You cand find their latest versions on the respective release pages: [Ashley](https://github.com/libgdx/ashley/releases), [Box2DLights](https://github.com/libgdx/box2dlights/releases), [gdx-ai](https://github.com/libgdx/gdx-ai/releases), [gdx-controllers](https://github.com/libgdx/gdx-controllers/releases), [gdx-pay](https://github.com/libgdx/gdx-pay/releases)
25+
Our extensions use their own versioning schemes. You can find their latest versions on the respective release pages: [Ashley](https://github.com/libgdx/ashley/releases), [Box2DLights](https://github.com/libgdx/box2dlights/releases), [gdx-ai](https://github.com/libgdx/gdx-ai/releases), [gdx-controllers](https://github.com/libgdx/gdx-controllers/releases), [gdx-pay](https://github.com/libgdx/gdx-pay/releases)

_plugins/libgdx_fetch_versions.rb

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
# This plugin automatically fetches the latest version of libGDX's dependencies
2-
# by parsing the DependencyBank file of the latest released version of gdx-setup
3-
#
4-
# https://github.com/libgdx/libgdx/blob/master/extensions/gdx-setup/src/com/badlogic/gdx/setup/DependencyBank.java
5-
#
6-
# This is basically a Ruby port of https://github.com/libgdx/libgdx-site/blob/master/src/main/java/com/badlogicgames/libgdx/site/GameService.java
7-
# and https://github.com/libgdx/libgdx-site/blob/master/src/main/java/com/badlogicgames/libgdx/site/Versions.java
1+
# This plugin automatically fetches the name of the latest version of libGDX
82

93
require "jekyll"
104
require 'json'
@@ -17,37 +11,8 @@ class VersionDataGenerator < Jekyll::Generator
1711

1812
def generate(site)
1913
latestReleaseApiResponse = JSON.load(URI.open('https://api.github.com/repos/libgdx/libgdx/releases/latest'))
20-
dependencyBankContent = URI.open("https://raw.githubusercontent.com/libgdx/libgdx/" + latestReleaseApiResponse['tag_name'] + "/extensions/gdx-setup/src/com/badlogic/gdx/setup/DependencyBank.java", &:read)
21-
2214
site.data['versions'] = Hash.new
23-
24-
site.data['versions']['libgdxRelease'] = getVersion(dependencyBankContent, 'libgdxVersion')
25-
site.data['versions']['libgdxNightlyVersion'] = getVersion(dependencyBankContent, 'libgdxNightlyVersion')
26-
site.data['versions']['robovmVersion'] = getVersion(dependencyBankContent, 'roboVMVersion')
27-
site.data['versions']['robovmPluginVersion'] = getVersion(dependencyBankContent, 'roboVMVersion')
28-
site.data['versions']['androidBuildtoolsVersion'] = getVersion(dependencyBankContent, 'buildToolsVersion')
29-
site.data['versions']['androidSDKVersion'] = getVersion(dependencyBankContent, 'androidAPILevel')
30-
site.data['versions']['androidGradleToolVersion'] = getPluginVersion(dependencyBankContent, 'androidPluginImport')
31-
site.data['versions']['gwtVersion'] = getVersion(dependencyBankContent, 'gwtVersion')
32-
site.data['versions']['gwtPluginVersion'] = getPluginVersion(dependencyBankContent, 'gwtPluginImport')
33-
end
34-
35-
def getVersion(str, match)
36-
result = str.match(match + '\s=\s"(.*?)"')
37-
result.nil? ? "Unknown" : result[1]
38-
end
39-
40-
def getPluginVersion(str, match)
41-
result = str.match(match + '\s=\s"(.*?)"')
42-
43-
if result.nil?
44-
ret = "Unknown"
45-
else
46-
ret = result[1]
47-
ret = ret[ret.rindex(':') + 1, ret.length]
48-
end
49-
50-
ret
15+
site.data['versions']['libgdxRelease'] = latestReleaseApiResponse['name']
5116
end
5217

5318
end

_posts/2021/2021-07-24-devlog-7-lwjgl3.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,17 +73,26 @@ To switch your existing libGDX projects to the LWJGL 3 desktop backend you need
7373
### Do I need to do anything else?
7474
If you are on Windows or Linux, you are all set!
7575

76-
However, if you are on **macOS**, there is another step involved in getting your applications to run with the LWJGL 3 backend. Since libGDX 1.11.0, you can either add the ([experimental](https://github.com/libgdx/libgdx/issues?q=is%3Aissue+is%3Aopen+label%3Aglfw-awt-macos)) gdx-lwjgl3-glfw-awt-macos dependency to your desktop project (`api "com.badlogicgames.gdx:gdx-lwjgl3-glfw-awt-macos:$gdxVersion"`; on Windows and Linux the extension is ignored) or you can run the JVM with the [`-XstartOnFirstThread`](https://github.com/LWJGL/lwjgl3/blob/572f69802cb2d4930777403c73999c3e01de9d56/modules/lwjgl/glfw/src/main/java/org/lwjgl/glfw/EventLoop.java#L14-L23) argument on macOS. This ensures that your application’s `main()` method runs on the first (i.e., the AppKit) thread and will be familiar to those of you with experiences with SWT.
76+
However, if you are on **macOS**, there is another step involved in getting your applications to run with the LWJGL 3 backend.
7777

78-
Typically, the argument can be set in the Launch/Run Configurations of your IDE, as is described [here](/wiki/start/import-and-running). Alternatively, if you're starting your project via Gradle, add this line to the `run` task of the desktop Gradle file:
78+
You can either run the JVM with the [`-XstartOnFirstThread`](https://github.com/LWJGL/lwjgl3/blob/572f69802cb2d4930777403c73999c3e01de9d56/modules/lwjgl/glfw/src/main/java/org/lwjgl/glfw/EventLoop.java#L14-L23) argument on macOS. This ensures that your application’s `main()` method runs on the first (i.e., the AppKit) thread and will be familiar to those of you with experiences with SWT. Typically, the argument can be set in the Launch/Run Configurations of your IDE, as is described [here](/wiki/start/import-and-running). If you intend on deploying your game by packaging a JRE with it (which is the recommended way to distribute your game!), jpackage or packr allow you to set the JVM arguments. If you're starting your project via Gradle, add this line to the `run` task of the desktop Gradle file:
7979
```
8080
jvmArgs = ['-XstartOnFirstThread']
8181
```
82-
Another viable approach for _outside of your development environment_ is to just programatically restart the JVM if the argument is not present (see [here](https://github.com/crykn/guacamole/blob/master/gdx-desktop/src/main/java/de/damios/guacamole/gdx/StartOnFirstThreadHelper.java#L69) for a simple example). Alternatively, if you want to deploy your game by packaging a JRE with it (which is the recommended way to distribute your game), jpackage or packr allow you to set the JVM arguments.
82+
83+
Alternatively, you can use a custom experimental implementation of the GLFW library by adding this code snippet to the start of your `main()` method:
84+
85+
```java
86+
if (SharedLibraryLoader.isMac) {
87+
Configuration.GLFW_LIBRARY_NAME.set("glfw_async");
88+
}
89+
```
90+
91+
A third option, especially viable for _outside of your development environment_, is to just programatically restart the JVM if the argument is not present (see [here](https://github.com/crykn/guacamole/blob/master/gdx-desktop/src/main/java/de/damios/guacamole/gdx/StartOnFirstThreadHelper.java#L69) for a simple example).
8392

8493
### Are there any other things I need to be aware of?
8594
- Whenever your **application is minimised**, the LWJGL 3 backend calls `ApplicationListener#resize(0, 0)`. This can lead to unexpected issues, in particular if you are (re)building framebuffers whenever the application is resized.
86-
- To use **Swing or AWT** APIs, you'll have to depend on the ([experimental](https://github.com/libgdx/libgdx/issues?q=is%3Aissue+is%3Aopen+label%3Aglfw-awt-macos)) gdx-lwjgl3-glfw-awt-macos extension. See [`AwtTestLWJGL`](https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests-lwjgl3/src/com/badlogic/gdx/tests/lwjgl3/AwtTestLWJGL.java) in gdx-tests-lwjgl3 for an example.
95+
- To use **Swing or AWT** APIs, you'll have to try out the experimental alternative GLFW library. See [`AwtTestLWJGL`](https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests-lwjgl3/src/com/badlogic/gdx/tests/lwjgl3/AwtTestLWJGL.java) in gdx-tests-lwjgl3 for an example.
8796
- The LWJGL 3 backend does [not yet](https://github.com/libgdx/libgdx/pull/6247) have an equivalent for `LwjglAWTCanvas` and `LwjglAWTFrame`.
8897
- As the graphical tools in **gdx-tools** require the `LwjglAWTCanvas` class, the library has a hard dependency on LWJGL 2. If you are using one of the non-graphical tools of the gdx-tools project (in particular [TexturePacker](/wiki/tools/texture-packer#from-source)) and the LWJGL 3 backend _in the same (!) project_, you need to modify your gdx-tools dependency like this:
8998
```gradle

_posts/2024/2024-10-17-gdx-1-13.md

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
---
2+
title: "libGDX 1.13.0"
3+
classes: wide2
4+
header:
5+
overlay_color: "#000"
6+
overlay_filter: "0.5"
7+
overlay_image: /assets/images/update.jpeg
8+
caption: "Photo credit: [**Markus Winkler**](https://unsplash.com/photos/cxoR55-bels)"
9+
teaser: /assets/images/update.jpeg
10+
excerpt: "We are proud to present a new release of libGDX: version 1.13.0!"
11+
12+
show_author: true
13+
author_username: "crykn"
14+
author_displayname: "damios"
15+
16+
tags:
17+
- changelog
18+
19+
categories: news
20+
---
21+
If you are looking for past changelogs, check out [this](/news/changelog/) page.
22+
{: .notice--primary .no-top-margin }
23+
24+
It has been some time since our last release, but version 1.13.0 of libGDX brings plenty of improvements and bug fixes. Check out the full list below to find out more.
25+
26+
## Breaking changes
27+
28+
The following changes require you to adapt your existing libGDX codebases:
29+
30+
- [ANDROID] The minimum API level is now `19` (Android 4.4).
31+
- [ANDROID] Removed `Input#setCatchBackKey`, `#isCatchBackKey`, `#setCatchMenuKey`, and `#isCatchMenuKey` deprecated in 1.9.10. Use `#setCatchKey` and `#isCatchKey` instead.
32+
- [ANDROID & iOS] Exceptions occurring in `Runnable` tasks scheduled through `Gdx.app.postRunnable(...)` are no longer swallowed and will crash the app. Add a protection to your tasks if required.
33+
- [GWT] Updated to [GWT 2.11.0](https://www.gwtproject.org/release-notes.html#Release_Notes_2_11_0) from 2.10.0. This improves the JRE emulation to support features from Java 11 like collections, streams, and more. To keep old projects working, add `com.google.jsinterop:jsinterop-annotations:2.0.2:sources` as dependency to your html subproject.
34+
- [iOS] The minimum supported iOS version is now 12.0. Update your `Info.plist` file if necessary.
35+
- [LWJGL3] The `gdx-lwjgl3-glfw-awt-macos` extension was retired. Just remove it from your dependencies and use the following snippet at the start of your `main()` method instead ([#7361](https://github.com/libgdx/libgdx/pull/7361)):
36+
```java
37+
if (SharedLibraryLoader.isMac) {
38+
Configuration.GLFW_LIBRARY_NAME.set("glfw_async");
39+
}
40+
```
41+
42+
## A few notable changes
43+
In addition, there are a couple notable changes:
44+
45+
- [CORE] There have been a couple of minor performance improvements, in particular to `Sprite` and `SpriteBatch`.
46+
- [CORE] Added Framebuffer multisample support ([#7185](https://github.com/libgdx/libgdx/pull/7185)). Take a look at [`GL31FrameBufferMultisampleTest`](https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/gles31/GL31FrameBufferMultisampleTest.java) for a simple example of how to use it.
47+
- [CORE] There is a new API to get user input via native text fields ([#7004](https://github.com/libgdx/libgdx/pull/7004)).
48+
- [GWT] The audio device can be switched now ([#7243](https://github.com/libgdx/libgdx/pull/7243)). This has to be enabled via `GwtApplicationConfiguration#fetchAvailableOutputDevices` beforehand.
49+
- [iOS] Updated to [MobiVM 2.3.21](https://github.com/MobiVM/robovm/wiki/Changelog#2321-february-2024) from 2.3.21.
50+
- [iOS] The iOS backend now has an implementaion for `AudioDevice` ([#7371](https://github.com/libgdx/libgdx/pull/7371)). It can be configured through `IOSApplicationConfiguration` with `audioDeviceBufferSize` and `audioDeviceBufferCount`.
51+
- [LWJGL3] Added the `Lwjgl3ApplicationConfiguration#pauseWhenMinimized` and `#pauseWhenLostFocus` flags to control when the application should call the `pause()` method on the `ApplicationListener` ([#7287](https://github.com/libgdx/libgdx/pull/7287)).
52+
- [LWJGL3] Support for Linux RISC-V has been added ([#7275](https://github.com/libgdx/libgdx/pull/7275)).
53+
54+
To check out our progress towards the next release, take a look at the [corresponding milestone](https://github.com/libgdx/libgdx/milestone/7) on GitHub. As always, we appreciate feedback on the issues/PRs already part of the milestone and would like to invite you to bring forward anything still missing on our [Discord](/community/discord/) server!
55+
56+
### Full changelog
57+
Updating your Gradle project is straight-forward: Check out the instructions [on the wiki](/wiki/articles/updating-libgdx)!
58+
{: .notice--info}
59+
```
60+
3.0]
61+
- [BREAKING CHANGE] GWT: Updated to 2.11.0. `com.google.jsinterop:jsinterop-annotations:2.0.2:sources` must be added as a dependency to your html project dependencies.
62+
- [BREAKING CHANGE] Android: Minimum API level is now level 19 (Android 4.4)
63+
- [BREAKING CHANGE] iOS: Increased min supported iOS version to 12.0. Update your Info.plist file if necessary.
64+
- [BREAKING CHANGE] Android, iOS: Exceptions occurring in Runnable tasks scheduled through Gdx.app.postRunnable() are no longer swallowed and will crash the app (add a protection if required).
65+
- Updated: Update to jnigen 2.5.2
66+
- iOS: Update to MobiVM 2.3.21
67+
- iOS: The iOS backend now implements AudioDevice. It can be configured through IOSApplicationConfiguration with audioDeviceBufferSize/audioDeviceBufferCount
68+
- Fixed GlyphLayout for fixed width glyph offsets at the start and end of lines.
69+
- Fixed scene2d.ui layout for fractional positions and sizes.
70+
- LWJGL3: Added pauseWhenMinimized and pauseWhenLostFocus flags to Lwjgl3ApplicationConfiguration.
71+
- libGDX is now built using Java 17 due to Gradle 8 requirements.
72+
- New GDX Setup projects now use Gradle 8.4 and AGP Plugin 8.1.2 which require at least Java 17.
73+
- Fixed Timer#stop, remember time spent stopped and delay tasks when started again. #7281
74+
- Android: Add configuration option to render under the cutout if available on the device.
75+
- Fix: Keep SelectBox popup from extending past right edge of stage.
76+
- Added Framebuffer multisample support (see GL31FrameBufferMultisampleTest.java for basic usage)
77+
- Fix: Fonts generated with gdx-freetype no longer bleed when drawn with a shadow
78+
- Fixed Timer tasks being run after cancellation.
79+
- Optimization of SpriteBatch in GL30 default modes, as indices do not need to be updated
80+
- Desktop: Added support for 8/32/64-bit PCM and MP3 WAVs
81+
- Desktop: Improved support for surround sound audio files (#6792)
82+
- Android: Added support for predictive back gesture (requires android:enableOnBackInvokedCallback="true" in manifest)
83+
- API Removal: Removed deprecated back and menu key methods. Use `setCatchKey` and `isCatchKey` instead.
84+
- Cache packed color on sprite to improve performance
85+
- Improve JsonReader, add JsonSkimmer, JsonString
86+
- Add proper glTexImage2D support on GWT
87+
- Expose the color variables of Box2DDebugRenderer
88+
- Add Color#set(Color rgb, float a)
89+
- Prevent loss of precision in OrthographicCamera#update
90+
- Fix offsets in ConvexHull while being unsorted
91+
- Small particle emitter improvements
92+
- Fix : RenderBuffer leak in GLFrameBuffer
93+
- LWJGL 3: Remove unnecessary window.makeCurrent() calls to improve performance (#7362)
94+
- Fix: DragListener only listens to the correct touch up events
95+
- Fix incorrect glyph page index in FreeTypeFontGenerator
96+
- Added TextureAtlas.TextureAtlasData.Page#name.
97+
- iOS: Improve preferred FPS setting logic and documentation on iOS backend
98+
- Fixed TextField breaking if the font has markup enabled.
99+
- Only allow scrolling of a scroll pane if it has scroll focus
100+
- iOS: Adding RoboVM AudioDevice implementation
101+
- Add new Color#CLEAR_WHITE
102+
- Fixed ScrollPane#scrollTo setting scrollX when there's a width
103+
- Screens now extend the Disposable interface
104+
- Added antialiasing flag to the ScreenUtils.
105+
- Fix Intersector.intersectPolygons() corner case
106+
- LWJGL 3: Fix the delta time not changing when resizing the window
107+
- GWT: Allow switching the audio device; this has to be enabled via GwtApplicationConfiguration#fetchAvailableOutputDevices
108+
- Add API to get user inout with native text fields (#7004)
109+
- Fix issue with the 'request still pending' check on NetJavaImpl
110+
- Added possibility to reset a particle effect without starting it
111+
- Android & iOS: Use empty Audio implementations on Android and iOS when audio is disabled
112+
- Adds status detection for an httpRequest
113+
- Fix ANGLE GLES renderer on dekstop (#7274)
114+
- Architecture support: Support for Linux RISC-V has been added. The gdx-xxx-natives-desktop.jar files now also contain native libraries for this architecture.
115+
```

wiki/articles/updating-libgdx.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Your Gradle based project makes it very easy to switch between releases and nigh
1717
gdxVersion=1.12.1
1818
```
1919

20-
The version you see may be higher than `1.12.1`. Once you've located that string, you can simply change it to the latest release (or an older release) or to the current SNAPSHOT version. You may also have to update other versions and dependencies based on the [versions listing](/dev/versions/). Once edited, save the `gradle.properties` file.
20+
The version you see may be higher than `1.12.1`. Once you've located that string, you can simply change it to the latest release (or an older release) or to the current SNAPSHOT version. You may also have to update other versions and dependencies based on the changelog of libGDX. Once edited, save the `gradle.properties` file.
2121

2222
The next step is dependent on your IDE:
2323

0 commit comments

Comments
 (0)