Skip to content

Releases: utopia-rise/godot-kotlin-jvm

0.10.0-4.3.0

01 Oct 11:00
b28c493
Compare
Choose a tag to compare

New release 0.10.0-4.3.0 for Godot Kotlin.

Warning: Some breaking changes have been made to the API since the last release, so your current projects will most likely not compile without adapting the code. Also be aware that a lot changed behind the hood since the previous release. We fixed many bugs, but probably introduced new ones along the way. We encourage you to post issues if it happens.

Highlights:

  • Massive changes to the C++ implementation of the module resulting in better maintainability, better logging/notification, recovery from invalid states and many crashes replaced by errors/warnings.
  • Improved configuration file and command-line, including custom arguments for the JVM.
  • Added efficient conversions between Godot PackedArrays and Kotlin primitive Arrays.
  • Nodes with an invalid script (not built) now display a warning.
  • Improved API for Callable, including the possibility to directly use Kotlin lambdas, not only registered functions.
  • Support for Kotlin coroutines has been added, you can now wait for a signal, resource loading or the next frame.
  • It's no longer allowed to register lateinit or nullable properties, except for Object/Resource/Node types.
  • The editor plugin is back, allowing you to setup the Gradle project and build it from the editor.
  • Memory model revamped and now running on the main thread for more stability and smoother handling of GC spikes.
  • Memory usage has been significantly reduced.
  • Fix .kt and .java scripts attached to Nodes not being correctly saved in editor.
  • When a Java or Kotlin script has been edited without rebuilding, the editor is going to display warnings on Nodes using those scripts.
  • Bug resetting property values in inspector has been fixed.
  • General improvements to the core and generated API.
  • iOS export now use our own custom JVM build
  • Support for multidex APK on Android.
  • Exports now working on Android 14+.
  • Building for Android now requires SDK 35+.

Don't forget to change your build.gradle configuration with the following line:

plugins {
    id("com.utopia-rise.godot-kotlin-jvm") version "0.10.0-4.3.0"
}

The files prefixed with godot-kotlin-jvm_editor_ are the editors.
release editors are the editors you use normally. debug editors provide debug symbols and are intended to provide better stacktraces in case of crashes of the editor. Please use those when submitting bugreports.

godot-kotlin-jvm_export_templates_0.10.0-4.3.0.tpz is the archive for all export templates . See exporting documentation on how to use it.

What's Changed

Full Changelog: 0.9.1-4.2.2...0.10.0-4.3.0

0.9.1-4.2.2

07 May 13:50
Compare
Choose a tag to compare

New fix release 0.9.1-4.2.2 for Godot Kotlin.

  • Fix an error that prevented properties values to be set in the node inspector.
  • We now use our own custom project to build the dependencies for iOS export. It makes the maintenance easier for us and more futurproof. Because of that, only one version of GraalVM is supported. Currently it's set to 23.1.3. You can download it here
plugins {
    id("com.utopia-rise.godot-kotlin-jvm") version "0.9.1-4.2.2"
}

The files prefixed with godot-kotlin-jvm_editor_ are the editors.

godot-kotlin-jvm_export_templates_0.9.1-4.2.2.tpz is the archive for all export templates . See exporting documentation on how to use it.

What's Changed

Full Changelog: 0.9.0-4.2.2...0.9.1-4.2.2

0.9.0-4.2.2

24 Apr 16:05
Compare
Choose a tag to compare

New minor 0.9.0-4.2.2 release for Godot Kotlin.

  • Support for Kotlin and Java source files has been added. You can now use .gdj, .kt and .java files as scripts you can attach to nodes and objects. Check the documentation to understand the differences between using registration files and source files. Java and Kotlin source code is not kept when exporting your game, so you won't risk leaking it.
  • Attaching and creating scripts through the UI dialog is now working properly.
  • VariantArray should now be exported with the correct generic type in Godot.
  • Build errors related to scripts are more detailed.
  • Add some missing methods in core godot types.
  • Using reflection in your project has been fixed.
  • An alert dialog will appear, when possible, if Godot crashes for a reason related to the module.
  • A new minimal project template has been created to show new users what a basic setup for a Godot Kotlin project looks like: https://github.com/utopia-rise/godot-kotlin-project-template

Don't forget to change your build.gradle configuration with the following line:

plugins {
    id("com.utopia-rise.godot-kotlin-jvm") version "0.9.0-4.2.2"
}

Warning: With the changes made to scripts in this version, it's possible you encounter issues when opening an existing JVM project. If that's the case, close the project, delete your .godot/ directory and let Godot reimport everything.

The files prefixed with godot-kotlin-jvm_editor_ are the editors.

