Android OpenGL ES 2.0/3.0 Engine

Overview

AndroidLibs License Maven Central Maven Central

Build Status

Master Branch Status
CircleCI codecov

Develop Branch Status
CircleCI

News

06/23/2017 Bombshell 1.1.970 has been released. It fixes behavior of Objects of zero size, TextureView, TextureManager, Toon Shader color setters, custom shaders and more... It also adds preprocessor directive support for shader plugins, configurable skybox geometry, and extends our Unit Text Framework.

11/16/2016 Bombshell 1.1.777 has been released. It fixes a small number of bugs and adds a Scan Line post processing effect (thanks @contriteobserver).

9/7/2016 The official release of Bombshell 1.1.610 is out. We will continue to support this release moving forward how ever bug fixes will be minimal. The decision was made that the design of the core engine was inhibiting correcting some of the larger issues. To this end, we have begun development of a 2.0 version - see issue 1755 for details. Development is happening in the v2.0-development branch here

8/29/2016 An initial effort for adding unit testing to Rajawali has been made. This initial focus has been on the core math classes and will ideally expand as bug fixes progress. Pull requests for unit tests are welcome and any "bug fix" PRs which include unit tests or issues which include unit tests to demonstrate a failure will be given the highest priority.

General

Rajawali is a 3D engine for Android based on OpenGL ES 2.0/3.0. It can be used for normal apps as well as live wallpapers.

Want to keep the developers going? Buy them a beer! (http://www.pledgie.com/campaigns/21807)

Join the Rajawali Community on Rajawali Community on Google Plus to stay up-to-date on the latest news.

The RajawaliExamples project is an ever growing toolkit for developing 3D content. Check it out!

Made With Rajawali

Numerous apps and live wallpapers have been made with Rajawali. Check them out!

Using Rajawali with mavenCentral()

Using Rajawali is as simple as adding a single line to your gradle dependencies:

implementation 'org.rajawali3d:rajawali:x.x.x@aar where x.x.x is the version number (and the last number is the build number). If you wish to use the master branch snapshot, append -SNAPSHOT. For example, to use release 1.0.325, you would use:

implementation 'org.rajawali3d:rajawali:1.0.325@aar

To use the master branch build 48 snapshot 1.0.48-SNAPSHOT, you would use:

implementation 'org.rajawali3d:rajawali:1.0.48-SNAPSHOT@aar

All commits to master and development branch are deployed as snapshots. All tags will be deployed as releases. To see the latest build number, see the build history and be sure you choose a master branch build.

For the above to work you will need to make sure your repository list includes:

mavenCentral() for releases, and maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } for snapshots.

Alternatively, if you checkout Rajawali via GIT, you can run gradle assembleRelease uploadArchives (or simply add a Gralde launch config to Android Studio for the assembleRelease and uploadArchives tasks). This will deploy to your local maven repository. Consuming apps should have mavenLocal() in their repository list and add implementation 'org.rajawali3d:rajawali:1.0.0-SNAPSHOT@aar to their dependencies.

Using Rajawali with Jitpack

Just add the following lines to your build.gradle Here you see more details https://jitpack.io/#rajawali/rajawali

dependencies {
    implementation "com.github.rajawali:rajawali:$latest_version"
}

To tell Gradle where to find the library, make sure build.gradle also contains this:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Rajawali Examples On The Market

Download the free app

Rajawali + Augmented Reality

RajawaliVuforia GitHub

YouTube Video of RajawaliVuforia in action

Rajawali + Virtual Reality

RajawaliVR GitHub

YouTube Video of RajawaliVR in action

