Quick Links: Download Gideros Studio | Gideros Documentation | Gideros community chat | DONATE
Gideros 2022.3 Released — Gideros Forum

Gideros 2022.3 Released

So, it was already picked up by some of you, but here is the official announcement about Gideros 2022.3.

Most changes in this new version aim to increase performance in both general and specific contexts. Internally, Gideros now tries to cache has much data as possible instead of having to recompute everything on each frame. This include sprite boundaries, layouts, shaders, and some other internal variables, allowing higher draw throughput in general but also improved performance when querying object bounds, in Sprite:hitTestPoint() and in Sprite:getChdilrenFromPoint() which has been redesigned to be exponentially faster (it used to perform the same computations several times recursively).
Two more calls have been added to help with performances when lots of Sprite are either clipped or out of screen:
- Sprite:setCheckClip(boolean) to tell Gideros to check clipped children sprites and avoid drawing them (off by default)
- Sprite:setHiddenChildren({ ranges }) to tell Gideros to completely skip the rendering of one or several ranges of children in a single call. This is in effect similar to setting visibility of children sprites to hidden, but it is handled in the parent sprite in a more efficient fashion.

API-wise, most (maybe all) calls that accepted a color and an alpha parameter now accept a vector too (the new luau native type). If a vector is supplied, then the alpha parameter disappear, since the vector contains r,g,b and a values.

