Release 0.12.0
Published on June 2, 2026 by Matthias Wilke

 What’s Changed 

Highlights of this release include runtime display mode switching with automatic GUI rescaling, expanded tweening capabilities, Aseprite animation import/export support, improved GUI navigation, an emitter data serialization rework, and several stability improvements across the engine and utiLITI editor. 

🔧 Engine & Core 

  • Added runtime display mode switching, allowing games to change resolution and display mode without restarting.
  • Added automatic GUI rescaling and repositioning when the game resolution changes.
  • Added focus-aware keyboard and controller navigation for core GUI components.
  • Expanded the tweening system: 
    • Added loopable tweens.
    • Added tween lifecycle events.
    • Added Camera tweening support.
    • Renamed Tween.begin() to Tween.start().
  • Added support for registering custom Trigger types without implementing a custom MapObjectLoader.
  • Added Animation Resources and JSON utilities for importing and exporting Aseprite animations.
  • Resource lookups are now case-insensitive, preventing load failures caused by filename casing differences.
  • Improved resource loading with more graceful exception handling.
  • Fixed floating-point precision issues in collision detection that could cause false-positive intersections.
  • Fixed an alignment clamping issue.
  • Improved documentation throughout the engine, including extensive JavaDoc updates and clarifications.

🎨 Particle System

 
  • Replaced ParticleParameter with serializable RangeAttribute.
  • Renamed EmitterData to EmitterAttributes.
  • Improved / simplified emitter serialization.

🛠️ utiLITI

 
  • Added context menus for resources in the Resources tab.
  • Added keyboard shortcuts for common resource operations.
  • Added context-sensitive import menus to the Resources panel.
  • Improved Asset Panel usability and interactions.
  • Added double-click color picker support in the layer list.
  • Fixed a macOS-specific crash caused by right-click interactions.

🖥️ Platform & Runtime

 
  • Improved handling of borderless window mode changes.
  • Added required desktop modules to packaged applications for improved runtime compatibility.

🏗️ Toolchain

 
  • Updated the Gradle Wrapper to 9.5.1.
  • Improved workflow security by pinning GitHub Actions to commit hashes.
  • Updated and modernized CI/CD workflows and release tooling.
  • Various code quality improvements, cleanup efforts, and Sonar findings addressed.

📦 Dependencies

 
Notable dependency updates include:
 
  • Input4J → 1.2.0
  • JUnit → 6.1.0
  • SonarQube → 7.3.0
  • Gradle Actions → 6
  • Spotless → 8.6.0
  • Mockito → 5.23.0
  • JAXB → 4.0.9

⚠️ Breaking Changes

 
  • Tween.begin() has been renamed to Tween.start().
  • ParticleParameter has been removed and replaced by RangeAttribute. -> rename maxValue to max and minValue to min in your emitter XML.
  • EmitterData has been renamed to EmitterAttributes.

New Contributors

 
  • @SOrtiz1967 made their first contribution in #959