Tutorials

  1. Basic Setup & Sphere (Maven) 1. Basic Setup & a Sphere (Out of date)
  2. Creating a Live Wallpaper and Importing a Model
  3. Materials
  4. Optimization
  5. [Skybox] (https://github.com/MasDennis/Rajawali/wiki/Tutorial-05-Skybox)
  6. [Screenshots] (https://github.com/MasDennis/Rajawali/wiki/Tutorial-06-Screenshots)
  7. [Plugins] (https://github.com/MasDennis/Rajawali/wiki/Tutorial-07-Plugins)
  8. [User Interface Elements] (https://github.com/MasDennis/Rajawali/wiki/Tutorial-08-Adding-User-Interface-Elements)
  9. Creating a Custom Material GLSL Shader
  10. 2D Renderer
  11. Particles
  12. Object Picking
  13. Animation Classes
  14. Bump Normal Mapping
  15. MD2 Animation
  16. Collision Detection
  17. Importing .Obj Files
  18. Drawing Lines
  19. Catmull Rom Splines
  20. Animated Sprites
  21. Fog
  22. More Optimisation
  23. Custom Vertex Shader
  24. Using Geometry Data To Position And Rotate Objects
  25. Video Material
  26. Orthographic Camera
  27. Texture Compression
  28. Transparent Textures
  29. Skeletal Animation
  30. Creating a Day Dream
  31. [Using RajawaliScene] (https://github.com/MasDennis/Rajawali/wiki/Tutorial-31-Using-RajawaliScene)

Tutorials & Articles By Others

Learn Rajawali at a Training Center

Comments
  • Animation Framework Overhaul

    Animation Framework Overhaul

    Continuing from #567, it seems that there is a general consensus that the animation system needs an overhaul.

    Everyone seems to agree that the GL thread should be responsible for managing animation time steps. The exact means of doing this seems to be up in the air still so as @AndrewJo suggested, I am creating a new issue here to continue the discussion.


    TODO

    • [x] Rewrite base animation class.
    • [x] Rewrite animation queue
    • [x] Add and test new ColorAnimation3D
    • [x] Adapt and test BezierPath3D
    • [x] Adapt and test CatmullRomPath3D
    • [x] Adapt and test RotateAnimation3D
    • [x] EllipticalOrbitAnimation3D
    • [x] ~~Adapt and test RotateAroundAnimation3D~~ (deprecated for EllipticalOrbitAnimation3D)
    • [x] ~~Adapt and test RotationAnimation~~ (deprecated and consolidated into RotateAnimation3D)
    • [x] Adapt and test ScaleAnimation
    • [x] Adapt and test TranslateAnimation3D
    • [x] Fully test all core animation functionality
    • [x] Update RajawaliExamples to use new animation code.
    • [x] Update Rajawali Wiki to use new animation code.
    Enhancement Discussion 
    opened by jwoolston 120
  • My first wallpaper is finally live!

    My first wallpaper is finally live!

    After 2 full months of development, the Blue Marble HD is finally live. Thank you to all the members on Rajawali GitHub and those who provided all the help.

    Blue Marble HD Feature Graphic

    Screenshots

    Intro title

    Home screen

    Blue marble

    View from moon

    No clouds

    Landscape mode

    In The Wild 
    opened by AndrewJo 81
  • rajawali3d.org

    rajawali3d.org

    DECISIONS WILL BE MADE SOON ON A SITE, MAKE SURE YOU CHECK OUT THE MOCKUPS AS THE WEEK GOES ON AND LEAVE YOUR FEEDBACK Mockups for new site

    As you may know we are moving to put the project in a more organized state. Part of this organization effort is to create a website that better supports all of the useful documentation for the Engine. As such we need a plan on what the site should look like and what functions it will serve.

    Status

    • [x] What features must the site have, we need to answer this before we can move forward at all. Requirements requirements requirements!
    • [x] How do we edit pages, what limitations are we bound to? I am guessing that the site is limited to HTML only so we can not run any server side goodness.
    • [x] How should the site look? This will likely be a process of finding some candidates and slowly narrowing it down to something we can all, or just Dennis, agree on.

    Requirements

    • A list of features, particularly those that make Rajawali stand out. For me being 4.0+ and no NDK makes Rajawali immensely attractive now.
    • A general breakdown of how the rendering process in Rajawali is intended to work
    • Host the wiki? Or should this stay put?

    Overall

    • A simple, uncluttered layout. Responsive (mobile/desktop friendly).
    • Small Rajawali logo (top left)
    • Menu at the top (top right) (Gallery, Tutorials, Documentation, Issues, Team)
    • Light colours
    • Google AdSense integration

    Homepage

    • Short description of the framework with some of the key features (4.0+, no NDK, ES 2.0, etc)
    • 6 or 8 square images of the most beautiful Rajawali apps/wallpapers. With a link to the complete gallery.
    • "Start building 3D content now" with a link to Github (tags & unstable version w/ disclaimer)
    • Icons w/ short description + links to same items as menu (Gallery, Tutorials, Documentation, Issues)

    Gallery

    • Square tiles with links to Google Play. Clean, simple layout

    Documentation

    • JavaDoc but sexier than it currently is, well integrated with the site

    Issues

    • Basically just links to the Github Issues page

    Team

    • Team profiles. Avatar, short description, role + social media links.

    Mods, feel free to edit this post as needed to add clarity or update as progress is made.

    Enhancement Discussion 
    opened by ToxicBakery 78
  • How do I calculate that camera reached left or right border of a Plane ?

    How do I calculate that camera reached left or right border of a Plane ?

    I have a Plane that is my application's world. Also, I have a Camera that moves along X axis in front of that plane. Camera Z = 8, Plane Z = 1. I need to determine that my camera reached left or right border of a Plane and so my view is not out of this Plane.

    How it could be implemented ?

    Info Needed 
    opened by Artgit 75
  • OBJ file isn't rendered correctly

    OBJ file isn't rendered correctly

    Hi,

    While loading an obj file it gets rendered with about half the triangles that compose it, as in the attached picture.

    I can't post the obj file for copyright reasons but I can assure you that it's always this way even if processed with blender or meshlab. Both of them correctly display the model and the associated texture that, by the way, is also not displayed even though it's loaded as I see the log message 'hastex ...'

    There are no errors or warnings in the logcat.

    What's happening here?

    (ps: I use the VuforiaRajawali extension)

    device-2013-07-15-161617

    Support 
    opened by marcus905 68
  • Ripple effect does not work with live wallpaper

    Ripple effect does not work with live wallpaper

    I saw a doubt like what I have, but did not see the solution ...

    I'm creating my live wallpaper based on the template. but the effect does not work in normal activity was as follows:

    public void onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setGLBackgroundTransparent (true);
    mRenderer RajawaliRipplesRenderer = new (this);
    mRenderer.setSurfaceView (mSurfaceView);
    super.setRenderer (mRenderer);
    
    mSurfaceView.setOnTouchListener (this);
    
    Display display = getWindowManager (). GetDefaultDisplay ();
    mScreenSize = new Point ();
    mScreenSize.x display.getWidth = ();
    mScreenSize.y display.getHeight = ();
    
    LinearLayout ll = new LinearLayout (this);
    ll.setOrientation (LinearLayout.VERTICAL);
    ll.setGravity (Gravity.BOTTOM);
    
    TextView tv = new TextView (this);
    tv.setText ("Touch Me");
    tv.setTextColor (Color.BLACK);
    ll.addView (tv);
    
    initLoader ();
    }
    
    

    and livewallpaoer have this:

    onCreateEngine public Engine () {
    mRenderer RajawaliRipplesRenderer = new (this);
    
    return new WallpaperEngine (this.getSharedPreferences (SHARED_PREFS_NAME,
    Context.MODE_PRIVATE) getBaseContext (), mRenderer, false);
    }
    
    Support 
    opened by winigma 58
  • Discussion: Texture Packing and Texture Atlas

    Discussion: Texture Packing and Texture Atlas

    WORKING BRANCH

    This post is so that I can layout my idea for how a texture atlas could/should work. Since this is on the challenging side for me I wanted to ensure I got some input from the gurus.

    Concept

    Texture atlas code has been written a thousand times over, and there is a lot of data that says to keep things simple. I am going to be adapting some code for mobile and Rajawali, the forked source can be found here.

    Basically, a new class TexturePacker.java would be created and would handle the bulk of the work, and it would return a new object type TextureAtlas which can hold the data about each "tile" in the atlas as well as the atlas Bitmaps

    public TextureAtlas mTextureAtlas = TexturePacker(String atlasName, int atlasWidth, int altasHeight, int padding)

    TextureAtlas would contain the altasBitmaps, and a list of file names and coordinates(X,Y,W,H) for each texture packed into the atlas.

    I am thinking there should be a getter to retrieve the image coordinates needed for a given object. Something like -- TextureAtlas.getCoords(String textureFileName). We then need a way to translate those coordinates into UVs.. this part is still hazy for me. Once the developer has the UVs they can simply get the appropriate atlas Bitmap by using another getter -- `TextureAtlas.getAtlas(String textureFileName).

    Scope

    Loading

    1. Designate folder and populate with textures
      • Possibly drawable-nodpi, and append a prefix/suffix to each texture
      • Custom folder accessible at runtime (if possible I would need some suggestions)
    2. Retrieve files from target folder
      • Capture file name, width, and height of each

    Packing

    1. Developer defines the size of the atlas on construction
    2. Utilize this algorithm for simple and efficient packing
      • Store coordinates of each tile as it is placed with reference to the original file name
    3. Collect loaded Bitmaps into a Canvas
      • Draw as many Bitmaps as needed to accomodate all files in the target folder
      • Support compression of final Bitmaps??
    4. Return a TextureAtlas will all collected data and atlas Bitmaps

    Retrieval

    1. Getters will allow retrieval of all, or specific data within the TextureAtlas
    2. Return the correct atlas bitmap based on file name
    3. Return correct coordinates based on file name
      • Convert texture coordinates to UVs (need some direction here)

    Uncertainties

    Compression support is possible, but I'm not sure it make sense. It seems that a bitmap could be returned and the "on-the-fly" compression could be implemented is the developer so desired. I don't think that this should support compressed textures on input.

    Is there a better way to collect the images besides a Canvas? Any prodding in the right direction is super helpful.

    Please give me whatever feedback you can, I will do my best to learn whatever I need to to get this done properly. Thanks!!

    Enhancement Info Needed Review Discussion 

    opened by Davhed 56
  • solution to issue #166 ?

    solution to issue #166 ?

    Hi, issue #166 is closed, but i'm not sure what needs to be done...

    I tried loading an .obj file with a transparent texture, but the transparent areas appear to be black. Is there a solution for this?

    Support 
    opened by ghost 56
  • LWP's built with rajawali glitch on SGS3

    LWP's built with rajawali glitch on SGS3

    Just a heads up. All of the LWP's listed on this repository, with the exception of the ferrari one, glitch while in the preview. Once set they are fine. To be more specific, MonkeyIsland items end up in different positions. Most of them fluctuate between increasing in size(stretching) and then reduction is size(squeezing). What I've found with my own projects as well is the same results especially if you start adding more features like PhongMaterials, etc. I'm not sure if this is just a SGS3 issue or not but thought I should bring it to everyone's attention. Is this a simple fix? Would loading a serialized model instead solve this?

    Discussion 
    opened by power7714 52
  • WIP: Reducing the number of methods in TextureManager

    WIP: Reducing the number of methods in TextureManager

    Problem

    The TextureManager class currently has no less than 56 methods that do basically the same thing: add textures. This is a proposal to simplify the API and to make the TextureManager more compact. Your feedback (especially @AndrewJo) is appreciated.

    Solution

    Leverage the existing TextureInfo class. Most of the parameters that are passed to the addTexture() methods are already part of the TextureInfo class.

    A significant change is that TextureInfo will be used as input instead of output. This way the number of addTexture() methods can be reduced from 56 to 10.

    Implementation

    TextureInfo class properties:

    public class TextureInfo {
        int mTextureId;
        int mUniformHandle;
        int mWidth;
        int mHeight;
        int mInternalFormat;
        int mBitmapFormat;
        boolean mMipmap;
        boolean mShouldRecycle;
        boolean isCubeMap;
        boolean isExistingTexture;
        String mTextureName;
        TextureType mTextureType;
        WrapType mWrapType;
        FilterType mFilterType;
        Config mBitmapConfig;
        CompressionType mCompressionType;
        PaletteFormat mPaletteFormat;
        ThreeDcFormat mThreeDcFormat;
        AtcFormat mAtcFormat;
        Dxt1Format mDxt1Format;
        PvrtcFormat mPvrtcFormat;
    
        Bitmap mTexture;
        Bitmap[] mTextures;
        ByteBuffer[] mBuffer;
        ...
    

    New TextureManager methods:

    public class TextureManager {
        void addTexture(TextureInfo info);
        void addTexture(TextureInfo info, Bitmap texture);
        void addTexture(TextureInfo info, Bitmap[] textures);
        void addTexture(TextureInfo info, int resourceId);
        void addTexture(TextureInfo info, int[] resourceIds);
        void addTexture(TextureInfo info, ByteBuffer buffer);
        void addTexture(TextureInfo info, ByteBuffer[] buffers);
        void addTexture(TextureInfo info, ByteBuffer buffer, Bitmap texture); // manually mipmapped textures
        void addTexture(TextureInfo info, ByteBuffer[] buffers, Bitmap texture); // manually mipmapped textures
        void addTexture(TextureInfo info, InputStream compressedTexture, Bitmap fallbackTexture);
        ...
    

    Usage
    // -- simple texture config
    mTextureManager.addTexture(new TextureInfo(TextureType.DIFFUSE), myTextureBitmap);
    
    // -- advanced texture config
    TextureInfo info = new TextureInfo();
    info.setTextureType(TextureType.DIFFUSE);
    info.shouldRecycle(true);
    info.setWrapType(WrapType.REPEAT);
    info.setCompressionType(CompressionType.ETC1);
    
    mTextureManager.addTexture(info, compressedTexture, fallbackTexture);
    
    // -- Cube maps
    TextureInfo info = new TextureInfo(TextureType.CUBE_MAP);
    info.shouldRecycle(true);
    
    mTextureManager.addTexture(info, textures);
    

    Still in Question

    Should Bitmap, Bitmap[] and ByteBuffer still be part of the TextureInfo class? Semantically it is incorrect I think.

    These properties are only used when the textures shouldn't be recycled. This way the texture can be uploaded again when the OpenGL context needs to be re-created. This can be flagged by the user by setting info.shouldRecycle() to false.

    An alternative solution would be to store these in the TextureManager class.

    Should the class be called TextureInfo or should it be renamed to TextureConfig?

    Enhancement Info Needed Review Discussion 

    opened by MasDennis 50
  • Renderer Task Queue

    Renderer Task Queue

    This was initially brought up in #543 but I thought it deserves a dedicated discussion.

    I have had need of adding and removing objects from the scene at run time after it is initially created primarily for testing the scene graph stuff I'm working on but I believe I will need to do this in the app that I am currently working on as well. I am planning to work on a solution to this after I finish up the scene graph so I would like to start getting peoples thoughts on a good way of doing this. I know something to this effect could be accomplish by controlling if things are hidden or not but this seems cumbersome and not fully effective to me.

    @ToxicBakery suggested a queue of some kind but from what I understand has concerns about the overall latent weight this would have. Following @MasDennis's suggestion in #112 someone can add object in onDrawFrame() but iterating them has some definite concurrency risks, which have been reduced with #546.

    I will need something to be able to do this so I certainly don't mind doing it in a way you guys would be agreeable with. Anyone have some thoughts to share?


    TODO List

    • [x] Create queue and queuing functions
    • [x] ~~Add PostProcessingFilter support~~ Not handling this at the moment
    • [x] Update RajawaliExamples
    • [x] Handle Add Task
      • [x] Animation
      • [x] BaseObject3D
      • [x] Camera
      • [ ] Lights
      • [x] Plugins
      • [x] Texture
      • [x] ~~PostProcessingFilter~~
    • [x] Handle Remove Task
      • [x] Animation
      • [x] BaseObject3D
      • [x] Camera
      • [ ] Lights
      • [x] Plugins
      • [x] Texture
      • [x] ~~PostProcessingFilter~~
    • [x] Handle Add All Task
      • [x] Animation
      • [x] BaseObject3D
      • [x] Camera
      • [ ] Lights
      • [x] Plugins
      • [x] Texture
      • [x] ~~PostProcessingFilter~~
    • [x] Handle Remove All Task
      • [x] Animation
      • [x] BaseObject3D
      • [x] Camera
      • [ ] Lights
      • [x] Plugins
      • [x] Texture
      • [x] ~~PostProcessingFilter~~
    • [x] Handle Replace Task
      • [x] Animation
      • [x] BaseObject3D
      • [x] Camera
      • [x] Lights
      • [x] Plugins
      • [x] Texture
      • [x] ~~PostProcessingFilter~~
    Enhancement Discussion 
    opened by jwoolston 49
  • Bump espresso-core from 3.5.0 to 3.5.1

    Bump espresso-core from 3.5.0 to 3.5.1

    Bumps espresso-core from 3.5.0 to 3.5.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 0
  • Bump junit-ktx from 1.1.4 to 1.1.5

    Bump junit-ktx from 1.1.4 to 1.1.5

    Bumps junit-ktx from 1.1.4 to 1.1.5.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 0
  • Bump runner from 1.5.1 to 1.5.2

    Bump runner from 1.5.1 to 1.5.2

    Bumps runner from 1.5.1 to 1.5.2.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 0
  • Bump junit from 1.1.4 to 1.1.5

    Bump junit from 1.1.4 to 1.1.5

    Bumps junit from 1.1.4 to 1.1.5.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 0
  • Bump kotlin_version from 1.7.22 to 1.8.0

    Bump kotlin_version from 1.7.22 to 1.8.0

    Bumps kotlin_version from 1.7.22 to 1.8.0. Updates kotlin-gradle-plugin from 1.7.22 to 1.8.0

    Release notes

    Sourced from kotlin-gradle-plugin's releases.

    Kotlin 1.8.0

    Changelog

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend

    ... (truncated)

    Changelog

    Sourced from kotlin-gradle-plugin's changelog.

    1.8.0

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend
    • KT-55065 Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend

    ... (truncated)

    Commits
    • da1a843 Add ChangeLog for 1.8.0-RC2
    • d325cf8 Call additional publishToMavenLocal in maven build scripts and enable info
    • 0403d70 Don't leave Gradle daemons after build scripts
    • 52b225d Fix task module-name is not propagated to compiler arguments
    • d40ebc3 Specify versions-maven-plugin version explicitly
    • 2e829ed Fix version parsing crash on Gradle rich version string
    • f603c0e Scripting, IR: fix capturing of implicit receiver
    • 06cbf8f Scripting, tests: enable custom script tests with IR
    • d61cef0 Fix deserialization exception for DNN types from Java
    • ea33e72 JVM IR: script is a valid container for local delegated properties
    • Additional commits viewable in compare view

    Updates kotlin-stdlib from 1.7.22 to 1.8.0

    Release notes

    Sourced from kotlin-stdlib's releases.

    Kotlin 1.8.0

    Changelog

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend

    ... (truncated)

    Changelog

    Sourced from kotlin-stdlib's changelog.

    1.8.0

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend
    • KT-55065 Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend

    ... (truncated)

    Commits
    • da1a843 Add ChangeLog for 1.8.0-RC2
    • d325cf8 Call additional publishToMavenLocal in maven build scripts and enable info
    • 0403d70 Don't leave Gradle daemons after build scripts
    • 52b225d Fix task module-name is not propagated to compiler arguments
    • d40ebc3 Specify versions-maven-plugin version explicitly
    • 2e829ed Fix version parsing crash on Gradle rich version string
    • f603c0e Scripting, IR: fix capturing of implicit receiver
    • 06cbf8f Scripting, tests: enable custom script tests with IR
    • d61cef0 Fix deserialization exception for DNN types from Java
    • ea33e72 JVM IR: script is a valid container for local delegated properties
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 0
Releases(1.2.1970)
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
Sample source code for Android Pride Rainbow Bounding Box written in Kotlin and OpenGL 🏳️‍🌈

Sample Code for Animated Rainbow Bounding Box in OpenGL A sample app showing how to draw a rainbow bounding box on Android with OpenGL and Kotlin. Blo

Rebecca Franks 28 May 24, 2022
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
2D physics engine for games

LiquidFun Version 1.1.0 Welcome to LiquidFun! LiquidFun is a 2D physics engine for games. Go to our landing page to browse our documentation and see s

Google 4.5k Dec 31, 2022
a 2d Java physics engine, native java port of the C++ physics engines Box2D and LiquidFun

jbox2d Please see the project's BountySource page to vote on issues that matter to you. Commenting/voting on issues helps me prioritize the small amou

jbox2d 1k Jan 2, 2023
Game made with Korge (Kotlin Multiplatform game engine)

MolesAttack Kotlin Multiplatform Game Play Html/js: https://feliperce.github.io/MolesAttack-Distribution/ Jar: https://feliperce.github.io/MolesAttack

Felipe Rodrigues 10 May 30, 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
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
An experiment with cellular automata; Functional mod for Rem's Engine.

Cellular Automata This is an experiment with cellular automata. A functional mod for Rem's Engine. When experimenting, I found the Sierpinski Triangle

Antonio 1 Mar 21, 2022
Android-application used as an introduction to Android development and Android APIs.

Android-application used as an introduction to Android development and Android APIs. This application is an implementation of the game Thirty and written in Kotlin.

Oscar Johansson 0 Nov 6, 2021
An easy open source Android Native Game FrameWork.

JustWeEngine - Android Game FrameWork An easy open source Android Native Game FrameWork. Engine Flow Chart How To Use? Import Engine's module as Libra

JustWe 767 Dec 8, 2022
Desktop/Android/HTML5/iOS Java game development framework

Cross-platform Game Development Framework libGDX is a cross-platform Java game development framework based on OpenGL (ES) that works on Windows, Linux

libgdx 20.9k Jan 8, 2023
Our maze game is an 2d-animation game developed using android studio.

Our maze game is an 2d-animation game developed using android studio. The game consists of a ball and a board with a hole in the center of it. We are using accelerometer as controller to guide ball towards the hole. T

Suraj Devgan 6 Nov 29, 2022
Android Kotlin: Matching Kitties: A Game Inspired by Cats

Android Kotlin: Matching Kitties: A Game Inspired by Cats A kotlin based Android memory game Screenshots | | | | | | | | | Viewing the App You can clo

Ryan Jandrick B. Obeles 20 Aug 1, 2022
a bitcoin key collision game for android

BitteryApp BitteryApp is an opensource bitcoin key collision game for Android. How to Build BitteryApp source code build in chromium building environm

null 3 Jul 12, 2021
Android Tetris + kotlin + jetpack compose

Android Tetris + kotlin + jetpack compose

zyw 5 Jul 18, 2022
Fifteen is a puzzle game created using Jetpack Compose for Android.

Fifteen / Jetpack Compose Fifteen is a puzzle game created using Jetpack Compose for Android. The goal of the game is to arrange the knuckles in ascen

Timur 2 Jan 17, 2022