Skip to content

0.7.0-4.1.2

Compare
Choose a tag to compare
@github-actions github-actions released this 12 Oct 07:44

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 generating kotlin api by @piiertho in #431
  • feat: Add iOS support by @piiertho in #471
  • Initial java support by @chippmann in #450
  • Update documentation for godot 4 by @chippmann in #476
  • Fix bindings when changing/removing scripts from objects by @CedNaru in #461
  • Fix various small issues by @chippmann in #480
  • Streamlining: Remove JClass and ClassLoader from JavaInstanceWrapper by @CedNaru in #484
  • Unbind Singletons before JVM closes by @CedNaru in #485
  • Fix 4.x release pipeline and improve export templates by @chippmann in #474
  • chore: Update to godot 4.1.1-stable by @piiertho in #486
  • Fix api gen for static methods by @chippmann in #482
  • enh: Use DEV_ENABLED definition in cpp code by @piiertho in #475
  • Improve gradle setup and update ide plugin by @chippmann in #487
  • Fix enum property setter generation by @chippmann in #490
  • Improve error reporting when calling a method with too many args by @chippmann in #492
  • Fix max arg size by @chippmann in #493
  • Various fixes before 0.7 release by @CedNaru in #496

Full Changelog: 0.5.1-3.5.1...0.7.0-4.1.2