Be sure to get involved with the community by joining the libGDX Discord server!
The theme is THE UNDERWORLD. Good luck everybody!
Be sure to get involved with the community by joining the libGDX Discord server!
The theme is It Came From Above. Good luck everybody!
That is no longer the case. We have developed a brand new app to replace it completely. This time, it’s fully written in libGDX. It’s not just a polished, new look: it has a ton of features and improvements to make it a joy to create particle effects again.
GDX Particle Editor is now feature complete, but we need your help. Please test the app and report any bugs to the issue tracker. Once this stage of testing is completed, we’ll officially switch over all documentation and tutorials to the new utility. The goal is to decouple the particle editor from the main libGDX repo and enable much faster bug fixing.
]]>libGDX 1.12.1 is a minor release containing plenty of small fixes and improvements. Check out the full list below to find out more.
androidx.fragment
dependency to compileOnly
.Vector4
class.Sound
to greatly improve its speed.To check out our progress towards the next release, take a look at the corresponding milestone 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 server!
Updating your Gradle project is straight-forward: Check out the instructions on the wiki! The latest version of dependencies can, as always, be found here.
- LWJGL3 Improvement: Audio device is automatically switched if it was changed in the operating system.
- Tiled Fix: TiledLayer parallax default values fix
- API Addition: TiledDrawable: Align can be set to manipulate the alignment of the rendering (TiledDrawable#setAlign, TiledDrawable#getAlign)
- API Addition: TiledDrawable#draw: Also available as a static function (with align) if you don't want to create an extra instance per texture region
- Android: Removed mouse catching added on 1.12.0 due to unintended effects (see #7187).
- Android: Fixed touch state inconsistency when touching screen with 3 fingers on some devices (see #7256)
- iOS: Update to MobiVM 2.3.20
- API Addition: Using "object" property in Tiled object now fetches MapObject being pointed to, and BaseTmxMapLoader includes method for fetching map where key is id and value is MapObject instance.
- Update to LWJGL 3.3.3
- API Addition: Vector4 is just like Vector2 or Vector3, but with x, y, z, and w float components; a Vector4 can be passed as a shader uniform.
- Fix: Fix crash with ANGLE GLES renderer
- API Change: Use STBVorbis to decode ogg data for Sound
- API Change: Remove usage of deprecated tag on GL30
- Lower GLIBC requirements to 2.17 in order to support older Linux systems
- Fix: Fix setCursor releasing the caught cursor on the LWJGL 3 backend.
- Fix crash in ParticleEditor and Flame
- Fix bitwise precedence in ModelBatch#addMesh (float[] vertices, short[] indices)
- Improve the default font's compatibility with GL30
- Fix potential IndexOutOfBoundsException on AsynchronousAndroidSound
- API Addition: GwtGL20 & GwtGL30#glGetFramebufferAttachmentParameteriv
- Fix Tiled classes not being registered in the reflection cache
- Fix: Change androidx.fragment dependency to compileOnly
- Fix borderless fullscreen when taskbar is on the left/top
Be sure to get involved with the community by joining the libGDX Discord server!
The theme is UNDERWATER. Good luck everybody!
The libGDX Jam September 2023 is now over! We hope everyone had a lot of fun and are proud to present the 13 submissions.
]]>Hey everybody! As announced last year, we want to give creators of interesting community projects the opportunity to present their exciting libraries or tools on the official blog. In this Community Showcase, JamesTKhan is going to present his Mundus library!
If you are interested in other cool community projects, be sure to check out the libGDX Awesome List as well. To participate in future showcases, take a look here.
Mundus is a 3D level editor built with libGDX and provides a libGDX runtime. Mundus was originally created by mbrlabs on GitHub from 2016 to 2018. Development halted on Mundus around 2018. I started working on Mundus in February 2022. I originally started working on a fork from the original repository. Soon after that I detached my fork into its own repository.
So, what sets Mundus apart? The majority of libGDX users appreciate a code-first approach, prompting some to question the need for a 3D editor for libGDX. In the realm of 2D, libGDX enthusiasts have numerous tools at their disposal, including Tiled and Hyperlap2D, to craft their unique worlds. However, when venturing into the 3D space, the options for fully-functional editors are somewhat limited. There are several 3D editors in various states of development.
This is where Mundus steps in, filling this gap by providing tools for 3D object placement, terrain creation and editing, water rendering, fog, and model rendering. It allows all game logic to be coded as usual within a libGDX runtime application, thus offering a smoother transition into 3D game development.
My personal motivation for working on Mundus stems from a combination of my enjoyment of the project and my goals to make 3D development more accessible for the libGDX community. It is my hope that Mundus will inspire more people to contribute to libGDX 3D APIs and Mundus.
Mundus version 0.5.0 was just released on June 30th, 2023 and several features are already in development for 0.6.0.
I do not work on Mundus alone though. Making an editor like this is a challenge and requires herculean effort. We encourage contributions and I mark issues with “good first issue” to encourage new contributors. DGZT contributes fixes and features and Antz has been invaluable in testing Mundus and suggesting enhancements.
You can check out other games made with Mundus in our “Made with Mundus” section!
Since our last release a little over a year ago, a great deal of work has been done! libGDX 1.12.0 includes some exciting new features as well as all-around improvements in various areas. Take a look below to find out more!
On the LWJGL 3 backend, we now offer an audio switch API (#6973). This has three advantages:
Audio#switchOutputDevice
and Audio#getAvailableOutputDevices
libGDX 1.12.0 adds a Haptics API for iOS and Android. Check out the four Input#vibrate
methods for more information.
We have recently added a new MobiVM MetalANGLE backend (#6681). This backend uses MetalANGLE (a fork of Google’s ANGLE) to translate OpenGL specific calls into Metal ones. This is an important step in making the iOS backend future proof, considering that Apple has deprecated OpenGL support on its devices. To use this backend just replace gdx-backend-robovm
in your dependencies with gdx-backend-robovm-metalangle
.
The LWJGL 3 backend now supports OpenGL ES 3.1 & 3.2 (#6945). This allows for some interesting features in the future, like compute shaders and geometry and tessellation shaders.
The GWT backend now supports WebGL 2 (#7037), which is the Web equivalent of OpenGL ES 3.0. This means that all of our backends now support OpenGL ES 3.0 (or at least most of its API)! To try it out, use GwtApplicationConfiguration#useGL30
.
InputProcessor#touchCancelled
instead of InputProcessor#touchUp
(see #6871); to keep the old behaviour, let your #touchCancelled
implementations call #touchUp
.Android:
AndroidApplicationConfiguration#useImmersiveMode
to false
to disable it.Desktop:
AudioDevice#getLatency()
is now in samples, and not millisecondsiOS:
Info.plist
file if necessary.IOSApplicationConfiguration#hideHomeIndicator
is now set to false
by defaultIOSApplicationConfiguration#screenEdgesDeferringSystemGestures
is now set to UIRectEdge.All
by default (was UIRectEdge.None
)ApplicationListener#create
and the first #resize
are now called within UIApplicationDelegate#didFinishLaunching
. This allows for earlier rendering and prevents black screen frames after launch screen. Please note, that your app will get terminated if this method blocks for more than 10-20 seconds!Scene2D:
Actor#localToAscendantCoordinates
throws an exception if the specified actor is not an ascendant.WidgetGroup#hit
first validates the layoutCell
getters return object wrappers instead of primitives.3D:
MeshPartBuilder#lastIndex
now returns an int instead of a shortMesh#getVerticesBuffer
, Mesh#getIndicesBuffer
, VertexData#getBuffer
, and IndexData#getBuffer
are deprecated in favour of new methods with a boolean parameter.Mesh#bind
and Mesh#unbind
have a new parameter for instanced attribute locations. If you use these methods without instancing, you can pass a null value.Updating your Gradle project is straight-forward: Check out the instructions on the wiki! The latest version of dependencies can, as always, be found here.
- [BREAKING CHANGE] Added #touchCancelled to InputProcessor interface, see #6871.
- [BREAKING CHANGE] Android: Immersive mode is now true by default. Set `useImmersiveMode` config to `false` to disable it.
- [BREAKING CHANGE] iOS: Increased min supported iOS version to 11.0. Update your Info.plist file if necessary.
- [BREAKING CHANGE] iOS: `hideHomeIndicator` set to `false` by default (was `true`).
- [BREAKING CHANGE] iOS: `screenEdgesDeferringSystemGestures` set to `UIRectEdge.All` by default (was `UIRectEdge.None`).
- [BREAKING CHANGE] iOS: preferred FPS is now uncapped by default, see #6717
- [BREAKING CHANGE] iOS: `ApplicationListener.create` and first `resize` are now called within `UIApplicationDelegate.didFinishLaunching`. Allows for earlier rendering and prevents black screen frames after launch screen. NOTE: App will get terminated if this method is blocked for more than 10-20 sec.
- [BREAKING CHANGE] Actor#localToAscendantCoordinates throws an exception if the specified actor is not an ascendant.
- [BREAKING CHANGE] WidgetGroup#hit first validates the layout.
- [BREAKING CHANGE] Cell getters return object wrapper instead of primitives.
- [BREAKING CHANGE] MeshPartBuilder#lastIndex now returns int instead of short.
- [BREAKING CHANGE] 3D API - max bone weights is now configurable and limited to 4 by default. Change this value if you need less or more. See #6522.
- [BREAKING CHANGE] Mesh#getVerticesBuffer, Mesh#getIndicesBuffer, VertexData#getBuffer, and IndexData#getBuffer are deprecated in favor to new methods with boolean parameter. If you subclassed some of these classes, you need to implement the new methods.
- [BREAKING CHANGE] Desktop: The return value of AudioDevice#getLatency() is now in samples, and not milliseconds
- [BREAKING CHANGE] iOS: 32 bit (armv7) builds are no longer supported. Builds must be 64 bit (arm64) only.
- [BREAKING CHANGE] iOS: Use dynamic frameworks instead of static libs
- [BREAKING CHANGE] optimized Mesh#bind and Mesh#unbind have a new parameter for instanced attribute locations. If you use these methods without instancing, you can pass a null value.
- [BREAKING CHANGE] Dropped support for older libc versions since libGDX is now built on Ubuntu 20.04 (#7005)
- Update to jnigen 2.4.1
- LWJGL Fix: setPosision() for MP3 files.
- iOS: Add new MobiVM MetalANGLE backend
- iOS: Update to MobiVM 2.3.19
- Update to LWJGL 3.3.2
- API Addition: Added Audio#switchOutputDevice and Audio#getAvailableOutputDevices to specify output devices. Only works for LWJGL3
- Fix LWJGL3: Audio doesn't die anymore, if a device gets disconnected
- API Addition: Added Haptics API with 4 different Input#vibrate() methods with complete Android and iOS implementations.
- Fix: Fixed Android and iOS touch cancelled related issues, see #6871.
- Javadoc: Add "-use" flag to javadoc generation
- Android: gdx-setup now uses AGP 7.2.2 and SDK 32, requiring Android Studio Chipmunk or IntelliJ IDEA 2022.2 and JDK 11.
- libGDX is now built using Java 11 due to new Android requirements. The rest of libGDX can still be built with JDK 8 and runtime compatibility of libGDX projects should be unaffected.
- Fixed glViewport when using HdpiMode.Logical with the LWJGL3 backend.
- Added Stage#actorRemoved to fire exit events just before an actor is removed.
- ScrollPane#setScrollingDisabled avoids invalidate() if nothing changed.
- Fixed incorrect ScrollPane#scrollTo.
- API Addition: Added Texture3D support
- Fix: Throw an exception when maximum Attribute count is reached to prevent silent failure.
- API Fix: The cursor can now be catched on Android.
- LWJGL3 Fix: Stereo audio can now be played on mono output devices. This may also improve downmixing to stereo and upmixing to surround.
- API Addition: Added CheckBox#getImageDrawable.
- FIX: HexagonalTiledMapRenderer now displays maps with the correct stagger index.
- API Addition: Added I18NBundle#keys() method.
- TOOLS Features: Save mode can be changed in Flame particle 3D editor.
- API Addition: added WebGL 2.0 implementation to Gwt backend : you can enable it by GwtApplicationConfiguration#useGL30
- Added GLES31 and GLES32 support with Lwjgl3 backend implementation
- API Addition: JsonReader#stop() to stop parsing.
- API Change: TextureAtlas now uses FileHandle#reader so outside code can control the charset
- API Fix: Intersector#isPointInTriangle
- API Addition: The Skin serializer now supports useIntegerPositions
- API Change: The skin serializer now treats scaledSize as a float
- API Change: DataInput throws an EOF-Exception
- API Fix: RenderBuffer leak in GLFrameBuffer class
- API Change: Pixmap#setPixels will now verify it has been given a direct ByteBuffer
- API Addition: glTexImage2D and glTexSubImage2D with offset parameter
- API Addition: OrientedBoundingBox
- API Addition: Tiled parallax factor support
- API Fix: LWJGL 3’s borderless fullscreen works with negative monitor coords
- API Fix: Update mouse x and y values immediately after calling #setCursorPosition
- API Change: Never stall with AssetManager on GWT
- API Change: Allow packed depth stencil buffer creation when not using GL30
- API Fix: Fixed DataInput#readString for non-ASCII
- API Fix: LwjglGraphics.setupDisplay() is no longer choosing the wrong display mode
- API Fix: MathUtils.lerpAngle() fixed for extreme inputs
- MathUtils trigonometry improvements
- Various Scene2D fixes and improvements
Be sure to get involved with the community by joining the libGDX Discord server!
The theme is Underwater. Good luck everybody!
The libGDX Jam June 2023 is now over! We hope everyone had a lot of fun and are proud to present the 15 submissions.
]]>Be sure to get involved with the community by joining the libGDX Discord server!
The theme is Pixel Wars. Good luck everybody!
The libGDX Jam March 2023 is now over! We hope everyone had a lot of fun and are proud to present the 15 submissions.
]]>Be sure to get involved with the community by joining the libGDX Discord server!
The theme is Dystopian Christmas. Good luck everybody!
The libGDX Jam December 2022 is now over! We hope everyone had a lot of fun and are proud to present the 15 submissions.
]]>