All Projects → utopia-rise → Godot Kotlin Native

utopia-rise / Godot Kotlin Native

Licence: mit
Kotlin bindings for Godot Engine

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Godot Kotlin Native

GodotDiscordSDK
A Discord Game SDK wrapper for Godot, written in C.
Stars: ✭ 40 (-78.49%)
Mutual labels:  wrapper, godot, godot-engine
Pgsgp
Play Games Services plugin for Godot Game Engine 3.2 - Android
Stars: ✭ 130 (-30.11%)
Mutual labels:  godot, godot-engine
Godot Ink
Ink integration for Godot Engine.
Stars: ✭ 129 (-30.65%)
Mutual labels:  godot, godot-engine
Godot Syntax Themes
Syntax themes for the Godot Engine script editor
Stars: ✭ 140 (-24.73%)
Mutual labels:  godot, godot-engine
Inkgd
Implementation of inkle's Ink in pure GDScript for Godot, with editor support.
Stars: ✭ 118 (-36.56%)
Mutual labels:  godot, godot-engine
Gamedev4noobs
Olá, sejam bem-vindos ao repositório _gamedev4noobs_ do Estúdio Vaca Roxa. O propósito desse repositório, além de contribuir para o projeto 4noobs, é ensinar o básico do desenvolvimento de jogos para iniciantes. Apresentando boas práticas e insumos para criar games incríveis.
Stars: ✭ 122 (-34.41%)
Mutual labels:  godot, godot-engine
Youtube Music
🎵 A Mac app wrapper for music.youtube.com
Stars: ✭ 2,097 (+1027.42%)
Mutual labels:  wrapper, osx
Qurobullet
A powerful 2D projectile system module for Godot!
Stars: ✭ 78 (-58.06%)
Mutual labels:  godot, godot-engine
Voxel Core
Voxel plugin for the Godot game engine!
Stars: ✭ 148 (-20.43%)
Mutual labels:  godot, godot-engine
Desktop Google Keep Osx
A Super Simple Desktop Client for Mac OSX Built in Javascript and MacGap
Stars: ✭ 159 (-14.52%)
Mutual labels:  wrapper, osx
Godot card engine
A plugin for Godot to create card based games
Stars: ✭ 160 (-13.98%)
Mutual labels:  godot, godot-engine
Godotrogueliketutorial
A guide to build a simple Roguelike game with Godot engine.
Stars: ✭ 117 (-37.1%)
Mutual labels:  godot, godot-engine
Godot3 procgen demos
Exploring Procedural Generation algorithms in Godot
Stars: ✭ 85 (-54.3%)
Mutual labels:  godot, godot-engine
Gdscript Docs Maker
Create documentation and class references from your Godot GDScript code
Stars: ✭ 121 (-34.95%)
Mutual labels:  godot, godot-engine
Godot Demos
Dozens of free and open source demos for the Godot game engine
Stars: ✭ 1,231 (+561.83%)
Mutual labels:  godot, godot-engine
Pixelorama
A free & open-source 2D sprite editor, made with the Godot Engine! Available on Windows, Linux, macOS and the Web!
Stars: ✭ 2,535 (+1262.9%)
Mutual labels:  godot, godot-engine
Godot Jigglebones
An addon that brings jigglebones to Godot Engine 3.0.
Stars: ✭ 175 (-5.91%)
Mutual labels:  godot, godot-engine
Gterm
Terminal emulator control for Godot engine
Stars: ✭ 58 (-68.82%)
Mutual labels:  godot, godot-engine
Godot Engine.file Editor
A Godot Engine addon that adds a File Editor for multiple file types editing. Create and Write plain text files, configuration files and csv files with custom visualizers and previews. Also supports file translations!
Stars: ✭ 70 (-62.37%)
Mutual labels:  godot, godot-engine
Chart Gd
Animated charts for Godot Engine
Stars: ✭ 151 (-18.82%)
Mutual labels:  godot, godot-engine

Kotlin GDNative Logo

Kotlin/Native binding for the Godot Game Engine

Overview

This is a Kotlin language binding for the Godot game engine. It uses GDNative to interact with Godot's core api's. The binding provides you Godot API's as Kotlin classes, so you can write your game logic completely in Kotlin. It will be compiled into a dynamic library using Kotlin/Native. You don't have to worry about any binding logic. Just write your game scripts like you would for GDScript or C# but with all the syntactic sugar of kotlin.

GitHub GitHub Workflow Status

Important notes

This version of the binding is currently in Alpha state and by no means production ready!

This state will not change in the near foreseeable future. The Kotlin Native performance is not where it needs to be to make this binding efficient. Currently, the build times are incredibly slow due to the lack of incremental build support in Kotlin Native. Also, the runtime performance is much slower than GDScript in many cases.
The only case where this binding shines at the moment is in computation heavy scenarios like implementing an A* pathfinding algorithm where not many calls through the cinterop layer of K/N are necessary. In all other cases were many calls are needed, like Input checking and small logic in function like _process, the performance is not great because of the current performance of the K/N cinterop layer.
We were and are in touch with JB regarding those issues on youtrack and slack: KT-40652 and KT-40679

To still be able to use kotlin in a performant way, we started another project (godot-jvm) which leverages an embedded JVM to use kotlin on the JVM rather than native. On our first tests, this increases performance dramatically and one can leverage the full JVM ecosystem. Head over there to see development updates.
This binding will not die though. We will provide bugfixes for existing bugs if necessary, keep it as up to date as our time allows us to do, but we will not improve tooling or add new features until the performance of K/N is more acceptable.

Documentation

One can find the documentation for this binding here.

Developer discussion

Ask questions and collaborate on Discord: https://discord.gg/qSU2EQs

Setting up IntelliJ IDEA for local builds or contribution

  1. Add godot.kotlin.dev to ~/.gradle/gradle.properties (on Windows you might need to stop any Gradle daemons running for this property to be picked up)
  2. Run the initial build: ./gradlew publishToMavenLocal (this will take a while)
  3. In IntelliJ IDEA, import the root build.gradle.kts.
  4. After importing the main binding, in the Gradle sidebar in IntelliJ IDEA, import the build.gradle.kts of the sample you want to import. (repeat for every sample you want to develop)

Contribution Guidelines:

  • CodeStyle:
    We enforce the code style to match the official kotlin coding conventions. Read there on how to set those up for your IDE.
    We will enforce this later on through CI and linting.
  • Branching:
    We do branching like described in git-flow.

Each Issue has a Maintainer that is the "supervisor" for the general topic the issue belongs to. Discuss implementation details with this maintainer.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].