Releases: utopia-rise/godot-kotlin-jvm
0.11.0-4.3
New 0.11.0-4.3 release for Godot Kotlin.
- The export template archive .tpz should now properly work in the editor. Note that the internal name of the editor and templates has been changed to
4.3.stable.jvm.0.11.0
to avoid name conflict with the official4.3.stable
release. - The coroutine
Signal.await()
method now works properly on Nodes. - The API exposed to the Java language has been improved. Singletons are now truly static and Callables are easier to create (example in documentation).
- Fix an error that could cause bugs when using PackedVector4Array with registered methods or properties.
Don't forget to change your build.gradle configuration with the following line. Be careful, we are now using the same version as Godot so it became 0.11.0-4.3
instead of 0.11.0-4.3.0
:
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.11.0-4.3"
}
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.11.0-4.3.tpz
is the archive for all export templates . See exporting documentation on how to use it.
What's Changed
- Adding badges to the readme. by @CedNaru in #708
- Update IDE plugin to 2024.2 by @chippmann in #707
- Fix signal.await() when signal belongs to a Node by @CedNaru in #710
- Maximize disk space on android CI by @CedNaru in #716
- Make API more friendly to Java by @CedNaru in #712
- Add documentation for Callable + misc improvements by @CedNaru in #715
- Rework Variant.h by @CedNaru in #714
- Fix template usage by @CedNaru in #713
Full Changelog: 0.10.0-4.3.0...0.11.0-4.3
0.10.0-4.3.0
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
- Merge GdKotlin rework into master. by @CedNaru in #620
- Fix GUT tests by @chippmann in #631
- Add callable convenience functions by @chippmann in #629
- Fix extension method name by @chippmann in #628
- fix(doc): place update ios jdk contribution guide to the right place by @piiertho in #623
- Rework Memory manager to make it more threadsafe. by @CedNaru in #626
- enh: Simplify cpp core type buffer protocol read and write by @piiertho in #630
- Support multidex and fix export for android 14 devices by @chippmann in #625
- Call voidMethod for on_destroy by @CedNaru in #636
- Fix PathScript caching. by @CedNaru in #635
- Improve ci/cd cache setup by @chippmann in #638
- Add better jni error reporting inside the godot editor by @chippmann in #627
- Update to kotlin 2.0 by @chippmann in #641
- fix function moveToward by @datouzhu125 in #649
- fix: proper ios template directory layout by @piiertho in #644
- fix(intellij-plugins): remove unused declaration extensions in psiClass.kt by @piiertho in #654
- Update setup documentation in contribution guide by @gabryon99 in #639
- Fix exception describe by @chippmann in #642
- Fix fat jar creation if users project defines a version by @chippmann in #656
- enh(api-gen): generate kdoc from api json by @piiertho in #534
- Feature/make compile with godot 4.3 rc3 by @piiertho in #659
- feat: Implement KotlinCallableCustom to enable lambda callables by @piiertho in #657
- Update core types and unit tests for 4.3 by @CedNaru in #665
- Feature/implement new core types 4.3 by @piiertho in #664
- Fix scons cache action path by @chippmann in #669
- Update kotlin to
2.0.20
and update other dependencies by @chippmann in #662 - Add documentation on how to use the project state from a specific branch by @chippmann in #667
- MemoryManager rework by @CedNaru in #661
- Improve script cache by @CedNaru in #670
- Add/Fix missing GD singleton methods. by @CedNaru in #673
- Update documentation regarding minimum android build-tool version by @chippmann in #674
- Fix property type generation by @CedNaru in #672
- Don't fetch default value for Object properties by @CedNaru in #671
- Make jre folder platform dependent by @chippmann in #632
- Limit core type usage on registered properties by @chippmann in #668
- Fix closing of module by @CedNaru in #680
- Fix default value retrieval for resources and node paths by @chippmann in #675
- Fix custom classes hint string by @chippmann in #678
- fix(graal): set right signature for GDPrint$Bridge::getStacktrace in graal jni config by @piiertho in #683
- Create and upload final binaries on master builds by @chippmann in #681
- Fix method pointer fetching from API + use hashes. by @CedNaru in #687
- Make VariantArray and Dictionary constructors visible to Java by @CedNaru in #685
- Improve API generation by @CedNaru in #688
- Optimize memory manager by @CedNaru in #682
- Rework Variant.kt by @CedNaru in #684
- RID is no longer a native coretype by @CedNaru in #689
- Add coroutines await() to signals by @CedNaru in #660
- Improve JNI exception handling and logging by @CedNaru in #691
- Remove duplicate classes by @CedNaru in #697
- Improve method and signal name caching by @CedNaru in #696
- Reenable Editor Plugin. by @CedNaru in #690
- Fix gradle task setup by @chippmann in #698
- Update doc regarding caching by @CedNaru in #699
- Make signal delegate static to avoid memory allocation by @CedNaru in #695
- Improve signal syntax by @CedNaru in #700
- Add tests on exported projects to our CI/CD pipeline by @chippmann in #679
- Fix coroutines gradle flag name by @chippmann in #702
- Add additional registered properties checks by @chippmann in #703
- Add some coroutines utility functions by @chippmann in #704
- Bump to 0.10.0 by @CedNaru in #701
Full Changelog: 0.9.1-4.2.2...0.10.0-4.3.0
0.9.1-4.2.2
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
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
- Fix export iOS template artifact by @gabryon99 in #586
- Add README.md for documentation and fix some grammar typos by @gabryon99 in #589
- Fix gdj update in editor with custom android gradle project in godot by @chippmann in #588
- Bump kotlin version to 1.9.23 by @chippmann in #587
- Show system alert dialog if system is misconfigured by @chippmann in #575
- Fix reflection usage in exported projects by @chippmann in #572
- [Bugfix] Fix typed array registration by @chippmann in #574
- Rework KotlinLanguage to fix editor script operations by @CedNaru in #579
- Add support for Java source files by @CedNaru in #592
- Source files are now exported without the code. by @CedNaru in #593
- Fix export by @CedNaru in #598
- Add new core methods by @CedNaru in #600
- Improve ksp error handling upon compilation issues by @chippmann in #607
- Update to Godot 4.2.2 by @CedNaru in #612
- Kotlin to Godot vararg optimization by @CedNaru in #613
Full Changelog: 0.8.2-4.2.1...0.9.0-4.2.2
0.8.2-4.2.1
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:
0.8.1-4.2.0
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
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
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
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
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...