godot-kotlin-jvm_export_templates_0.9.0-4.2.2.tpz is the archive for all export templates . See exporting documentation on how to use it.

What's Changed

Full Changelog: 0.8.2-4.2.1...0.9.0-4.2.2

0.8.2-4.2.1

10 Mar 15:05
4938de5
Compare
Choose a tag to compare

The files prefixed with godot-kotlin-jvm_editor_ are the editors.

godot-kotlin-jvm_export_templates_0.8.2-4.2.1.tpz is the archive for all export templates . See exporting documentation on how to use it.

Changelog:

  • 4938de5 chore: update to godot 4.2.1 and bump module version to 0.8.2 (#583)
  • 369b71fc Improving Documentation: Fixing Name Convetions and Formatting (#576)
  • ebe5a793 Fix android export templates and fix export template target version (#581)

0.8.1-4.2.0

29 Dec 16:05
1dfa11d
Compare
Choose a tag to compare

The files prefixed with godot-kotlin-jvm_editor_ are the editors.

godot-kotlin-jvm_export_templates_0.8.1-4.2.0.tpz is the archive for all export templates . See exporting documentation on how to use it.

Changelog:

  • 1dfa11d fix(cpp): check if JVM is initialized in KotlinLanguage::thread_enter and KotlinLanguage::thread_exit as a quick fix for project setup problems (#559)
  • a4dc6e8 Fix icon.svg generation in IDE plugin (#558)
  • e2f8667 chore: bump module version to 0.8.1 (#556)
  • fd6a2ab fix(CI): update all godot version in CI files to 4.2-stable (#555)

0.8.0-4.2.0

28 Dec 10:54
8f0f813
Compare
Choose a tag to compare

New minor release 0.8.0-4.2.0 release for Godot Kotlin.

  • .gdj files can now be placed everywhere in the godot project. They will automatically be generated next to their corresponding .kt files the first time (otherwise created by default in the scripts/ directory when generated from an external library or module)
  • The intellij plugin should not slow down the IDE anymore when used in a non godot project, and multiple incorrect behaviours have been fixed.
  • StringName can now be cached to improve performance (use "myString".asStringName() )
  • Multithreading should not crash anymore.
  • The Godot Kotlin library now has a debug and release version (can be set with a gradle argument, debug by default)
  • More memory leaks are fixed, and the memory managed is now handling GCed objects faster.
  • Fixed some incorrect behaviours in the core types.

Don't forget to change your build.gradle configuration with the following line:

plugins {
    id("com.utopia-rise.godot-kotlin-jvm") version "0.8.0-4.2.0"
}

The files prefixed with godot-kotlin-jvm_editor_ are the editors.

godot-kotlin-jvm_export_templates_0.8.0-4.2.0.tpz is the archive for all export templates . See exporting documentation on how to use it.

What's Changed

  • 8f0f813 fix(CI): temporary fix python version for MoltenVK (#553)
  • ab8d5c4 fix: add intellij gradle plugin to root project with apply false (#552)
  • 1ab807e fix: allow godot-kotlin-jvm gradle plugin to participate in multi-module projects. (#549)
  • 2707f9f Update IDE plugin templates (#545)
  • dc052b8 fix(cpp): implement ScriptLanguage::thread_enter and ScriptLanguage::thread_exit to attach and detach threads to JVM (#498)
  • 49ecc20 Chore/update to godot 4.2 (#548)
  • 3467768 Fix local publications (#547)
  • fc2f3ea Implement an LRU cache for StringName objects. (#535)
  • 485bf74 enh: remove MethodBind array on cpp side in favor of JVM stored MethodBind ptr (#541)
  • 2b94186 fix(entry-gen): escape string correcly on windows in RegisteredClassMetadata and use universal file separators. (#540)
  • fe7379a Improve registration files (#529)
  • 96008f8 Fix broken link in requirements.md (#536)
  • c8df371 Rework ScriptInstance management (#528)
  • 98531ae Fix ide plugin performance issues (#530)
  • d5cc26e Fix template project and ide banner showing indefinitely on gradle sync failure (#532)
  • ea2c9b0 Don't crash if any of the folders inside ANDROID_SDK_ROOT do not exist (#533)
  • f2f58db Add unit tests and fixes for core types. (#522)
  • 5b4d05e Update BunnyMark to Godot Kotlin 4 (#518)
  • d506dbd feat(api-gen): Generate bitfields using interface, value class and static members (#524)
  • f19d2bc Update benchmark and MemoryManager fixes (#521)
  • e3957fd Feature/use kotlin preprocessors plugin (#483)
  • 8bf3aa9 Change size of the logo (#523)

0.7.2-4.1.2

16 Oct 09:25
Compare
Choose a tag to compare

New bug fix 0.7.2-4.1.2 release for Godot Kotlin.

  • Fix calls to API methods with more than 8 arguments.
  • Clarifications in documentation for IOS export

Don't forget to change your build.gradle configuration with the following line:

plugins {
    id("com.utopia-rise.godot-kotlin-jvm") version "0.7.2-4.1.2"
}

The files prefixed with godot-kotlin-jvm_editor_ are the editors.

godot-kotlin-jvm_export_templates_0.7.2-4.1.2.tpz is the archive for all export templates . See exporting documentation on how to use it.

What's Changed

  • Increase MAX_FUNCTION_ARG_COUNT to 16. by @CedNaru in #515
  • fix(docs): warning formatting and gradle snippet for ios documentation by @piiertho in #516

Full Changelog: 0.7.1-4.1.2...0.7.2-4.1.2

0.7.1-4.1.2

15 Oct 10:00
573a05f
Compare
Choose a tag to compare

New bug fix 0.7.1-4.1.2 release for Godot Kotlin.

  • Fix calls to API methods using bitfield enums as parameter or return type.
  • Local copy check is back in the Intellij plugin, it will warn you when writing to local copies of coretypes instead of assigning to the actual variable.
  • Intellij plugin warning when using an outdated version is fixed.
  • IOS export is fixed. Remember that the IOS is still experimental and requires GraalVM native image.

Don't forget to change your build.gradle configuration with the following line:

plugins {
    id("com.utopia-rise.godot-kotlin-jvm") version "0.7.1-4.1.2"
}

The files prefixed with godot-kotlin-jvm_editor_ are the editors.

godot-kotlin-jvm_export_templates_0.7.1-4.1.2.tpz is the archive for all export templates . See exporting documentation on how to use it.

What's Changed

  • fix(gradle-plugin): add star projection on command line to build ios native image by @piiertho in #507
  • Core type checks and error reporting improvements by @chippmann in #511
  • Rewind() called early in TransferContext by @CedNaru in #512
  • fix(api-gen): set right variant type for bitfield types by @piiertho in #513

Full Changelog: 0.7.0-4.1.2...0.7.1-4.1.2

0.7.0-4.1.2

12 Oct 07:44
Compare
Choose a tag to compare

The first Godot Kotlin 4 release is here!

After months of hard work, we have successfully incorporated the new features that Godot 4 offers and resolved critical bugs.
We are excited to announce the availability of this module, which we consider to be a solid starting point.
This release is compatible with Godot 4.1.2 and Kotlin 1.9.

Please note that we do not yet consider this release to be stable. There are several small features and quality-of-life improvements that we had to postpone. The most important ones to keep in mind include:

  • The editor plugin is disabled, so you won't be able to build Kotlin code directly from the editor. You will need to use Gradle commands in your IDE for this purpose.
  • The IntelliJ plugin lacks the local copy security check. Please remember that when retrieving core types (such as Vector2, Quaternion, etc.) from a Godot object, they are actually copies, and you cannot modify them directly.
  • The API for handling Signals and Callable functions works but does not yet incorporate Kotlin-specific features, making it somewhat boilerplate to use. In the future, we plan to introduce the ability to use signals with coroutines and lambdas with Callables.
  • Compared to Godot 3, many methods in the API now use StringName instead of String. For now, you will need to manually convert from String to StringName (String::AsStringName). In the future, we will implement automatic conversion from String to both StringName and NodePath.
  • The editor universal app for MacOs seems to crash if not started from commandline, we don't know the reason yet.
  • IOS export doesn't work yet.

We would greatly appreciate your feedback on any bugs, usability issues, or missing documentation so that we can continue to improve this project.

While the project is still a work in progress, we have already begun planning a roadmap for future improvements in Godot Kotlin: #502

If you'd like to see an example of how to use Kotlin in your Godot project, we have ported the GDQuest demo to Kotlin, and you can find it here: https://github.com/utopia-rise/godot-kotlin-3d-demo

Regarding GDExtension, we do plan to support it in the future. However, please understand that this transition is not straightforward and will take some time before it becomes a reality. Expect the next releases to be module-only.

Artifacts:
The files prefixed with godot-kotlin-jvm_editor_ are the editors.

godot-kotlin-jvm_export_templates_0.7.0-4.1.2.tpz is the archive for all export templates .
See exporting documentation on how to use it.

Don't forget to change your build.gradle configuration with the following line:

plugins {
    id("com.utopia-rise.godot-kotlin-jvm") version "0.7.0-4.1.2"
}

Changelog:

  • Update kotlin version to 1.7.20 by @chippmann in #367
  • Fix registration of empty abstract classes extending godot classes by @chippmann in #368
  • feat: Create MacOs editor app on release by @piiertho in #374
  • Set Godot to 4.0 beta 5 instead of master by @CedNaru in #383
  • 4.0/fix compilation errors by @chippmann in #377
  • Implement new rpc configs by @chippmann in #369
  • Remove signal prefix requirement by @chippmann in #388
  • Feature/4.0/implement vector4 by @piiertho in #393
  • Fix api doc generation for parameters by @chippmann in #382
  • New memory management using instance bindings by @CedNaru in #358
  • Add clang format by @CedNaru in #402
  • fix: engine_call_appendArray signature in packed_float_64_array_bridge.cpp by @piiertho in #403
  • fix: Invalid use of class index in TransferContext::create_native_object by @piiertho in #404
  • Feature/implement projection core type by @piiertho in #399
  • feat: implement Rect2i core type kotlin class by @piiertho in #400
  • Bugfix/4.0/fixed arg count when reading args by @piiertho in #405
  • fix: Add missing core types to entry generator. by @piiertho in #406
  • bugfix(4.0): Add new core types to api generation by @piiertho in #407
  • bugfix(4.0): replace references to godot.Reference by godot.RefCounted in entry gen and intellij plugin by @piiertho in #410
  • bugfix(api-gen): do camel case conversion for properties after replacing '/' bt '_' by @piiertho in #409
  • bugfix(4.0): set KotlinBinding's KtObject if owner is not RefCounted by @piiertho in #408
  • Minimum size buffer adapted to Projection type by @CedNaru in #411
  • bugfix/4.0/get-instance-binding-when-no-existing-binding by @piiertho in #412
  • chore(4.0): update module to godot 4.0 beta 10 by @piiertho in #415
  • fix: initialize callable bridge in BridgeManager by @piiertho in #413
  • Chore/4.0/update api gen for new api by @piiertho in #416
  • bugfix: Remove usage of GD.min favor of Kotlin.math.min GarbageCollector by @piiertho in #418
  • fix: Make call to KtObject::onDestroy only when instance is still valid (is not weak) by @piiertho in #419
  • bugfix: fix invalid delete in MemoryBridge::decrement_ref_counter by @piiertho in #420
  • bugfix(4.0): avoid delete KtObject in lock. Fix wrong KotlinInstance instantiation by @piiertho in #421
  • feat(4.0): implement StringName::toString method by @piiertho in #423
  • bugfix(4.0): Delete KtObject when destroying instance binding without script instance by @piiertho in #422
  • bugfix(4.0): delete all native core types in MemoryBridge::unref_native_core_type by @piiertho in #424
  • bugfix: proper instantiation and deletion of KotlinLanguage to avoid memory leak by @piiertho in #425
  • bugfix(4.0): reset KtObject's initConfig after checking if need bind by @piiertho in #426
  • bugfix(4.0): Move reference and init_ref logic in BindingManager by @piiertho in #428
  • chore(4.0): update to godot beta 12 by @piiertho in #429
  • chore(4.0): update array api with new godot 4 methods by @piiertho in #430
  • Extract constants from api-gen to separate project and use it in entry-gen and IDE-Plugin by @chippmann in #432
  • Feature/4.0/default values from instance by @piiertho in #434
  • Make entry gen fully language independent by @chippmann in #433
  • Chore/4.0/update gut to 4.0-RC6 compatible and godot to 4.0-stable by @piiertho in #436
  • Drop default value extraction for scripts by @chippmann in #437
  • Update/Fix property hints by @chippmann in #439
  • Avoid singletons check when gc cleanup by @piiertho in #440
  • Fix update export by @chippmann in #448
  • Fix reloading by @chippmann in #451
  • Gradle 8 compatibility by @chippmann in #455
  • Generate registration files and add support for library creation by @chippmann in #441
  • Add function args count check by @chippmann in #453
  • Support exporting of types extending node by @chippmann in #449
  • Chore/cherry pick from godot 3 version by @chippmann in #457
  • feat(4.0): implement signal api and cpp-jvm protocol for them by @piiertho in #462
  • 4.0/graal jni configs by @piiertho in #463
  • Feature/4.0/update core types by @piiertho in #465
  • chore: update to godot 4.1 by @piiertho in #472
  • feat(4.0/api-gen): Use meta from api json for int and float while gen...
Read more

0.6.2-3.5.2

17 Jul 06:51
e18f14d
Compare
Choose a tag to compare

The files prefixed with godot-kotlin-jvm_editor_ are the editors.
godot-kotlin-jvm_editor_server_*.zip is a headless editor which you can use for CI/CD.
The other files are export templates needed for exporting your game. See exporting documentation on how to use them.

Changelog: