Multiplatform Kotlin Game Engine
Accepting Donations/Sponsorship via Bitcoin: bc1qfmnd2jazh6czsuvvvy5rc3fxwsfvj6e8zwesdg
In maintenance mode. Soywiz (the founder/primary lead/developer) has retired from maintaining this project (2023/07/27).
Currently this project is only being maintained by a handful of people who may/may not be as familiar with the architecture.
Do not expect any major updates in the future and expect less support if you do decide to use this project.
We are open for pull requests if there are any issues you'd like to fix yourself.
KorGE is a modern multiplatform game engine for Kotlin. Features include:
- Hot Reloading
- KorGE supports HotReloading to see changes immediately without having to restart the application
- KProject support
- Share & re-use source code and resources via GitHub
- Debugger
- Live-debug your games
- 100% Kotlin
- KorGE is fully written in Kotlin and designed from the ground up to embrace modern and easy coding styles
- Real native multiplatform
- KorGE gradle plugin allows to target each platform natively: JVM for Android, JS for the Web and native code for iOS and Desktop
- Quick installation
- Install the KorGE IntelliJ Plugin or clone the “Hello World!” project and start making your own game in less than a minute
- Fully productive
- Since KorGE targets the JVM, you can develop your game, try it, debug it and test it using IntelliJ IDEA
- Tons of features
- KorGE is just the last layer of a larger stack (Korlibs) for multimedia development
- Small footprint
- KorGE has a very small footprint. It has no external dependencies and only uses the libraries available on each platform
For more information, visit:
KorGE and all the other korlibs in a single monorepo.
To use this version in other projects,
you have to publish it locally to mavenLocal,
and then use 999.0.0.999
as version:
./gradlew publishToMavenLocal
If you want to make changes and easily try things.
You can run the korge-sandbox
module that runs
the src/commonMain/kotlin/Main.kt
file;
you can make experiments there:
./gradlew :korge-sandbox:runJvm
./gradlew :korge-sandbox:runJs
./gradlew :korge-sandbox:runNativeDebug
./gradlew :korge-sandbox:runNativeRelease
./gradlew :korge-sandbox:runAndroidRelease
./gradlew :korge-sandbox:runIosDeviceRelease
Traditionally all the KorGE modules were published to central and their source code was available here, now they are available via kproject in these repositories:
- https://github.com/korlibs/korge-box2d
- https://github.com/korlibs/korge-ext/tree/main/korge-collision (Simple collisions)
- Basic Tweens & animators (Integrated in KorGE)
- https://github.com/korlibs/korge-swf
- Basic TileSet + TileMap functionality (Integrated in KorGE)
- https://github.com/korlibs/korge-ldtk
- https://github.com/korlibs/korge-tiled
- PNG, QOI, ASE, PSD, Native Decoders (Integrated in KorGE)
- https://github.com/korlibs/korge-image-formats/tree/main/korim-jpeg (Pure Kotlin JPEG Encoder/Decoder)
- https://github.com/korlibs/korge-image-formats/tree/main/korim-qr (Pure Kotlin QR Generator)
- MP3, WAV (Integrated in KorGE)
- https://github.com/korlibs/korge-audio-formats (MOD, XM, S3M, MIDI (WIP), OPUS (WIP))
- https://github.com/korlibs/korge-ext/tree/main/korge-i18n (I18N support)
- https://github.com/korlibs/korge-ext/tree/main/korma-astar (AStar (A*) for finding paths in 2D grids)
- https://github.com/korlibs/korge-k3d/ (3D support on top of KorGE)
- https://github.com/korlibs/korge-particles/ (Particles support in
.pex
format)
- https://github.com/korlibs/korge-lipsync (Rhubarb LipSync integration with resource processor)
- https://github.com/korlibs/korge-parallax (Pseudo 3D Parallax Effect)
- https://github.com/korlibs/korge-ext/tree/main/korge-docking (Docking to window corners
dockedTo
) - https://github.com/korlibs/korge-ext/tree/main/korge-ktree (Old KTree serialization)
- https://github.com/korlibs/korge-ext/tree/main/korge-masked-view (Old Masked View (now we can use
view.mask
)) - https://github.com/korlibs/korge-ext/tree/main/korge-text2 (Old Text engine)
- https://github.com/korlibs/korge-ext/tree/main/korge-bus (Bus / SyncBus)
- https://github.com/korlibs/korge-ext/tree/main/korge-frameblock (
frameBlock(60.fps) { while (true) frame() }
utility function) - https://github.com/korlibs/korge-ext/tree/main/korge-length (Support physical-based units: cm, inches, percentages, etc.)
- https://github.com/korlibs/korge-ext/tree/main/korge-shape-ext (Support triangulation, spatial pathfinding, TRA* & shape2d operations)
- https://github.com/korlibs/korge-ext/tree/main/korge-bus (A Message Bus implementation)
- https://github.com/korlibs/korge-monetization/tree/main/korge-admob (Admob integration)
- https://github.com/korlibs/korge-jitto (Jitto, the programmatic logo and mascot)
- https://github.com/korlibs/korge-mascots (Koral & Gest)
- https://github.com/korlibs/korge-hello-world (Simple Hello World)
- https://github.com/korlibs/korge-hello-world-client-server (Client + Ktor Server + Common module)
- https://github.com/korlibs/korge-fleks-hello-world (Fleks Hello World)
- https://github.com/korlibs/korge-starter-kit-rpg (RPG Starter Kit)
- https://github.com/korlibs/korge-starter-kit-platformer (Platformer Starter Kit)
- https://github.com/korlibs/korge-starter-kit-pointandclickadventure (Point & Click Adventure Starter Kit)