Release 0.12.0


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

Full Changelog: https://github.com/gurkenlabs/litiengine/compare/0.11.1…0.12.0

Files

utiLITI-windows.zip 32 MB
Version 0.12.0 67 days ago
utiLITI-linux.zip 37 MB
Version 0.12.0 67 days ago
utiLITI-mac.zip 31 MB
Version 0.12.0 67 days ago

Get LITIENGINE

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.