Luau engine was updated to latest code (https://github.com/Roblox/luau/pull/408), I don't know yet the details of the changes, but I noticed they introduced a table.clone() function, which conflicted with the table.clone function I added to Gideros myself. I merged both API so now you can clone a table in Gideros by calling table.clone(source,destination,deep). 'source' would be the source table, destination an optional 'target' table, and 'deep' a boolean indicating if deep cloning should be performed (recursive). The function return the target table or the new table.

Also worth noting the upgrade of ReactPhysics3D plugin to 0.9.0. According the the author, this version is more efficient, more stable and by the look at the changes to the API, more suited to games.

Full list of changes:
Improvements

[luau] Update to latest
[studio] Expand folded region if search result is inside
[studio] Slightly decreased highlighter delay
[studio] Types mismatch
[studio] Text editor update
[studio] Can now open json and xml in Studio

[texture] Add a way to disable alpha premultiplication
[particles] Accept vector for color
[core/layout] Add proportional filling and aspect ratio setting
[gfx/pixel] setColor allows vectors parameters + fix anchor point in some cases
[core/layout] Avoid wrappable textfield from constantly needing relayout
[core] Most color calls now accept vectors. Notable exception is Shape sprite
[core] Add a way to hide some childrens from the parent sprite context
[core] Speed up (non) rendering of clipped objects
[core] Keep state of sprite changes to enable caching for faster response
[core] Add application:enableDrawInfo() call
[core] Slower integration of mean frame time
[core] Improve rendering performance
[core] Improve Sprite.getChildrenAtPoint

[plugin/rp3d] Update to 0.9.0

[export/android] Add exported setting to comply with Android 32

[samples] Update more sample .gproj files
Fixes

[studio] Fixed highlighter not being reset sometimes
[plugin/cbump] Fix destructor
[plugin/r3d] Fix reactphysics 3D destructors
[build/Linux] Fix linux build script

Download it from here:
http://giderosmobile.com/download
Tagged:
+1 -1 (+6 / -0 )Share on Facebook
«13

Comments

  • MobAmuseMobAmuse Member
    edited March 2022
    I just tested Android API 32 export with this Gideros release and with the Ads plugin included (configured for AppLovin in this case but it seems to not matter which ads you use anyway) but calling NO ads at all in app, and still get this crash on boot even though Android apps appear to export 100% OK now. See logcat below...

    2022-03-09 10:22:48.649 3774-7317/? E/pageboostd: alp start : app commobileamusementsDrumHead
    2022-03-09 10:22:48.650 1228-2369/? E/ActivityTaskManager: TouchDown intent received, starting ActiveLaunch
    2022-03-09 10:22:48.650 3774-7317/? E/pageboostd: commobileamusementsDrumHead, amt 7983244 scnt 2 fcnt 0
    2022-03-09 10:22:48.650 3774-7317/? E/pageboostd: commobileamusementsDrumHead, amt 0 scnt 0 fcnt 0
    2022-03-09 10:22:48.650 3774-7317/? E/pageboostd: alp end : app commobileamusementsDrumHead data_amount 7983244
    2022-03-09 10:22:48.689 7318-7318/? E/ements.DrumHea: Not starting debugger since process cannot load the jdwp agent.
    2022-03-09 10:22:48.690 7318-7318/? E/USNET: USNET: appName: com.mobileamusements.DrumHead
    2022-03-09 10:22:48.721 7318-7318/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.mobileamusements.DrumHead, PID: 7318
    java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException:

    ******************************************************************************
    * The Google Mobile Ads SDK was initialized incorrectly. AdMob publishers *
    * should follow the instructions here: *
    * https://googlemobileadssdk.page.link/admob-android-update-manifest *
    * to add a valid App ID inside the AndroidManifest. *
    * Google Ad Manager publishers should follow instructions here: *
    * https://googlemobileadssdk.page.link/ad-manager-android-update-manifest. *
    ******************************************************************************
  • MobAmuseMobAmuse Member
    edited March 2022
    ...Also there appears to be a problem with alpha blend now around graphics on Android. I need to test this more mind as only just seen it.


  • ...and thank you for the update of course :)
  • android export still crashes to me too (after touching the screen).

    Likes: MobAmuse

    +1 -1 (+1 / -0 )Share on Facebook
  • MobAmuseMobAmuse Member
    edited March 2022
    I tested the Android exported .apk output again without the Ads plugin included and the app boots fine of course. Therefore I conclude as I said before, there is a problem with the Ads plugin on Android at least.

    It still has a problem with alpha blending as you can see and the touch works OK for me on both Bluestacks5 emulator and real Samsung device.

    I since updated many of my paid only Fire TV and Google apps with the version before this and all updated so far went thru review OK. Just the problem with free with ads versions currently that I cannot update yet due to crashing on tests.


  • i don't use ads plugin though in my app.

    Likes: MobAmuse

    +1 -1 (+1 / -0 )Share on Facebook
  • That last test had the ads plugin totally removed but the touch worked OK.
  • hgy29hgy29 Maintainer
    @MobAmuse, yes it looks like the Ads plugin configuration needs to be updated for at least one of the providers you use. I have not built an android app with ads for months, and I mostly use applovin nowadays so I don't know what this
    ava.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider:
    is actually about. Worse, I don't have an android phone myself so I can't reproduce easily.
  • @hgy29 OK no worries as luckily none of my free android apps with ads require updating currently. I have no idea why the ads plugin causes this problem either but it seems to relate to AdMob only according to the logcat output above. I don't use AdMob personally, only AppLovin and Unity these days. Weird.
  • MobAmuseMobAmuse Member
    edited March 2022
    @hgy29 Hmmm I found a note I left myself in 2019 inside my app Qubit Maze 3D...

    Notes...
    03/12/19: Must currently compile in Gideros 2019.10 against Google Play Services 16.0.0 for AppLovin to function on Android and not crash on boot.

    ...I tried upto 16.0.0 and it all works fine with Gideros 2022.3. At 19.0.0 thru 20.6.0 level on maven repo it causes the crash on boot with Ads plugin onboard.

    Future me thanks past me again :)
    +1 -1 (+4 / -0 )Share on Facebook
  • YanYan Member
    edited March 2022
    hgy29 said:

    So, it was already picked up by some of you, but here is the official announcement about Gideros 2022.3.

    Most changes in this new version aim to increase performance in both general and specific contexts. Internally, Gideros now tries to cache has much data as possible instead of having to recompute everything on each frame. This include sprite boundaries, layouts, shaders, and some other internal variables, allowing higher draw throughput in general but also improved performance when querying object bounds, in Sprite:hitTestPoint() and in Sprite:getChdilrenFromPoint() which has been redesigned to be exponentially faster (it used to perform the same computations several times recursively).
    Two more calls have been added to help with performances when lots of Sprite are either clipped or out of screen:
    - Sprite:setCheckClip(boolean) to tell Gideros to check clipped children sprites and avoid drawing them (off by default)
    - Sprite:setHiddenChildren({ ranges }) to tell Gideros to completely skip the rendering of one or several ranges of children in a single call. This is in effect similar to setting visibility of children sprites to hidden, but it is handled in the parent sprite in a more efficient fashion.

    API-wise, most (maybe all) calls that accepted a color and an alpha parameter now accept a vector too (the new luau native type). If a vector is supplied, then the alpha parameter disappear, since the vector contains r,g,b and a values.

    Luau engine was updated to latest code (https://github.com/Roblox/luau/pull/408), I don't know yet the details of the changes, but I noticed they introduced a table.clone() function, which conflicted with the table.clone function I added to Gideros myself. I merged both API so now you can clone a table in Gideros by calling table.clone(source,destination,deep). 'source' would be the source table, destination an optional 'target' table, and 'deep' a boolean indicating if deep cloning should be performed (recursive). The function return the target table or the new table.

    Also worth noting the upgrade of ReactPhysics3D plugin to 0.9.0. According the the author, this version is more efficient, more stable and by the look at the changes to the API, more suited to games.

    Full list of changes:
    Improvements

    [luau] Update to latest
    [studio] Expand folded region if search result is inside
    [studio] Slightly decreased highlighter delay
    [studio] Types mismatch
    [studio] Text editor update
    [studio] Can now open json and xml in Studio

    [texture] Add a way to disable alpha premultiplication
    [particles] Accept vector for color
    [core/layout] Add proportional filling and aspect ratio setting
    [gfx/pixel] setColor allows vectors parameters + fix anchor point in some cases
    [core/layout] Avoid wrappable textfield from constantly needing relayout
    [core] Most color calls now accept vectors. Notable exception is Shape sprite
    [core] Add a way to hide some childrens from the parent sprite context
    [core] Speed up (non) rendering of clipped objects
    [core] Keep state of sprite changes to enable caching for faster response
    [core] Add application:enableDrawInfo() call
    [core] Slower integration of mean frame time
    [core] Improve rendering performance
    [core] Improve Sprite.getChildrenAtPoint

    [plugin/rp3d] Update to 0.9.0

    [export/android] Add exported setting to comply with Android 32

    [samples] Update more sample .gproj files
    Fixes

    [studio] Fixed highlighter not being reset sometimes
    [plugin/cbump] Fix destructor
    [plugin/r3d] Fix reactphysics 3D destructors
    [build/Linux] Fix linux build script

    Download it from here:
    http://giderosmobile.com/download

    Stencil buffer works now incorrect on windows device. Here the difference - lightning.
    	level:getLayerGraphic("background"):setStencilOperation{
    		stencilClear = true,
    		stencilWriteMask = 1,
    		stencilRef = 1,
    		stencilFunc = Sprite.STENCIL_ALWAYS,
    		depthPass = Sprite.STENCIL_REPLACE
    	}
     
    	lightning:setStencilOperation{
    		stencilClear = false,
    		stencilMask = 1,
    		stencilRef = 1,
    		stencilFunc = Sprite.STENCIL_EQUAL,
    	}
    As you can see lightning is not masked by background layer, if windows driven. I also tried install APK on windows 11 and result is same - mask not working.
    windows.PNG
    962 x 592 - 474K
    7WtjTKGTbZI.jpg
    1600 x 757 - 208K
    vk.com/yan_alex
  • YanYan Member
    Yan said:

    hgy29 said:

    So, it was already picked up by some of you, but here is the official announcement about Gideros 2022.3.

    Most changes in this new version aim to increase performance in both general and specific contexts. Internally, Gideros now tries to cache has much data as possible instead of having to recompute everything on each frame. This include sprite boundaries, layouts, shaders, and some other internal variables, allowing higher draw throughput in general but also improved performance when querying object bounds, in Sprite:hitTestPoint() and in Sprite:getChdilrenFromPoint() which has been redesigned to be exponentially faster (it used to perform the same computations several times recursively).
    Two more calls have been added to help with performances when lots of Sprite are either clipped or out of screen:
    - Sprite:setCheckClip(boolean) to tell Gideros to check clipped children sprites and avoid drawing them (off by default)
    - Sprite:setHiddenChildren({ ranges }) to tell Gideros to completely skip the rendering of one or several ranges of children in a single call. This is in effect similar to setting visibility of children sprites to hidden, but it is handled in the parent sprite in a more efficient fashion.

    API-wise, most (maybe all) calls that accepted a color and an alpha parameter now accept a vector too (the new luau native type). If a vector is supplied, then the alpha parameter disappear, since the vector contains r,g,b and a values.

    Luau engine was updated to latest code (https://github.com/Roblox/luau/pull/408), I don't know yet the details of the changes, but I noticed they introduced a table.clone() function, which conflicted with the table.clone function I added to Gideros myself. I merged both API so now you can clone a table in Gideros by calling table.clone(source,destination,deep). 'source' would be the source table, destination an optional 'target' table, and 'deep' a boolean indicating if deep cloning should be performed (recursive). The function return the target table or the new table.

    Also worth noting the upgrade of ReactPhysics3D plugin to 0.9.0. According the the author, this version is more efficient, more stable and by the look at the changes to the API, more suited to games.

    Full list of changes:
    Improvements

    [luau] Update to latest
    [studio] Expand folded region if search result is inside
    [studio] Slightly decreased highlighter delay
    [studio] Types mismatch
    [studio] Text editor update
    [studio] Can now open json and xml in Studio

    [texture] Add a way to disable alpha premultiplication
    [particles] Accept vector for color
    [core/layout] Add proportional filling and aspect ratio setting
    [gfx/pixel] setColor allows vectors parameters + fix anchor point in some cases
    [core/layout] Avoid wrappable textfield from constantly needing relayout
    [core] Most color calls now accept vectors. Notable exception is Shape sprite
    [core] Add a way to hide some childrens from the parent sprite context
    [core] Speed up (non) rendering of clipped objects
    [core] Keep state of sprite changes to enable caching for faster response
    [core] Add application:enableDrawInfo() call
    [core] Slower integration of mean frame time
    [core] Improve rendering performance
    [core] Improve Sprite.getChildrenAtPoint

    [plugin/rp3d] Update to 0.9.0

    [export/android] Add exported setting to comply with Android 32

    [samples] Update more sample .gproj files
    Fixes

    [studio] Fixed highlighter not being reset sometimes
    [plugin/cbump] Fix destructor
    [plugin/r3d] Fix reactphysics 3D destructors
    [build/Linux] Fix linux build script

    Download it from here:
    http://giderosmobile.com/download

    Stencil buffer works now incorrect on windows device. Here the difference - lightning.
    	level:getLayerGraphic("background"):setStencilOperation{
    		stencilClear = true,
    		stencilWriteMask = 1,
    		stencilRef = 1,
    		stencilFunc = Sprite.STENCIL_ALWAYS,
    		depthPass = Sprite.STENCIL_REPLACE
    	}
     
    	lightning:setStencilOperation{
    		stencilClear = false,
    		stencilMask = 1,
    		stencilRef = 1,
    		stencilFunc = Sprite.STENCIL_EQUAL,
    	}
    As you can see lightning is not masked by background layer, if windows driven. I also tried install APK on windows 11 and result is same - mask not working.
    There is a problem that shader overwrites stencil buffer!!! This should not be!
    vk.com/yan_alex
  • YanYan Member
    edited March 2022
    Things, fixed
    vk.com/yan_alex
  • hgy29hgy29 Maintainer
    @MobAmuse,
    Were you able to diagnose a bit more your alpha issue ? I found the stencil issue reported by @Yan, it could be a similar thing. If you can make a tiny test case, I'd be happy to investigate.

    Likes: MobAmuse

    +1 -1 (+1 / -0 )Share on Facebook
  • MobAmuseMobAmuse Member
    edited March 2022
    @hgy29 I mashed up a little demo from an old app that shows the alpha problem that appears to be with texture pack sprite objects only. The sprite is supposed to have a green glow around the sprite text.

    The non-texture pack orange alpha blob displays correctly tho.

    I also just noticed alpha blend not working around actual text fonts in my slots apps too.


    zip
    zip
    AlphaSpriteTest.zip
    134K
  • Apologies for the stream of posts above I have no idea what happened there LOL :D

    Likes: SinisterSoft

    +1 -1 (+1 / -0 )Share on Facebook
  • hgy29hgy29 Maintainer
    MobAmuse said:

    @hgy29 I mashed up a little demo from an old app that shows the alpha problem that appears to be with texture pack sprite objects only.

    Thanks, I think I found: non premultiplied alpha became the default by mistake for TexturePacks. I’ll build a fixed 2022.3.1 tomorrow.

    Likes: MobAmuse, MoKaLux

    +1 -1 (+2 / -0 )Share on Facebook
  • @hgy29 Superb thank you.
  • YanYan Member
    hgy29 said:

    MobAmuse said:

    @hgy29 I mashed up a little demo from an old app that shows the alpha problem that appears to be with texture pack sprite objects only.

    Thanks, I think I found: non premultiplied alpha became the default by mistake for TexturePacks. I’ll build a fixed 2022.3.1 tomorrow.
    Hi, just want to remid, not to forget about my fixes with stencil buffer too =)
    vk.com/yan_alex
  • hgy29hgy29 Maintainer
    I released 2022.3.1 just now, and yes @Yan, it has the stencil fix you are waiting for.
    +1 -1 (+3 / -0 )Share on Facebook
  • MobAmuseMobAmuse Member
    edited March 2022
    Will grab in morning thank you again.

    [Edit: Perfect thanks!]

    Likes: MoKaLux, hgy29

    +1 -1 (+2 / -0 )Share on Facebook
  • YanYan Member
    hgy29 said:

    I released 2022.3.1 just now, and yes @Yan, it has the stencil fix you are waiting for.

    I've noticed this right after update, ure awesome!

    Likes: hgy29

    vk.com/yan_alex
    +1 -1 (+1 / -0 )Share on Facebook
  • MoKaLuxMoKaLux Member
    edited March 2022
    I am a bit confused with r3d destroy body :s
    In official docs:
    // Destroy the rigid body
    world->destroyRigidBody(body);

    // Destroy the collision body and remove it from the world
    world->destroyCollisionBody(body);

    And in Gideros we use:
    Destroys a rigid body in the dynamics world.
    r3d.World:destroyBody(body)

    I tested destroyBody with gideros example 3D Collisions and that works fine (see edit below).
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
  • MoKaLuxMoKaLux Member
    edited March 2022
    update to above post:
    MoKaLux said:

    I tested destroyBody with gideros example 3D Collisions and that works fine:

    destroyBody works fine at the beginning but after a couple of seconds gideros player crashes.
    I think there is a bug in r3d destroyBody :/
    Here is a sample code from gideros (3d collisions) with added destroyBody which demonstrates the possible bug: https://github.com/mokalux/GIDEROS_LUAU_SAMPLES/tree/main/3D_Collisions

    Sorry :(
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
  • hgy29hgy29 Maintainer
    MoKaLux said:


    I think there is a bug in r3d destroyBody :/
    Here is a sample code from gideros (3d collisions) with added destroyBody which demonstrates the possible bug: https://github.com/mokalux/GIDEROS_LUAU_SAMPLES/tree/main/3D_Collisions

    I will run it through debugger, thanks.

    Likes: MoKaLux

    +1 -1 (+1 / -0 )Share on Facebook
  • MoKaLuxMoKaLux Member
    edited March 2022
    great! thank you mister :)

    PS: I pushed (pulled?) the 3d library again with the 3d-anim sample code. They should be fine (they are almost the same as the previous commit). I tested them and I am using them at the moment.
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
  • hgy29hgy29 Maintainer
    Ok, I’ll merge them. Btw I saw you added assets to the 3D Anim sample code: are they compatible with Gideros license ?

    Likes: MoKaLux

    +1 -1 (+1 / -0 )Share on Facebook
  • hito9hito9 Member
    edited March 2022
    Thank you @hgy29, Aliased images are gone with the latest updates and fixes. Gideros Luau definitely shows its speed. I have been studying a little bit c++ and the Scintilla but It doesn't look easy. Please can you revert the current LexLua.cxx file with the Lexilla upstream "Lexilla -> lexers -> LexLua.cxx" file? This revert solves Fold/Unfold problem untill @rrraptor fixes LexLua.cxx with the new features. At the same time this revert fixes the Studio crash that @MoKaLux 's "3DDemo1/assets/3dbase/3DObjLoader2.lua" edit. Edit: nope, This is not related to LexLua.cxx file. I will add the backtraces of the Studio crash.
    EDIT: Do you have any idea, how to set the Scintilla editor page margins(especially top margin)?

    @MoKaLux Can you edit G3DFormat.lua line 157 and 176, you should replace with cross-platform path separator like below. I don't know there may be better solution.
    local mtlfile = mtl.normalMapFile:gsub("\\", "/")
    mtl.normalMap=Texture.new(path..mtlfile,true,{ wrap=TextureBase.REPEAT, extend=false})
    Thank you for a lots of contributions 3D Gideros features :)

    There are some little platform-based issues. I will keep testing.



    Likes: MoKaLux

    +1 -1 (+1 / -0 )Share on Facebook
Sign In or Register to comment.