Releases: utopia-rise/godot-kotlin-jvm
0.13.1-4.4.1
New patch release for Godot Kotlin
Fix:
- Editor won't complain about missing bootstrap anymore.
- Android exports don't create duplicated resources anymore.
- BitFields/Enums from the Godot API is now visible to Java.
Changes:
- The Gradle build button has been improved and now stream the text of the currently running task instead of only displaying everything at once at the end.
- You can generate the embedded JVM from the editor using the same improved Gradle button.
Don't forget to change your build.gradle configuration with the following line.
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.13.1-4.4.1"
}
What's Changed
- Don't inline bitfields by @CedNaru in #820
- Improve Gradle Task Runner by @CedNaru in #819
- Remove explicit registration entry copy as it creates a duplicate entry by @chippmann in #822
- Update to 0.13.1 by @CedNaru in #821
Full Changelog: 0.13.0-4.4.1...0.13.1-4.4.1
0.13.0-4.4.1
New minor update for Godot Kotlin
Changes:
- The bootstrap.jar is gone, the editor can now run by itself !
- Many API methods taking a StringName as parameter can now accept a regular String instead. It's automatically transformed into a StringName and cached for efficiency.
- Most Godot Enum values are now shorter, removing redundant words from the encapsulating Enum.
Error.ERR_PARAMETER_RANGE_ERROR -> Error.PARAMETER_RANGE
- The DocString documentation formatting has been improved.
- Mutation helpers for PackedArrays have been added to the API.
- Added a Gradle task to generate the embedded JVM
Fixes:
- JVM modules like java.sql can now be used by your Godot projects.
- The IDE plugin templates use the correct version.
- Non-ascii characters are properly displayed when printing to Godot.
- Reloading the project no longer crashes if you have several registered scripts in the same file.
- Android exports should work again.
Don't forget to change your build.gradle configuration with the following line.
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.13.0-4.4.1"
}
What's Changed
- Use the correct parent for ClassLoader by @CedNaru in #805
- Run android builds in parallel and minor improvements by @chippmann in #771
- Remove editor bootstrap by @CedNaru in #804
- API generator rework by @CedNaru in #781
- Make project.godot template version dynamic. by @CedNaru in #807
- Only generate one PathScript if 2 or more are in the same source file by @CedNaru in #810
- Parse JNI Strings as utf8 by @CedNaru in #809
- GH-811 GH-813 Copy missing resource files for android exports by @chippmann in #814
- Add GenerateEmbeddedJreTask to generate JRE by @chippmann in #740
- GH-801 Exclude jvm dir from export by @chippmann in #815
- GH-812 Fix missing types on desugaring in r8 by @chippmann in #816
- Update ide plugin for 2025.1 by @chippmann in #818
- Update to 0.13.0 by @CedNaru in #817
Full Changelog: 0.12.3-4.4.1...0.13.0-4.4.1
0.12.3-4.4.1
Update to Godot 4.4.1 for Godot Kotlin
Features:
- You can now pass several JVM arguments to your project. See command-line section in the documentation.
- Godot Object now has core methods like
_set, _get, getPropertyList, _toString, etc...
Fixes :
- Native core type should no longer leak.
- Fix crash when using new PackedVectorArray batch conversion
- Exports are no longer missing internal package
Don't forget to change your build.gradle configuration with the following line.
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.12.3-4.4.1"
}
What's Changed
- Fix PackedVectorArray allocation by @CedNaru in #793
- Remove old patch by @CedNaru in #791
- Add missing core Object methods. by @CedNaru in #792
- Implement multiple custom jvm arguments. by @CedNaru in #794
- Call variant destructor by @CedNaru in #796
- Include internal module in bootstrap generation. by @CedNaru in #797
- Add typing to JVM containers from buffer. by @CedNaru in #795
- Update to Godot 4.4.1 by @CedNaru in #798
Full Changelog: 0.12.2-4.4...0.12.3-4.4.1
0.12.2-4.4
Small fix release for Godot Kotlin/JVM:
Fixes :
- Scripts should be properly reloaded by the editor when modified by an external program, you won't risk overwriting your code with an old copy of it anymore.
- Fix crash when trying to extend a JVM script from the editor.
Improvements:
- More efficient memory management of pointer based coretypes (Array, Dictionary, NodePath, etc...).
- An efficient batch conversion to a JVM Array has been added for PackedVectorArrays.
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.12.2-4.4
instead of 0.12.1-4.4
:
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.12.2-4.4"
}
What's Changed
- Fix script reloading by @CedNaru in #788
- Handle null pointers in get_global_class_name by @CedNaru in #787
- Use PagedAllocator for native core types by @CedNaru in #783
- Add batched conversion to PackedVector arrays by @CedNaru in #784
- Update to 0.12.2 by @CedNaru in #790
Full Changelog: 0.12.1-4.4...0.12.2-4.4
0.12.1-4.4
New 0.12.1-4.4 release for Godot Kotlin
Breaking Changes:
- Internal packages of the Godot library have been changed. Note that many occurrences of
godot
have became eithergodot.core
godot.api
. - Names of signal parameters should now be set in the @RegisterSignal annotation.
kt @RegisterSignal val mySignal by signal1<Boolean>("reverse")
becomeskt @RegisterSignal("reverse") val mySignal by signal1<Boolean>()
. - The jar reloading logic has been moved to the C++ code for more stability.. Note that a new ./jvm/ directory containing the jars will be created in your project. You should now place your embedded JVM there as well.
Changes:
- Upgraded to Kotlin 2.1 and Gradle 8.13. Be aware that we had the change the internals of the IDE plugin to handle the new K2 compiler, new bugs might appear. Please report them if this is happening.
- Added new coroutines dispatcher that can run on Godot's main thread or its thread pool.
- JVM Scripts and Jars now have an internal UID based on their paths. For now, the expected behavior when moving/renaming them outside the Godot editor is expected to be the same as in Godot 4.3. Later, we plan to base the UID on the registered script name to make it more stable.
- Added Support Typed Dictionary
- A popup will now appear if the build of Godot you are using does not match your JVM project.
- Added missing TransformXD operators.
- Added missing sort() method in Dictionary
Fixes:
- The Intellij plugin should now work on the latest versions.
- Fixed export of Node inside Array and Dictionary
- Fixed unexpected behavior that might occur when a script had a companion object or static field.
- Fixed property registration when the annotation is in a parent class.
- Fixed registration errors when using script from a different module or library
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.12.1-4.4
instead of 0.11.0-4.3.0
:
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.12.1-4.4"
}
What's Changed
- Declare project status as beta by @chippmann in #717
- Fix macos build by @CedNaru in #719
- Faster API Generation by @CedNaru in #721
- Update kotlin to
2.0.21
and update gradle to8.10.2
by @chippmann in #722 - feat(coroutines): implement main thread and thread pool dispatchers by @piiertho in #725
- Add new common module by @CedNaru in #726
- CPP reloading by @CedNaru in #621
- Add JetBrains GameDev Days 2024 video on the docs' index by @gabryon99 in #720
- Scan after generating project by @CedNaru in #723
- Add Internal module by @CedNaru in #729
- Update api-differences.md by @ShalokShalom in #748
- Fix CI by @CedNaru in #749
- Clarify JAVA_HOME for MacOS users by @CedNaru in #751
- Split core into core, api and extension modules by @CedNaru in #746
- chore: Move signals parameter names to annotation by @piiertho in #750
- feat(coroutine): Add LambdaCallable::onCancel to cancel coroutine when callable is cancelled by @piiertho in #732
- Fix hint annotation check for hints higher up in class hierarchy by @chippmann in #737
- Fix setting retention from library settings by @chippmann in #738
- Update dependencies and IDE plugin by @chippmann in #758
- Simplify Bootstrap by @CedNaru in #768
- Add documentation on known issue with microsofts jdk on windows by @chippmann in #769
- Update to Godot 4.4 by @CedNaru in #759
- Fix ide plugin deployment and remove obsolete ide plugin specific matrix by @chippmann in #770
- Make ide plugin k2 compatible by @chippmann in #777
- Update 0.12.1-4.4 by @CedNaru in #772
- Try to fix CI by @CedNaru in #780
Full Changelog: 0.11.0-4.3...0.12.1-4.4
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: