KorGE Game Engine. Multiplatform Kotlin Game Engine

Overview

KorGE

Multiplatform Kotlin Game Engine

Build Status Maven Central Discord

Support korge

If you like korge, or want your company logo here, please consider becoming a patreon sponsor ★,
in addition to ensure the continuity of the project, you will get exclusive content.

Info about the project:

https://korge.org

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

Comments
  • Red images

    Red images

    Every image i create becomes red. For example, here is screenshot of Korge HelloWorld. image

    Target: jvm OS: ArchLinux Program Output: screenWidth: 3840, screenHeight: 1080, winX=1664, winY=284, width=512, height=512 VI: native@0x7fdb38805b00, d: native@0x7fdb387e2740 (com.sun.jna.platform.unix.X11$Display@387ea71b), w: 0x7800001, glc: native@0x7fdb38805d90 GL_VENDOR: X.Org GL_VERSION: 4.6 (Compatibility Profile) Mesa 20.1.3 GL_EXTENSIONS: 302 OpenglAG: Created program BatchBuilder2D.Premultiplied.Tinted with id 1 because contextVersion: -1 != 0 GameWindow.close GameWindowCoroutineDispatcher.close GameWindow.close GameWindowCoroutineDispatcher.close

    bug question 
    opened by leadpogrommer 31
  • Add relative positioning for views

    Add relative positioning for views

    Add special functions for views that let you position a view relative to other view (align this view's left/right side to other view's left/right side and this view's top/bottom side to other view's top/bottom side). Also add tests for centering and positioning functions and add some fixes.

    This may cover many cases for layouts (#129). Use of these functions and simple containers (for grouping views) will cover (almost) all cases for layouts.

    opened by RezMike 26
  • KorGe native release compilation ---> self contained not possible?

    KorGe native release compilation ---> self contained not possible?

    Hey there,

    when I compile to native and send the app, no one is able to open it because of missing library errors. How can that be? I was under the impression that a Korge app compiled to native is selfcontained, no?

    Here's a picture a friend made to show what happens when he tries to open it:

    IMG_4534

    check 
    opened by Lykdraft 17
  • [3D] Performance degradation for JVM

    [3D] Performance degradation for JVM

    Hi Carlos,

    after updating to KorGE 2.0.6, I noticed my 3D app https://github.com/krzema12/stair-lift-simulator works significantly slower (like 2-5 FPS now) comparing to rather fluent experience on 2.0.0.2. On JS, it still works smoothly. I didn't check other platforms.

    To reproduce, please see immediately before and after this commit: https://github.com/krzema12/stair-lift-simulator/commit/90a3fc51f517e69b92ea1c7d94600e5e42b4c59e . I changed just the version.

    Best, Piotr

    bug check 
    opened by krzema12 14
  • Allow using pre-multiplied alpha when blending

    Allow using pre-multiplied alpha when blending

    (Sorry for the frequent edits - I kept realizing my previous thought was wrong.)

    Currently rendering to texture results in rendering with straight alpha, which doesn't allow a number of blending mode to be implement correctly.

    For example, the color of the OVER operator should be {C_{o}={\frac {C_{a}\alpha {a}+C{b}\alpha _{b}(1-\alpha _{a})}{\alpha _{o}}}}, however that's not possible with straight alpha because there's no way to divide by {\alpha _{o}}.

    Another example is the PLUS_LIGHTER operator, though it doesn't seem formally defined. But if we do it with straight alpha, the background would become unexpectedly darker (unless it's opaque) every time we blend onto it, due to color being multiplied with alpha every time. However with premultiplied alpha, we won't have such an issue. See also the code on https://jakearchibald.com/2021/dom-cross-fade/ :

    // Red 50% opacity
    const source = [1, 0, 0, 0.5];
    // Blue 50% opacity
    const destination = [0, 0, 1, 0.5];
    
    // plus-lighter also works with premultiplied colours:
    const premultipliedSource = multiplyAlpha(source);
    const premultipliedDestination = multiplyAlpha(destination);
    
    const premultipliedResult = premultipliedDestination
      // But then the pixels are just added together:
      .map((channel, i) => channel + premultipliedSource[i])
      // Clamped to 0-1:
      .map((channel) => {
        if (channel < 0) return 0;
        if (channel > 1) return 1;
        return channel;
      });
    
    // Then, the alpha is unmultiplied:
    const result = unmultiplyAlpha(premultipliedResult);
    
    opened by zhanghai 13
  • (Invalid) BlendMode.ADD not working in Container with IdentityFilter

    (Invalid) BlendMode.ADD not working in Container with IdentityFilter

    I tried to find the answer in Korge code but couldn't, so I'm posting here in the hope that you may know how to properly do it in Korge.

    Basically I have a scenario where there are two overlapping 50% transparent white objects on an opaque black background - if we follow the painter's algorithm, it would give us a greyish result because the lower 50% transparent whtie is first blended over the opaque black background to produce grey, then the higher 50% transparent white is blended over this grey, producing a lighter grey.

    However, in this case I would like to blend the two 50% transparent whtie objects first, to produce an opaque white, and then blend that white onto black so that it stays white. It seems to me I need to somehow render the two objects together to a "layer" first, but I wasn't able to find something similar for it in Korge. Do you know if there's anything that allows doing this in Korge?

    (Note that the actual scenario is two similar but different overlapping images (bitmaps) crossfading together over an opaque background - so considering the animation, an efficient solution would be preferred.)

    opened by zhanghai 13
  • Collada 3D models not displayed for JavaScript platform

    Collada 3D models not displayed for JavaScript platform

    I'm running https://github.com/korlibs/korge-samples/tree/master/sample/s3d like this:

    ./gradlew :sample:s3d:runJs
    

    and the texture is displayed correctly: Screenshot from 2020-12-14 12-32-30

    but not the models used in "Monkey" or "Skinning": Screenshot from 2020-12-14 12-32-37

    Nothing interesting in JS console - this stuff is displayed from the very beginning, before opening some part of the demo with 3D model: image

    The COLLADA file is fetched: image

    but it contains Base64 content - maybe it's intended.

    For JVM, this sample app works as expected.

    Could you have a look please? :)

    bug regression 
    opened by krzema12 12
  • Aseprite tilemap support

    Aseprite tilemap support

    TileMap/TileSet functionality moved here: https://github.com/korlibs/korge/commit/28f37ce42065757566299bd4057f28fa54819583

    Implemented the spec diff from here: https://github.com/aseprite/aseprite/commit/95e6b5ddd6eed2ab80f8d2f19109ba4d9931ad5b

    Fixes https://github.com/korlibs/korge/issues/504

    opened by soywiz 11
  • IndexOutOfBoundsException when attempting to remove childView from container within suspend function

    IndexOutOfBoundsException when attempting to remove childView from container within suspend function

    Actual behavior: intermittently, the following code:

                val removePastViewsIter = pastInstanceViews.iterator()
                while (removePastViewsIter.hasNext()) {
                    val entry = removePastViewsIter.next()
                    if (container.children.toList().contains(entry.key)) container.removeChild(entry.key)
                }
    

    * note that removePastViews is a mutableMapOf<View, UUID>()

    * also note that container is assigned from containerRoot in main() = Korge() { }

    generates the following exception at container.removeChild(entry.key) :

    java.lang.IndexOutOfBoundsException: Index 145 out of bounds for length 145
    	at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
    	at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
    	at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
    	at java.base/java.util.Objects.checkIndex(Objects.java:359)
    	at java.base/java.util.ArrayList.get(ArrayList.java:427)
    	at com.soywiz.korge.view.Container.getChildAt(Container.kt:142)
    	at com.soywiz.korge.view.Container.get(Container.kt:197)
    	at com.soywiz.korge.view.View.removeFromParent(View.kt:1037)
    	at com.soywiz.korge.view.Container.removeChild(Container.kt:162)
    

    which appears to be due to the following code in View.kt:

        fun removeFromParent() {
            if (parent == null) return
            val p = parent!!
            for (i in index + 1 until p.numChildren) p[i].index--
            p._children?.removeAt(index)
            parent = null
            index = -1
        }
    

    Expected behavior: removeChild() removes child view without throwing exception.

    Suggestion: consider using iterator() within removeFromParent() rather than for() loop, as per (related to the topic of concurrency) : stack overflow: how to avoid ConcurrentModificationException kotlin

    Found on: Korge 2.0.7.1

    bug 
    opened by exertionriver 11
  • Error building multiplatform project with Korio 3.0.0 and kotlin 1.7.10

    Error building multiplatform project with Korio 3.0.0 and kotlin 1.7.10

    I have an issue in multiplatform project after updating korio dependency when running iOS-related build tasks (linkDebugFrameworkIosX64, linkDebugFrameworkIosX64 or linkPodDebugFrameworkIosFat):

    Module "com.soywiz.korlibs.korio:korio (com.soywiz.korlibs.korio:korio-iosx64)" has a reference to symbol kotlin.ranges/contains|-4285521416178503187[0]. Neither the module itself nor its dependencies contain such declaration.

    This could happen if the required dependency is missing in the project. Or if there is a dependency of "com.soywiz.korlibs.korio:korio (com.soywiz.korlibs.korio:korio-iosx64)" that has a different version in the project than the version that "com.soywiz.korlibs.korio:korio (com.soywiz.korlibs.korio:korio-iosx64): 3.0.0" was initially compiled with. Please check that the project configuration is correct and has consistent versions of all required dependencies.

    The list of "com.soywiz.korlibs.korio:korio (com.soywiz.korlibs.korio:korio-iosx64): 3.0.0" dependencies that may lead to conflicts:

    1. "stdlib: 1.7.10" (was initially compiled with "stdlib: 1.6.21")
    2. "org.jetbrains.kotlin.native.platform.CoreFoundation: 1.7.10" (was initially compiled with "org.jetbrains.kotlin.native.platform.CoreFoundation: 1.6.21")
    3. "org.jetbrains.kotlin.native.platform.Foundation: 1.7.10" (was initially compiled with "org.jetbrains.kotlin.native.platform.Foundation: 1.7.20-Beta")
    4. "org.jetbrains.kotlin.native.platform.Security: 1.7.10" (was initially compiled with "org.jetbrains.kotlin.native.platform.Security: 1.7.20-Beta")
    5. "org.jetbrains.kotlin.native.platform.darwin: 1.7.10" (was initially compiled with "org.jetbrains.kotlin.native.platform.darwin: 1.6.21")
    6. "org.jetbrains.kotlin.native.platform.posix: 1.7.10" (was initially compiled with "org.jetbrains.kotlin.native.platform.posix: 1.6.21")
    7. "org.jetbrains.kotlin.native.platform.zlib: 1.7.10" (was initially compiled with "org.jetbrains.kotlin.native.platform.zlib: 1.7.20-Beta")
    8. "org.jetbrains.kotlinx:atomicfu (org.jetbrains.kotlinx:atomicfu-iosx64): 0.18.3" (was initially compiled with "org.jetbrains.kotlinx:atomicfu (org.jetbrains.kotlinx:atomicfu-iosx64): 0.17.3")

    my project build.gradle is like:

    kotlin {
        android()
    
        ios()
        iosSimulatorArm64()
    
        cocoapods {
            summary = 'Kotlin shared library'
            homepage = 'https://github.com/JetBrains/kotlin'
            ios.deploymentTarget = '13.1'
            podfile = project.file('../iosApp/Podfile')
        }
    
        sourceSets {
            commonMain {
                dependencies {
                    implementation "com.soywiz.korlibs.korio:korio:3.0.0"
                    …
               }
            }
        }
    }
    

    Korio 2.7.0 works well. Korio 3.0.0-Beta7 works, too. But korio 3.0.0 gives errors, something is wrong with the versions of dependencies. I'm using kotlin 1.7.10.

    Serialization 1.4.0 is already released, but kotlin 1.7.20 is still in beta. After setting kotlin to 1.7.20-Beta, korio 3.0.0 is building ok. I don't think it's a good idea to link release-version library with another beta libraries.

    wait for response 
    opened by ArtRoman 9
  • Intellij does not recognize korge-dependencyMulti

    Intellij does not recognize korge-dependencyMulti

    I am using a recently created project via korge plugin, I tested as well using the Project Template with same results.

    After creating the project, add a dependency to korge using dependencyMulti (or dependency specifying commonMainApi). Use that dependency on code, like main.kt file. When running the project via ./gradle runJvm, the project compiles without issues, however the IDE, Intellij does not recognize the dependency added to provide code completion on other useful features. Intellij show error for the dependency files.

    As example I am using jackson library, but just to demonstrate the issue. I have seen the same issue with other dependencies.

    build.gradle.kts

    ...
    apply<KorgeGradlePlugin>()
    
    korge {
    	...
    	dependencyMulti("com.fasterxml.jackson.module:jackson-module-kotlin:2.11.0")
    	dependencyMulti("com.fasterxml.jackson.core:jackson-databind:2.11.0")
    
    // To selectively enable targets
    	targetJvm()
    	...
    }
    
    

    main,kt

    ...
    import com.fasterxml.jackson.databind.ObjectMapper
    
    suspend fun main() = Korge(width = 512, height = 512, bgcolor = Colors["#2b2b2b"]) {
    	val mapper = ObjectMapper()
    	println("Using external dependency, result=${mapper.writeValueAsString("testValue")}")
    
    	val minDegrees = (-16).degrees
    	...
    

    As reference: I was checking korge-samples repository. Intellij works fine for korlibs.luak dependency.


    Additional note: result of conversation about this issue on Discord channel

    I have received feedback via discord. I got a suggestion to try the following changes. However I was not able to make it work. At the same time this structure is completely different on how the project template is organized, doesn't seem a proper solution in the long run.

    Suggested build.gradle.kts content via discord.

    plugins {
        id("com.soywiz.korge")
    }
    
    korge {
        targetJvm()
        targetJs()
    }
    
    val kotestVersion: String by project
    val reflectionsVersion: String by project
    
    kotlin {
        sourceSets {
            all {
                languageSettings.useExperimentalAnnotation("kotlin.RequiresOptIn")
                languageSettings.useExperimentalAnnotation("kotlin.ExperimentalUnsignedTypes")
            }
    
            getByName("jvmTest") {
                dependencies {
                    implementation("io.kotest:kotest-assertions-core-jvm:$kotestVersion")
                    implementation("io.kotest:kotest-runner-junit5:$kotestVersion")
                    implementation("org.reflections:reflections:$reflectionsVersion")
                }
            }
        }
    }
    
    tasks.withType<Test> {
        useJUnitPlatform()
    }
    

    And the following settings.gradle.kts:

    pluginManagement {
        repositories {
            mavenLocal()
            maven("https://dl.bintray.com/korlibs/korlibs")
            maven("https://plugins.gradle.org/m2/")
            mavenCentral()
            google()
            maven("https://dl.bintray.com/kotlin/kotlin-dev")
            maven("https://dl.bintray.com/kotlin/kotlin-eap")
        }
    
        plugins {
            id("com.soywiz.korge") version "2.0.0.2"
        }
    }
    
    rootProject.name = "project"
    
    check 
    opened by Jhovanni 9
  • Idea: Add CameraContainer follow method, that doesn't tween

    Idea: Add CameraContainer follow method, that doesn't tween

    If you run ./gradlew :samples:collision2d-roguelike:runJvm and move the red square around, I would expect that the camera always stays exactly on the square, but it drags behind due to it having some amount of tween set.

    I would suggest to have a followTween() method that works as is does right now. And a new follow() method that moves the camera instantly to the following view.

    opened by Maddin-M 0
  • Comment looks broken on `blog.korge.org`

    Comment looks broken on `blog.korge.org`

    The css is broken on my chrome and edge, Windows 10. Also broken on my Safari, macOS 13.1.

    Check if you can reproduce it: https://blog.korge.org/korge-tutorial-writing-2048-game-step-0 Light Mode Dark Mode

    opened by liplum 0
  • Add capability to to fetch available screens and resolutions.

    Add capability to to fetch available screens and resolutions.

    A nice feature to add

    • List screens with supported resolutions.
    • Select screen where the native window will be created.

    On pure Java https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/java/awt/GraphicsEnvironment.html On osx https://developer.apple.com/documentation/appkit/nsscreen

    enhancement 
    opened by ygdrasil-io 1
  • [WIP] draft Metal implementation

    [WIP] draft Metal implementation

    Not yet an official PR, but more a base of discussion to a proper metal implementation. This is following the discussion here https://github.com/korlibs/korge/discussions/1155. Be open minded, everything here is only a proposal.

    1. First step

    Not sure I have enough knowledge in graphics pipeline to do a complete implementation, but at first I will try to cover shader generation and compilation, then a basic rendering on a MTKView.

    1. About the implementation

    From my point of view, Korge code is not necessarily easy to parse so I tried to improve readability with digression regarding the actual code. Feel free to argue and I will update the code according to this.

    2-1. Projects namings and organizations :

    I think that using names like korgw, korio, etc.. make it difficult to newcomer to understand the projects organization, so, i created new sub project like this

    • graphics : just a directory, but can be a project including subproject and make it easy to import
      • foundation : could be named 'core' or whatever generic, could contains interface and common code regarding "AG" stuff
      • backend : just a directory
        • metal : actual metal implementation

    2-2. Misc

    • Kotest is used to implement test because of his smooth DSL but can be removed later.
    • I use the “korge” base package instead of “com.soywiz”, not sure that it is relevant to use Java convention here.
    • There are a lot of abbreviations in the code, can i rename them with their full name to increase readability ?
    opened by ygdrasil-io 2
Releases(v4.0.0-alpha-1)
  • v4.0.0-alpha-1(Nov 22, 2022)

    New features

    • New mechanism for the debugger annotation-based

    What's Changed

    • Make Animator to start automatically by default, without waiting for the next frame, and allowing to configure that behaviour in root and children nodes by @soywiz in https://github.com/korlibs/korge/pull/1100
    • Support View.renderToBitmap to render the background color too by @soywiz in https://github.com/korlibs/korge/pull/1102
    • Added CachedContainer functionality + improve _stage lookup by propagating it by @soywiz in https://github.com/korlibs/korge/pull/1101
    • Fixes ISO8601 parsing with offsets by @soywiz in https://github.com/korlibs/korge/pull/1104
    • Allow using a pre-allocated array for QOI encoding to avoid allocating a new array for every call. by @Kietyo in https://github.com/korlibs/korge/pull/1098
    • UI Rework, new TextBlock and rich text support, justify, word wrapping and ellipsis, fixes bounds with filters, add fast material-like circle+rounded rect with shadow rendering based on SDF [Part 1] by @soywiz in https://github.com/korlibs/korge/pull/1105
    • Supports korge { androidMsaa = 4 } to configure antialiased multisampled rendering on Android by @soywiz in https://github.com/korlibs/korge/pull/1103
    • Initial prebaked MSDF font support + support rendering rich and plain text direclty in RenderContext2D by @soywiz in https://github.com/korlibs/korge/pull/1109
    • Supports bidirectional Bitmap <-> UIImage conversion by @soywiz in https://github.com/korlibs/korge/pull/1108
    • Lazy dynamic BitmapFont from VectorFont by @soywiz in https://github.com/korlibs/korge/pull/1113
    • Start work removing KorUI by starting dropping the KorgeDebugNode interface and moving KorUI to the JVM only KorGE target by @soywiz in https://github.com/korlibs/korge/pull/1114
    • Support rendering only a specific text range by @soywiz in https://github.com/korlibs/korge/pull/1118
    • Support native image encoding on native image formats by @soywiz in https://github.com/korlibs/korge/pull/1120
    • Tests HEIC loading in apple platforms by @soywiz in https://github.com/korlibs/korge/pull/917
    • Bumps kover agent version to 1.0.688 by @soywiz in https://github.com/korlibs/korge/pull/1124
    • Try to make KotlinNativeCrossTest abstract to make it compatible with Kotlin 1.8.0-Beta by @soywiz in https://github.com/korlibs/korge/pull/1125

    Full Changelog: https://github.com/korlibs/korge/compare/v3.4.0...v4.0.0-alpha-1

    Source code(tar.gz)
    Source code(zip)
  • v3.4.0(Nov 10, 2022)

    What's Changed

    • MacOS DisplayLink improvements by @soywiz in https://github.com/korlibs/korge/pull/1085
    • Adds JSEval to have it available in the common source set by @soywiz in https://github.com/korlibs/korge/pull/1086
    • Fixes tilemap hit-testing with sparse/infinite tilemaps by @soywiz in https://github.com/korlibs/korge/pull/1089
    • Expose normalized Angle interpolation by @soywiz in https://github.com/korlibs/korge/pull/1090
    • Fixes Dyn.contains for maps by @soywiz in https://github.com/korlibs/korge/pull/1091
    • Removes AnLibrary functionality only used on SWF -> moved to korge-swf repository by @soywiz in https://github.com/korlibs/korge/pull/1092
    • Make ParticleEmitterView to autoinvalidate view on each frame (if enabled) by @soywiz in https://github.com/korlibs/korge/pull/1094
    • Remove KDynamic and use Dyn instead by @soywiz in https://github.com/korlibs/korge/pull/1093
    • Improve reload agent by @soywiz in https://github.com/korlibs/korge/pull/1097
    • Prototype new animator, supporting attaching new nodes on the fly by @soywiz in https://github.com/korlibs/korge/pull/1095

    Full Changelog: https://github.com/korlibs/korge/compare/v3.3.1...v3.4.0

    Source code(tar.gz)
    Source code(zip)
  • v3.3.1(Oct 31, 2022)

    What's Changed

    • Fix bug that was adding resource assets to the Android libraries by @soywiz in https://github.com/korlibs/korge/pull/1068
    • Fix bug in BmpSlice.extractWithBase() by @Stechmuck in https://github.com/korlibs/korge/pull/1067
    • Moved all korge modules into separate repositories with kprojects by @soywiz in https://github.com/korlibs/korge/pull/1069
    • Support caching textures beyond texture GC based on a maxMemory property by @soywiz in https://github.com/korlibs/korge/pull/1072
    • Fixes issue with modern JVM versions on MacOS by @soywiz in https://github.com/korlibs/korge/pull/1079
    • Supports sparse infinite tilemaps with BVH for spatial finding by @soywiz in https://github.com/korlibs/korge/pull/1080
    • Dispatchers test is somehow flaky on CI, let's be a bit more lax with it by @soywiz in https://github.com/korlibs/korge/pull/1083
    • Implementing chmod-like / setting unix permissions on LocalVfs by @soywiz in https://github.com/korlibs/korge/pull/1081
    • Prototype Fixed point arithmetic by @soywiz in https://github.com/korlibs/korge/pull/515
    • Remove support methods using now removed artifacts, that are now consumed from kproject by @soywiz in https://github.com/korlibs/korge/pull/1084

    New Contributors

    • @Stechmuck made their first contribution in https://github.com/korlibs/korge/pull/1067

    Full Changelog: https://github.com/korlibs/korge/compare/v3.3.0...v3.3.1

    Source code(tar.gz)
    Source code(zip)
  • v3.3.0(Oct 22, 2022)

    What's Changed

    • Optimises AGList writing and reading by @soywiz-invideo in https://github.com/korlibs/korge/pull/1015
    • Add FastRandom coverage and fixes array.fastRandom() failing sometimes due to empty by @soywiz in https://github.com/korlibs/korge/pull/1016
    • Kover 0.6.1 & codecov by @soywiz in https://github.com/korlibs/korge/pull/1017
    • Increase AsyncInjector coverage by @soywiz in https://github.com/korlibs/korge/pull/1018
    • Fix NodeJsAsyncClient, implements NodeJsAsyncServer, and run AsyncClientServerTest in nodeJS too by @soywiz in https://github.com/korlibs/korge/pull/1020
    • Implements GameWindow.keepScreenOn on Android and iOS by @soywiz in https://github.com/korlibs/korge/pull/1022
    • Disables test on K/N windows when using the new memory manager by @soywiz in https://github.com/korlibs/korge/pull/1023
    • Implements macOS trackpad gesture events & fix horizontal scrolling on JVM MacOS by @soywiz in https://github.com/korlibs/korge/pull/1026
    • Added StackedIntArray2 by @soywiz in https://github.com/korlibs/korge/pull/1029
    • Check Array2* array sizes by @soywiz in https://github.com/korlibs/korge/pull/1028
    • Support custom mouse cursors by @soywiz in https://github.com/korlibs/korge/pull/1027
    • Fixes non-rectangular tilemaps & add support for stacked tiles in tilemaps + tile offsets per tile encoded in the tile id by @soywiz in https://github.com/korlibs/korge/pull/1030
    • Increase a bit BigInt coverage by @soywiz in https://github.com/korlibs/korge/pull/1033
    • Fixed a memory leak in CGNativeImageFormatProvider by @srinivas-codezyng in https://github.com/korlibs/korge/pull/1042
    • Fixes ¿¡ symbols not displayed properly with the default font by @soywiz in https://github.com/korlibs/korge/pull/1045
    • Added BitArray, to reduce memory required for big boolean arrays by @soywiz in https://github.com/korlibs/korge/pull/1046
    • Autogenerate Array2 variants by @soywiz in https://github.com/korlibs/korge/pull/1047
    • Adds VfsFile.deleteRecursively by @soywiz in https://github.com/korlibs/korge/pull/1049
    • Add gamepad support to MacOS on the JVM by @soywiz in https://github.com/korlibs/korge/pull/1050
    • Support Gamepad on MacOS K/N by @soywiz in https://github.com/korlibs/korge/pull/1051
    • MacOS/iOS: Adds battery information and sets a proper device name to identify the controller type by @soywiz in https://github.com/korlibs/korge/pull/1052
    • Proper implement parallelForeach & parallelMap in Kotlin/Native by @soywiz in https://github.com/korlibs/korge/pull/1053
    • Adds code to convert segments describing a path into trapezoids & fixes VectorBuilder.circleHole by @soywiz in https://github.com/korlibs/korge/pull/1055
    • Improve ViewsDebugger tree view accessibility by supporting going to next node when pressing the right key on opened/empty nodes by @soywiz in https://github.com/korlibs/korge/pull/1056
    • Improve ViewsDebugger tree view accessibility by supporting going to next node when pressing the right key on opened/empty nodes by @soywiz in https://github.com/korlibs/korge/pull/1057
    • Reduce number of View property allocations by using global pooled geometry objects by @soywiz in https://github.com/korlibs/korge/pull/1058
    • Fixes ShapeView anchoring issues by @soywiz in https://github.com/korlibs/korge/pull/1059
    • Fail when running Vfs.exec on an unexistant folder + implement Vfs.stat on NodeJS by @soywiz in https://github.com/korlibs/korge/pull/1061
    • Improved linux Gamepad support on JVM & support for Gamepad on K/N & Add SyncIO by @soywiz in https://github.com/korlibs/korge/pull/1063

    Full Changelog: https://github.com/korlibs/korge/compare/v3.2.0...v3.3.0

    Source code(tar.gz)
    Source code(zip)
  • v3.2.0(Sep 29, 2022)

    New Kotlin Version

    • Bump Kotlin to 1.7.20 by @soywiz in https://github.com/korlibs/korge/pull/1011

    New Fleks Version

    • Update korge-fleks to version 1.6-KMP by @jobe-m in https://github.com/korlibs/korge/pull/988

    New Features

    • Initial support for OTF fonts
    • 9-patch vectors, and support for 9-patch svg files with guides: https://github.com/korlibs/korge/pull/991
    • Improved support for adaptive framerate to only render on changes for improved battery life on all the targets
    • Support for configuring wine and lima targets on macos to run wine and linux tests and executables

    What's Changed

    • Create new methods which detail the unix unit for time apis and add deprecation annotations to prefer the new methods. by @Kietyo in https://github.com/korlibs/korge/pull/975
    • Fixes text ligature advancement bug by @soywiz-invideo in https://github.com/korlibs/korge/pull/980
    • Added NinePatchVector by @soywiz-invideo in https://github.com/korlibs/korge/pull/985
    • Fail on TTF/OTF CFF fonts for now, WIP reading CFF and fix an exception in TTF GSUB format 4 by @soywiz-invideo in https://github.com/korlibs/korge/pull/989
    • Support scalable vector shapes with 9-patch, NinePatchShape and NinePatchShapeView by @soywiz-invideo in https://github.com/korlibs/korge/pull/990
    • Support loading SVG files with guides that act as 9-patches by @soywiz-invideo in https://github.com/korlibs/korge/pull/991
    • Support transforming shapes. Added Shape.transformedShape, Shape.scaledShape, Shape.translatedShape by @soywiz-invideo in https://github.com/korlibs/korge/pull/992
    • Added NinePatch*.getScaledPointAt methods to get what the point would be in a rescaled surface by @soywiz-invideo in https://github.com/korlibs/korge/pull/993
    • [WIP] initial support for CFF/OTF fonts by @soywiz-invideo in https://github.com/korlibs/korge/pull/994
    • Support CFF fonts advance width and flippedY by @soywiz-invideo in https://github.com/korlibs/korge/pull/995
    • KDS Fix and improve Deque + bring back template generation for KDS by @soywiz-invideo in https://github.com/korlibs/korge/pull/997
    • Supports forceRenderEveryFrame=false in Android, Native Desktop & iOS to improve battery life in UI and games not updating every frame by @soywiz-invideo in https://github.com/korlibs/korge/pull/998
    • Text metrics fixes & improvements, and Text.stroke & Text.fill support by @soywiz-invideo in https://github.com/korlibs/korge/pull/1001
    • Adds wine & lima cross targets to the plugin by @soywiz in https://github.com/korlibs/korge/pull/1002
    • Expose standard paths & adjust standard vfs with them by @soywiz in https://github.com/korlibs/korge/pull/1004
    • Fixes Text bounds for empty strings by @soywiz-invideo in https://github.com/korlibs/korge/pull/1005

    Full Changelog: https://github.com/korlibs/korge/compare/v3.1.0...v3.2.0

    Source code(tar.gz)
    Source code(zip)
  • v3.1.0(Sep 7, 2022)

    What's Changed

    • Optimization: reduce overhead when calling components, support rendering only when something changed, & WIP code for optimizing event listening too by @soywiz-invideo in https://github.com/korlibs/korge/pull/966
    • Fixes wrong filter position by @soywiz-invideo in https://github.com/korlibs/korge/pull/977
    • Fix atlas serialization by being explicit about it https://github.com/korlibs/korge/commit/2b0cba9c76441171b82f0135362f4ba472cf4453

    Full Changelog: https://github.com/korlibs/korge/compare/v3.0.1...v3.1.0

    Source code(tar.gz)
    Source code(zip)
  • v3.0.1(Sep 1, 2022)

    What's Changed

    • Do not initialize audio inside KorGE startup by @soywiz-invideo in https://github.com/korlibs/korge/pull/934
    • Implement some base collections, some synchronization collections, cache & LRU by @soywiz-invideo in https://github.com/korlibs/korge/pull/935
    • Korge Screenshot Testing Framework (JVM only) by @Kietyo in https://github.com/korlibs/korge/pull/927
    • Supports constructing parallelogram vector paths by @soywiz-invideo in https://github.com/korlibs/korge/pull/947
    • Improve adding colors to gradients and variadic RGBA usage in RgbaArray by @soywiz-invideo in https://github.com/korlibs/korge/pull/946
    • Add zIndex utilities by @soywiz-invideo in https://github.com/korlibs/korge/pull/952
    • Support keeping some scene properties while hot reloading by @soywiz-invideo in https://github.com/korlibs/korge/pull/953
    • Add the ability to output to pre-allocated bitmap for QOI and added benchmarks. (Attempt 2) by @Kietyo in https://github.com/korlibs/korge/pull/945
    • Graphics, text, font & filter improvements. Fixes vector text horizontal center alignment. Fixes issues with strokes being cut, drop shadow, having artifacts on the edges & supports woff TTF font format & supports full text alignment on text and text drawing & optimizes vector text rendering to reduce the number of fills & generic debugger panel improvements by @soywiz-invideo in https://github.com/korlibs/korge/pull/958

    New Contributors

    • @Kietyo made their first contribution in https://github.com/korlibs/korge/pull/927

    Full Changelog: https://github.com/korlibs/korge/compare/v3.0.0...v3.0.1

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0(Aug 3, 2022)

    https://blog.korge.org/korge-3.0

    What's Changed

    • Supports S3M decoding by @soywiz in https://github.com/korlibs/korge/pull/881
    • Fixes volume up/down not working on Android by @soywiz in https://github.com/korlibs/korge/pull/883
    • Implements resources vfs listing and stats by @soywiz in https://github.com/korlibs/korge/pull/882
    • Fixes hanging audio when stopping sound effect on JVM JNA/OpenAL by @soywiz in https://github.com/korlibs/korge/pull/887
    • Prevents android from crashing on exception by @soywiz in https://github.com/korlibs/korge/pull/884
    • Expose whether the new memory manager is set or not by @soywiz in https://github.com/korlibs/korge/pull/889
    • Improve MOD, S3M and XM and expose them as audio formats by @soywiz in https://github.com/korlibs/korge/pull/888
    • Commonize audio decoding formats and honor AudioDecodingProps.formats by @soywiz in https://github.com/korlibs/korge/pull/886
    • Prevent Vfs.listSimple from entering in an infinite loop if neither listSimple or listFlow were implemented by @soywiz in https://github.com/korlibs/korge/pull/885
    • require that forces applied to body are valid by @jbellis in https://github.com/korlibs/korge/pull/879
    • Try run Android tests on linux without hardware acceleration by @soywiz in https://github.com/korlibs/korge/pull/890
    • Sample showing how to wait and handle several kind of user interaction using suspending functions by @soywiz in https://github.com/korlibs/korge/pull/894
    • Fix stroke bounds by @soywiz-invideo in https://github.com/korlibs/korge/pull/895
    • Show how to use SDF with custom views by @soywiz-invideo in https://github.com/korlibs/korge/pull/896
    • Restore text bounds old behaviour by @soywiz-invideo in https://github.com/korlibs/korge/pull/897
    • Fix KMem arraycopy and update the API by @soywiz in https://github.com/korlibs/korge/pull/898
    • Initial JSMpeg support by @soywiz in https://github.com/korlibs/korge/pull/899
    • Fix and ensure ShapeView bounds are correct. Limit ShapeView API to not expose updateShape { }, only updatePath { } by @soywiz in https://github.com/korlibs/korge/pull/900
    • Supports text input in HTML Mobile by @soywiz in https://github.com/korlibs/korge/pull/901
    • Move all clamping to kmem and remove the ones from korma by @soywiz in https://github.com/korlibs/korge/pull/903
    • Bump Kotlin to 1.7.20-Beta and serialization to 1.4.0-RC by @soywiz in https://github.com/korlibs/korge/pull/902
    • Optimize minimp3 by @soywiz in https://github.com/korlibs/korge/pull/906
    • Fixes CpuGraphics positioning with strokes by @soywiz in https://github.com/korlibs/korge/pull/907
    • Fixes NinePatch not updating on color/alpha changes by @soywiz in https://github.com/korlibs/korge/pull/909
    • Use memset to zero-fill all fields of zlib stream just in case. Let's see if this fixes windows test crash by @soywiz in https://github.com/korlibs/korge/pull/911
    • Fix use after deallocate on klock on windows when getting local timezone by @soywiz in https://github.com/korlibs/korge/pull/910
    • Do not compile JVM for other targets (searching for plugins), and optimize e2e tests by @soywiz in https://github.com/korlibs/korge/pull/912
    • Use CGNativeImageFormatProvider to decode by using iOS/macOS native decoder by @soywiz-invideo in https://github.com/korlibs/korge/pull/914
    • Adds rpg sample from the starter kit to the sandbox to verify it works properly by @soywiz in https://github.com/korlibs/korge/pull/918

    New Contributors

    • @jbellis made their first contribution in https://github.com/korlibs/korge/pull/879

    Full Changelog: https://github.com/korlibs/korge/compare/v3.0.0-Beta7...v3.0.0

    What's Changed

    • Make IosGameWindow parameter optional, and simplify to allow a custom UIWindow provider by @soywiz-invideo in https://github.com/korlibs/korge/pull/787
    • Feature: New ScaledScene + moved connect4 sample using it by @soywiz in https://github.com/korlibs/korge/pull/792
    • Implement Charset.forName by @soywiz in https://github.com/korlibs/korge/pull/797
    • Initial Vfs JVM NIO support on JVM and Android by @soywiz-invideo in https://github.com/korlibs/korge/pull/798
    • Be able to edit any Text by @soywiz-invideo in https://github.com/korlibs/korge/pull/510
    • Fix infinite loop on mp3 playback with times >= 2.playbackTimes, and some more WAV and MP3 fixes by @soywiz in https://github.com/korlibs/korge/pull/802
    • Support JVM & JS platform native Charset encoders/decoders by @soywiz in https://github.com/korlibs/korge/pull/801
    • Fixed LineRenderBatcher.draw(Matrix, body) leak by @soywiz-invideo in https://github.com/korlibs/korge/pull/805
    • Fixes SoundAudioStream.SoundChannel.current and fixes getting mp3 length based on LAME Xing/Info tags by @soywiz in https://github.com/korlibs/korge/pull/804
    • Support custom BlendMode by @soywiz in https://github.com/korlibs/korge/pull/828
    • Add AGList.flush command by @soywiz-invideo in https://github.com/korlibs/korge/pull/829
    • Update kotlinx.coroutines to 1.6.4 by @soywiz-invideo in https://github.com/korlibs/korge/pull/830
    • Audio .MOD support by @soywiz in https://github.com/korlibs/korge/pull/836
    • Flush gl commands before rendering into a texture by @soywiz-invideo in https://github.com/korlibs/korge/pull/837
    • Premultiplied alpha fixes by @soywiz-invideo in https://github.com/korlibs/korge/pull/831
    • Add spread property to TransitionFilter by @soywiz in https://github.com/korlibs/korge/pull/833
    • Fixes additive blending for premultiplied alpha by @soywiz-invideo in https://github.com/korlibs/korge/pull/839
    • fix Matrix3D.setToLookAt bug by @lifenjoy51 in https://github.com/korlibs/korge/pull/838
    • Fix zip file can't be read when uncompressed size is not in header by @jeffdgr8 in https://github.com/korlibs/korge/pull/842
    • Added XM fasttracker library port from webaudio-mod-player by @soywiz in https://github.com/korlibs/korge/pull/845
    • Bump to gradle 7.5 by @soywiz in https://github.com/korlibs/korge/pull/849
    • Fixes android kotlinx-serialization by @soywiz in https://github.com/korlibs/korge/pull/850
    • Fix leak and some issues, plus allow to specify premultiplied & wrapping for each quad by @soywiz-invideo in https://github.com/korlibs/korge/pull/847
    • Fix/fixes.gpu.vector.rendering by @soywiz-invideo in https://github.com/korlibs/korge/pull/854
    • Fixes mutability exception in TexturedVertexArray by @soywiz-invideo in https://github.com/korlibs/korge/pull/856
    • Fix/fix.some.premultiplied.issues by @soywiz-invideo in https://github.com/korlibs/korge/pull/857
    • Fix/fix.compiling.korge.in.newer.jvm.versions by @soywiz in https://github.com/korlibs/korge/pull/858
    • Some more premultiplied alpha fixes, test JS Browser on CI add Wine and Lima variants to test/run Windows and Linux on other targets, some fixes and revert Matrix3D.setLookAt by @soywiz-invideo in https://github.com/korlibs/korge/pull/859
    • Update README.md by @andsiu in https://github.com/korlibs/korge/pull/860
    • Do selective testing on CI by @soywiz-invideo in https://github.com/korlibs/korge/pull/861
    • Use checkout@v3 and test all if we change the .github/workflows/TEST.yml file by @soywiz-invideo in https://github.com/korlibs/korge/pull/863
    • Some Android fixes and improvements by @soywiz-invideo in https://github.com/korlibs/korge/pull/862
    • Add missing korge-sandbox sample and limit sandbox changes to run on the JVM by @soywiz-invideo in https://github.com/korlibs/korge/pull/864
    • Fix init waiting while initializing a Vfs.Proxy when requesting several files at once by @soywiz-invideo in https://github.com/korlibs/korge/pull/865
    • Optimize JvmClassLoaderResourcesVfs, improve MergedVfs and add EmptyVfs by @soywiz-invideo in https://github.com/korlibs/korge/pull/866
    • Fix JS alpha premultiplication by @soywiz-invideo in https://github.com/korlibs/korge/pull/869
    • Fix korvi video to not leak by @soywiz-invideo in https://github.com/korlibs/korge/pull/870
    • Fix macos AWT scrolling speed by @soywiz in https://github.com/korlibs/korge/pull/875
    • Improve KorIM Bitmap premultiplication handling, ensure and assume bitmaps uploaded to AG are premultiplied so linear sampling works as expected by @soywiz-invideo in https://github.com/korlibs/korge/pull/871
    • Optimization: reduce intermediary render buffers in ComposedFilter from N to just 2 by @soywiz-invideo in https://github.com/korlibs/korge/pull/876
    • Fix UIButton text and graphics scale by @soywiz-invideo in https://github.com/korlibs/korge/pull/877
    • Fix FSprites blend modes and colors by @soywiz-invideo in https://github.com/korlibs/korge/pull/878

    New Contributors

    • @lifenjoy51 made their first contribution in https://github.com/korlibs/korge/pull/838
    • @jeffdgr8 made their first contribution in https://github.com/korlibs/korge/pull/842
    • @andsiu made their first contribution in https://github.com/korlibs/korge/pull/860

    Full Changelog: https://github.com/korlibs/korge/compare/v3.0.0-Beta6...v3.0.0-Beta7

    What's Changed

    • Support auto reloading / hot reloading in KorGE by @soywiz in https://github.com/korlibs/korge/pull/484
    • Add music sound example to korge-sandbox by @jobe-m in https://github.com/korlibs/korge/pull/496
    • Text & TextInput improvements by @soywiz-invideo in https://github.com/korlibs/korge/pull/495
    • Fix korge-sandbox not compiling by @soywiz-invideo in https://github.com/korlibs/korge/pull/500
    • Also include sandbox in CI to ensure it compiles by @soywiz-invideo in https://github.com/korlibs/korge/pull/501
    • Reduce time on SWF tests by @soywiz-invideo in https://github.com/korlibs/korge/pull/502
    • Fix mp3 sound issues by @soywiz in https://github.com/korlibs/korge/pull/503
    • Fixes index out of bounds issue in dragonbones by @soywiz in https://github.com/korlibs/korge/pull/513
    • Aseprite tilemap support by @soywiz in https://github.com/korlibs/korge/pull/511
    • 🔥 Support hot reloading with method additions/removals by @soywiz in https://github.com/korlibs/korge/pull/514
    • Restored kbignum and luak by @soywiz in https://github.com/korlibs/korge/pull/517
    • Use Dispatchers.IO on VfsAndroid by @soywiz-invideo in https://github.com/korlibs/korge/pull/521
    • Use Dispatchers.Default on Android for image decoding by @soywiz-invideo in https://github.com/korlibs/korge/pull/522
    • Bump kotlinx-serialization by @soywiz-invideo in https://github.com/korlibs/korge/pull/520
    • Allow to configure time available per frame to execute tasks by @soywiz-invideo in https://github.com/korlibs/korge/pull/524
    • Fix Android native vector rendering with NON_ZERO winding by @soywiz-invideo in https://github.com/korlibs/korge/pull/531
    • Simplify GameWindow update (executing pending events) and allow giving more time for non-realtime applications by @soywiz-invideo in https://github.com/korlibs/korge/pull/530
    • Improve debug information shown in executePending by @soywiz-invideo in https://github.com/korlibs/korge/pull/532
    • Bump kotlin to 1.7.10 by @soywiz in https://github.com/korlibs/korge/pull/536
    • Some android fixes & do Android emulator testing on CI by @soywiz-invideo in https://github.com/korlibs/korge/pull/533
    • Run ios simulator tests by @soywiz-invideo in https://github.com/korlibs/korge/pull/537
    • Supports running mingwX64 tests with wine by @soywiz in https://github.com/korlibs/korge/pull/538

    New Contributors

    • @jobe-m made their first contribution in https://github.com/korlibs/korge/pull/496
    • @soywiz-invideo made their first contribution in https://github.com/korlibs/korge/pull/495

    Full Changelog: https://github.com/korlibs/korge/commits/v3.0.0-Beta6

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0-Beta7(Jul 26, 2022)

    What's Changed

    • Make IosGameWindow parameter optional, and simplify to allow a custom UIWindow provider by @soywiz-invideo in https://github.com/korlibs/korge/pull/787
    • Feature: New ScaledScene + moved connect4 sample using it by @soywiz in https://github.com/korlibs/korge/pull/792
    • Implement Charset.forName by @soywiz in https://github.com/korlibs/korge/pull/797
    • Initial Vfs JVM NIO support on JVM and Android by @soywiz-invideo in https://github.com/korlibs/korge/pull/798
    • Be able to edit any Text by @soywiz-invideo in https://github.com/korlibs/korge/pull/510
    • Fix infinite loop on mp3 playback with times >= 2.playbackTimes, and some more WAV and MP3 fixes by @soywiz in https://github.com/korlibs/korge/pull/802
    • Support JVM & JS platform native Charset encoders/decoders by @soywiz in https://github.com/korlibs/korge/pull/801
    • Fixed LineRenderBatcher.draw(Matrix, body) leak by @soywiz-invideo in https://github.com/korlibs/korge/pull/805
    • Fixes SoundAudioStream.SoundChannel.current and fixes getting mp3 length based on LAME Xing/Info tags by @soywiz in https://github.com/korlibs/korge/pull/804
    • Support custom BlendMode by @soywiz in https://github.com/korlibs/korge/pull/828
    • Add AGList.flush command by @soywiz-invideo in https://github.com/korlibs/korge/pull/829
    • Update kotlinx.coroutines to 1.6.4 by @soywiz-invideo in https://github.com/korlibs/korge/pull/830
    • Audio .MOD support by @soywiz in https://github.com/korlibs/korge/pull/836
    • Flush gl commands before rendering into a texture by @soywiz-invideo in https://github.com/korlibs/korge/pull/837
    • Premultiplied alpha fixes by @soywiz-invideo in https://github.com/korlibs/korge/pull/831
    • Add spread property to TransitionFilter by @soywiz in https://github.com/korlibs/korge/pull/833
    • Fixes additive blending for premultiplied alpha by @soywiz-invideo in https://github.com/korlibs/korge/pull/839
    • fix Matrix3D.setToLookAt bug by @lifenjoy51 in https://github.com/korlibs/korge/pull/838
    • Fix zip file can't be read when uncompressed size is not in header by @jeffdgr8 in https://github.com/korlibs/korge/pull/842
    • Added XM fasttracker library port from webaudio-mod-player by @soywiz in https://github.com/korlibs/korge/pull/845
    • Bump to gradle 7.5 by @soywiz in https://github.com/korlibs/korge/pull/849
    • Fixes android kotlinx-serialization by @soywiz in https://github.com/korlibs/korge/pull/850
    • Fix leak and some issues, plus allow to specify premultiplied & wrapping for each quad by @soywiz-invideo in https://github.com/korlibs/korge/pull/847
    • Fix/fixes.gpu.vector.rendering by @soywiz-invideo in https://github.com/korlibs/korge/pull/854
    • Fixes mutability exception in TexturedVertexArray by @soywiz-invideo in https://github.com/korlibs/korge/pull/856
    • Fix/fix.some.premultiplied.issues by @soywiz-invideo in https://github.com/korlibs/korge/pull/857
    • Fix/fix.compiling.korge.in.newer.jvm.versions by @soywiz in https://github.com/korlibs/korge/pull/858
    • Some more premultiplied alpha fixes, test JS Browser on CI add Wine and Lima variants to test/run Windows and Linux on other targets, some fixes and revert Matrix3D.setLookAt by @soywiz-invideo in https://github.com/korlibs/korge/pull/859
    • Update README.md by @andsiu in https://github.com/korlibs/korge/pull/860
    • Do selective testing on CI by @soywiz-invideo in https://github.com/korlibs/korge/pull/861
    • Use checkout@v3 and test all if we change the .github/workflows/TEST.yml file by @soywiz-invideo in https://github.com/korlibs/korge/pull/863
    • Some Android fixes and improvements by @soywiz-invideo in https://github.com/korlibs/korge/pull/862
    • Add missing korge-sandbox sample and limit sandbox changes to run on the JVM by @soywiz-invideo in https://github.com/korlibs/korge/pull/864
    • Fix init waiting while initializing a Vfs.Proxy when requesting several files at once by @soywiz-invideo in https://github.com/korlibs/korge/pull/865
    • Optimize JvmClassLoaderResourcesVfs, improve MergedVfs and add EmptyVfs by @soywiz-invideo in https://github.com/korlibs/korge/pull/866
    • Fix JS alpha premultiplication by @soywiz-invideo in https://github.com/korlibs/korge/pull/869
    • Fix korvi video to not leak by @soywiz-invideo in https://github.com/korlibs/korge/pull/870
    • Fix macos AWT scrolling speed by @soywiz in https://github.com/korlibs/korge/pull/875
    • Improve KorIM Bitmap premultiplication handling, ensure and assume bitmaps uploaded to AG are premultiplied so linear sampling works as expected by @soywiz-invideo in https://github.com/korlibs/korge/pull/871
    • Optimization: reduce intermediary render buffers in ComposedFilter from N to just 2 by @soywiz-invideo in https://github.com/korlibs/korge/pull/876
    • Fix UIButton text and graphics scale by @soywiz-invideo in https://github.com/korlibs/korge/pull/877
    • Fix FSprites blend modes and colors by @soywiz-invideo in https://github.com/korlibs/korge/pull/878

    New Contributors

    • @lifenjoy51 made their first contribution in https://github.com/korlibs/korge/pull/838
    • @jeffdgr8 made their first contribution in https://github.com/korlibs/korge/pull/842
    • @andsiu made their first contribution in https://github.com/korlibs/korge/pull/860

    Full Changelog: https://github.com/korlibs/korge/compare/v3.0.0-Beta6...v3.0.0-Beta7

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0-Beta6(Jul 8, 2022)

    What's Changed

    • Support auto reloading / hot reloading in KorGE by @soywiz in https://github.com/korlibs/korge/pull/484
    • Add music sound example to korge-sandbox by @jobe-m in https://github.com/korlibs/korge/pull/496
    • Text & TextInput improvements by @soywiz-invideo in https://github.com/korlibs/korge/pull/495
    • Fix korge-sandbox not compiling by @soywiz-invideo in https://github.com/korlibs/korge/pull/500
    • Also include sandbox in CI to ensure it compiles by @soywiz-invideo in https://github.com/korlibs/korge/pull/501
    • Reduce time on SWF tests by @soywiz-invideo in https://github.com/korlibs/korge/pull/502
    • Fix mp3 sound issues by @soywiz in https://github.com/korlibs/korge/pull/503
    • Fixes index out of bounds issue in dragonbones by @soywiz in https://github.com/korlibs/korge/pull/513
    • Aseprite tilemap support by @soywiz in https://github.com/korlibs/korge/pull/511
    • 🔥 Support hot reloading with method additions/removals by @soywiz in https://github.com/korlibs/korge/pull/514
    • Restored kbignum and luak by @soywiz in https://github.com/korlibs/korge/pull/517
    • Use Dispatchers.IO on VfsAndroid by @soywiz-invideo in https://github.com/korlibs/korge/pull/521
    • Use Dispatchers.Default on Android for image decoding by @soywiz-invideo in https://github.com/korlibs/korge/pull/522
    • Bump kotlinx-serialization by @soywiz-invideo in https://github.com/korlibs/korge/pull/520
    • Allow to configure time available per frame to execute tasks by @soywiz-invideo in https://github.com/korlibs/korge/pull/524
    • Fix Android native vector rendering with NON_ZERO winding by @soywiz-invideo in https://github.com/korlibs/korge/pull/531
    • Simplify GameWindow update (executing pending events) and allow giving more time for non-realtime applications by @soywiz-invideo in https://github.com/korlibs/korge/pull/530
    • Improve debug information shown in executePending by @soywiz-invideo in https://github.com/korlibs/korge/pull/532
    • Bump kotlin to 1.7.10 by @soywiz in https://github.com/korlibs/korge/pull/536
    • Some android fixes & do Android emulator testing on CI by @soywiz-invideo in https://github.com/korlibs/korge/pull/533
    • Run ios simulator tests by @soywiz-invideo in https://github.com/korlibs/korge/pull/537
    • Supports running mingwX64 tests with wine by @soywiz in https://github.com/korlibs/korge/pull/538

    New Contributors

    • @jobe-m made their first contribution in https://github.com/korlibs/korge/pull/496
    • @soywiz-invideo made their first contribution in https://github.com/korlibs/korge/pull/495

    Full Changelog: https://github.com/korlibs/korge/commits/v3.0.0-Beta6

    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(Nov 23, 2020)

    https://github.com/korlibs/korge/compare/v1.15.1...v2.0.1

    Additions:

    • Added support for cube textures and skyboxes. Thanks @dhakehurst !
    • Adjustments to 3D API. Thanks @dhakehurst !
    • Added a new BaseView used for both: View and View3D. Thanks @dhakehurst !
    • Supports specifying gameId to Korge function and a custom settingsFolder to store game settings
    • Added Resources to the injector (providing local resources to the scenes)
    • F7 now displays a debug window on AWT allowing to view the tree and change properties
    • Added debug components (KorgeDebugNode interface)
    • Time on animate is now using TimeSpan instead of plain ints in microseconds
    • Animator functions have now variants for most common numeric types instead of using Number
    • Timed class uses now TimeSpan
    • BitmapFont.getBounds now replaced with Font.getBounds to support any kind of Font including vector ones
    • Added debug package with stuff for adding debug information to component and scenes
    • Removed Html.Alignment that is now replaced with korim TextAlignment
    • Html now uses a FontCatalog instance provided to resolve fonts, used only on TextOld for now
    • InputKeys now have shift, ctrl, alt and meta tags
    • Added KeysEvents.downFrame to execute a code on each frame when the specified key is down
    • Added MouseEvent.onScroll* functions
    • DebugLineRenderContext now support specifying color for each line
    • DebugLineRenderContext supports simplified arbitrary VectorPath rendering
    • Extracted MaskStates and stencils from the animate package to be usable in other parts
    • Fixed stencil support request on several targets
    • Added RenderContext.renderToBitmap
    • Added resourceBitmap, resourceFont, resourceBitmapFont and resourceTtfFont extension function delegates for defining lazily loaded resources automatically garbage-collected when defined locally to the scenes
    • Added ServiceBaseId used for bundles when interacting with external services providing different ids for each platform (like achievements on android / ios)
    • Major TiledMap parsing work. Thanks @RezMike !
    • Added QView similar to JQuery to perform operations to zero, one or several views at once
    • Added suppor for strokes to Circle, Ellipse and RoundRect
    • Added ShapeView for custom shapes using Graphics and supporting strokes
    • Improved FpsOverlay
    • Added MaskedView using stencils to display only one part of another view using another view as mask
    • Added TransitionFilter for blended transitions using a mask
    • Added KTree for serializing/deserializing view trees into XML. The intellij plugin supports editing this format.
    • Added FastSpriteContainer and FastSprite for lightning fast sprite rendering using the same base texture/bitmap (requires atlases)
    • Partially implemented new korui on top of korge views
    • Added SPONSORS.md file with Patreon sponsors
    • Make View.draggable support a different selector + provide callback
    • Now vector text (Text view with non-bitmap Font) scales along the window by default (adjustable via autoScaling boolean property)
    • Added View.windowBounds and View.getWindowBounds()

    Optimizations:

    • BatchBuilder2D optimizations
    • ParticleEmitter optimizations
    • Added BatchBuilder2D.addQuadVerticesFastNormal
    • Optimized Graphics view

    Fixes:

    • Fixed mouse drag to work when the window is scaled
    • Some fixes on NativeStorage. Now hopefully stored on the right folders

    Refactors:

    • Major refactors to dragonbones, spine and swf

    Breaking changes:

    • Removed deprecated code
    • Text and Camera replaced by newer implementations. Old implementations keep with TextOld and CameraOld names for a smooth transition
    • Moved admob, box2d to bundles. Added services and inapp billing: https://awesome.korge.org/ ( hosted at https://github.com/korlibs/korge-bundles )
    • Dragonbones and Spine now uses some geometry tools from korma instead of providing their own
    • Dragonbones Transform renamed to TransformDb
    • Moved Atlas, Atlas2, AtlasPacker and AtlasInfo to korim
    • Component now has a BaseView instead of View
    • UpdateComponentV2 is now just UpdateComponent
    • Unified ViewsScope into ViewsContainer
    • Removed resource function and renamed Resource annotation to ResourcePath
    • Changed all HRTimeSpan to just TimeSpan
    • Removed View.onKey*, now just use instead View.keys.onKey*
    • Removed old Achivements, Ads, InAppPayments classes that are now externally-defined bundles
    • IntArray2 moved to kds
    • Removed Fonts. Shouldn't be required now
    • Removed old EffectView*
    • View.colorAdd changes from Int to ColorAdd
    • Removed VfsFile.readBitmapFontWithMipmaps, just use readBitmapFont
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-rc3(Nov 17, 2020)

  • v2.0.0-rc2(Oct 31, 2020)

  • v2.0.0-alpha(Oct 10, 2020)

  • v1.15.1(Aug 2, 2020)

  • v1.15.0(Jul 11, 2020)

  • v1.14.0(Jul 11, 2020)

    • Fixes tweening angles to go to the shortest path by default (fixes #264)
    • Fixes 9-patch to avoid deforming when the width or the height is lower than the original value (fixes #97)
    Source code(tar.gz)
    Source code(zip)
  • v1.13.12(Jul 11, 2020)

  • v1.13.11(Jul 10, 2020)

    • Updated NativeStorage to use SharedPreferences on Android (now can be get from views.storage)
    • Fixed scissors on FixedSizeContainer/ClipContainer
    • Fix hittesting on Graphics with several shapes
    • Disables DSL scope limiting on views #263
    • Fixes black screens on MacOS JVM when using filters #213
    • Fixes matrix-related filters not working on JS #213
    Source code(tar.gz)
    Source code(zip)
Owner
Kotlin cORoutine Libraries for fullstack development - https://bintray.com/korlibs/korlibs - https://github.com/korlibs
null
An simple & awesome animation library written in Kotlin for Android

An simple & awesome animation library written in Kotlin for Android

Romman Sabbir 53 Oct 17, 2022
Support extension to use Android ViewBinding quickly and smooth transform from kotlin-synthetic-extension.

ViewBinding Delegate Extension Support extension to use Android ViewBinding quickly and smooth transform from kotlin-synthetic-extension. Binding inst

Cuong V. Nguyen 3 Dec 13, 2021
Android Country Picker is a Kotlin-first, flexible and powerful Android library that allows to integrate Country Picker with just a few lines.

1. Add dependency dependencies { implementation 'com.hbb20:android-country-picker:X.Y.Z' } For latest version, 2. Decide your use-case

Harsh B. Bhakta 65 Dec 6, 2022
A mix of random small libraries for Kotlin, the smallest reside here until big enough for their own repository.

klutter Random small libraries, usually extensions making other libraries happier. Versions later than 2.x are for JDK 8 and newer only. Maven Depende

Kohesive 140 Nov 1, 2022
ConfigurNation - Annotation based Kotlin Interfaces for Android SharedPreferences

ConfigurNation Annotation based Kotlin Interfaces for Android SharedPreferences Installation Gradle Dependencies implementation 'com.izikode.izilib:co

Fanis Veizis 4 Jan 19, 2019
Web blog application written on Kotlin with Ktor framework

polytech-blog Web blog application written on Kotlin with Ktor framework Docker was used to create docker image Docker Compose was used to create cont

Iskander Zaripov 1 Jul 9, 2022
Korjector is a KorGE game engine-based multiplatform client for Projector.

Korjector is a KorGE game engine-based multiplatform client for Projector. An internal JetBrains Hackathon 2021 project to demonstrate that a Projector client can be created in less than 48 hours for any OS that supports decent canvas 2D API.

Sergei Bulgakov 10 Nov 20, 2021
A Hello World and Template for the KorGe game engine

Korge Hello World and Template This is a Hello World and Template for the KorGe game engine. Using gradle with kotlin-dsl. You can open this project i

Kiet 0 May 1, 2022
RPG written in Kotlin using Korge engine

TheAlchemist RPG written in Kotlin using the Korge engine Based on the template https://github.com/korlibs/korge-starter-kit-rpg, this is a simple pix

Liam 2 Jan 16, 2022
A korge map generator for Pocket Palm Heroes remastered

Korge mapgen This is a korge map generator for Pocket Palm Heroes remastered. Algorithm Is based mostly on this presentation by Gus Smedstad, who is t

Alexey Kononov 4 Sep 6, 2022
KorGE <-> JetPack Compose experiments

korge-compose KorGE <-> JetPack Compose experiments Exploration repository to answer some questions and figure out what can we achieve: Using @Composa

null 5 Dec 3, 2022
RemsEngine - OpenSource Kotlin/OpenGL/ECS based game engine

Game Engine: Rem's Engine Parallel to this video editor, I am developing my own

Antonio 7 Nov 3, 2022
Free Android 2D OpenGL Game Engine

AndEngine Donations While developing AndEngine was a lot of fun, it also also consumed many(!) months of my life. It actually continues to cost me a s

Nicolas Gramlich 3.2k Jan 5, 2023
A cross-platform Java game Engine (Framework) , support JavaFX / Android / IOS / HTML5 / Linux / MAC / Windows

Loon Game Engine (Java Game Framework) EN / KR Free Game Resources Links Download Loon Game Engine Only Android-studio Template : androidstudio-templa

cping 502 Jan 4, 2023
SMBClone - SMD clone custom game engine. (Desktop + Android)

SMBClone Simple crossplatform game engine for like SMB game! Supported platforms

Victor Varenik 4 Jul 4, 2022
Android Play Games Services plugin for Godot Game Engine

Google Play Games Services Plugin for Godot This is an Android Play Games Services plugin for Godot Game Engine 3.4.2 Supported features: Sign-in/Sign

Studio Adriatic 41 Dec 29, 2022
This is an application that is about an X / O game. You can enter the names of the game, and there is also a screen for those who win and there is a button to continue playing and the game determines the result of each player

Game-X-O This is an application that is about an X / O game. You can enter the names of the game, and there is also a screen for those who win and the

Mohamed Rafat 2 Aug 20, 2022
Multiplatform UI DSL with screen management in common code for mobile (android & ios) Kotlin Multiplatform development

Mobile Kotlin widgets This is a Kotlin MultiPlatform library that provides declarative UI and application screens management in common code. You can i

IceRock Development 320 Dec 30, 2022
Odyssey it's a declarative multiplatform navigation library for Multiplatform Compose

Odyssey Odyssey it's a declarative multiplatform navigation library for Multiplatform Compose ?? WARNING! It's an early preview, so you use it with yo

Alex 168 Jan 5, 2023
A sample skeleton backend app built using Spring Boot kotlin, Expedia Kotlin Graphql, Reactive Web that can be deployed to Google App Engine Flexible environmennt

spring-kotlin-gql-gae This is a sample skeleton of a backend app that was built using: Spring Boot(Kotlin) Reactive Web Sprinng Data R2DBC with MYSQL

Dario Mungoi 7 Sep 17, 2022