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

Gideros 2024.11 Released

Hi everyone,

I have just released Gideros 2024.11, and this times it comes with huge changes, in fact so huge that it may require you to rewrite some lua code. Why ? Mostly because I noticed LuaU had been seriously improved and that Gideros could benefit from the latest version of LuaU, and because during the update process it came to my mind that we could gain 20% of memory without much effort.

What happened is that a normal luau value takes 16 bytes of memory. Most only take 12 (a double value and a type), but luau chossed to use 16 for alignment performance reasons. When they added the vector type, they saw that a vector of 3 values would fit in the 16 bytes (3 floats of 4 bytes and the type), but a vector of 4 values would make the lua value take 20 bytes. Vector operations are really interesting in 3D, and I thought vector of 4 values would be great to describe colors (R,G,B,A) so I enabled vector of four values, without realizing that because of that, every lua value would then be 20 bytes and no longer 16. This is a severe waste of memory, and honestly vector of 3 values are typically enough. So the new version of Gideros reduces the vector size to 3 values (x,y,z), and introduce a new lua type for colors, built with ColorValue(r,g,b,a) constructor. It takes less memory, but it is also faster!

New LuaU is also more efficient by itself: it comes with compiler optimizations (such as function inlining), imroved processing time, and I also added my own touch on top of it, such as introducing the length (#) operator on vectors.

More will be coming in near future, such as native compilation (kind of LuaU JIT). Currently only enabled on Windows Gideros Player for testing purposes, it should be really effective on compute-only pieces of code.

Full change set:

Breaking changes
[lua] Update Luau
[general] No longer use four values lua vectors
[general] Use new lua color type (built with ColorValue function) in lieu of vectors of four

Improvements
[core] Add Core.getScriptPath() call
[script] Build luamidi on QtLinux
[layout] Add an option to set aspect ratio for a Sprite's content
[application] Add a request to apply pending style changes immediately
[general] Speed improvements
[player/qt] Enable native code generation in Luau
[plugin/liquidfun] Add missing particles APIs (Fix #227)
[plugin/tntvirtualpad] New Optimization: ^0.5 instead of math.sqrt (much faster)
[export/android] Upgrade to latest tools
[export/qt] Report command line in application:get()

Fixes
[backend/gl2] Reset vertex attributes before each framebuffer draw
[styles] Fix style handling API issues
[sprite] Improve hitTestPoint vs rotated shapes (Fix #170)
[backend/gl] Ensure buffers are unbound at frame start
[backend/gl] Catch empty VBO condition
[backend/dx11] Correctly enable mip mapping
[core] Fix threads signaling
[plugin/luamidi] Remove 'yields' on OSX version

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

Comments

  • sounds exciting, needs to be tested.
    does in particular the imgui plugin work well with the changes (color vector)?
    thanks

    Likes: MoKaLux

    +1 -1 (+1 / -0 )Share on Facebook
  • hgy29hgy29 Maintainer
    I didn't test imgui plugin, but it didn't use color vectors at all

    Likes: MoKaLux

    +1 -1 (+1 / -0 )Share on Facebook
  • yes, my app that uses a lot of imgui stuff works fine after a brief check. thanks for all the updates and fixes.

    Likes: MoKaLux

    +1 -1 (+1 / -0 )Share on Facebook
  • oh la la, I can't wait using it o:)

    thank you captain for all your precious work <3
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
  • Thank you very much! Gideros is becoming more powerful with the features you have developed and continue to work on!

    Likes: MoKaLux, MobAmuse

    Coming soon
    +1 -1 (+2 / -0 )Share on Facebook
  • All good ...but... with any apps with AdMob & AppLovin Ads built against Android API 35 and latest Android Studio, I get...

    > Task :app:compileReleaseJavaWithJavac FAILED
    C:\Temp\TropicalTreasures2\tmp\app\src\main\java\com\giderosmobile\android\plugins\ads\frameworks\AdsMax.java:55: error: cannot find symbol
    AppLovinPrivacySettings.setIsAgeRestrictedUser(true,sActivity.get());
    ^
    symbol: method setIsAgeRestrictedUser(boolean,Activity)
    location: class AppLovinPrivacySettings
    C:\Temp\TropicalTreasures2\tmp\app\src\main\java\com\giderosmobile\android\plugins\ads\frameworks\AdsMax.java:260: error: cannot find symbol
    else if(errorCode == MaxErrorCode.NO_ACTIVITY)
    ^
    symbol: variable NO_ACTIVITY
    location: interface MaxErrorCode
    C:\Temp\TropicalTreasures2\tmp\app\src\main\java\com\giderosmobile\android\plugins\ads\frameworks\AdsMax.java:314: error: method does not override or implement a method from a supertype
    @Override
    ^
    C:\Temp\TropicalTreasures2\tmp\app\src\main\java\com\giderosmobile\android\plugins\ads\frameworks\AdsMax.java:319: error: method does not override or implement a method from a supertype
    @Override
    ^
    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    Note: Some input files use unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    4 errors
  • hgy29hgy29 Maintainer
    MobAmuse said:

    All good ...but... with any apps with AdMob & AppLovin Ads built against Android API 35 and latest Android Studio, I get...

    > Task :app:compileReleaseJavaWithJavac FAILED
    C:\Temp\TropicalTreasures2\tmp\app\src\main\java\com\giderosmobile\android\plugins\ads\frameworks\AdsMax.java:55: error: cannot find symbol
    AppLovinPrivacySettings.setIsAgeRestrictedUser(true,sActivity.get());
    ^
    symbol: method setIsAgeRestrictedUser(boolean,Activity)
    location: class AppLovinPrivacySettings

    There are good chances that applovin changed their API, while Gideros always tries to get the latest version of their SDK. If I remembered the version number Gideros ads plugin was written against you could have forced that one in gradle build script:
    implementation 'com.applovin:applovin-sdk:+'
    Anyway best way forward is to update Gideros code to match latest Applovin SDK

    Likes: MobAmuse

    +1 -1 (+1 / -0 )Share on Facebook
  • MobAmuseMobAmuse Member
    edited November 6
    Sorry, yes I have been away in retro coding land for the last 18months and just came back to Gideros again today, after getting a disruptive ads warning from Google overnight. Booted up the code in latest Gideros and Android Studio and got that error on export.
  • hgy29hgy29 Maintainer
    Turns out the fix is easy: remove all offending code since it is deprecated:
    https://github.com/gideros/gideros/commit/c8d3b41e98ce21d88dda7dd29de295845d2b9118

    Perhaps you can change it on your side (in your All Plugins\ads\bin\Android\src\com\giderosmobile\android\plugins\ads\frameworks folder) and check if everything is ok ?

    BTW, it looks like you can no longer use AppLovin if your app can be used by children:
    See "Prohibition on Children Data or Using the Services for Children or Apps Exclusively Targeted to Children" here: https://developers.applovin.com/ja/max/android/overview/privacy/

    Likes: MobAmuse

    +1 -1 (+1 / -0 )Share on Facebook
  • Great thanks, I'll wait for the next Gideros release in my case as up to my eyeballs in retro stuff currently and I will probably break it further anyway LOL.

    Yes thank you, regards the Prohibition stuff understood and all good.
  • MoKaLuxMoKaLux Member
    edited November 6
    Is this intended behavior? We cannot use hex color with Pixel (and others?) :'(
    for i = 1, 32 do
    --	local pixel = Pixel.new(math.random(0xffffff), 1, 32, 32) -- broken
    --	local pixel = Pixel.new(0xffffff, 1, 32, 32) -- broken
    	local pixel = Pixel.new(ColorValue(0.1, 0.5, 0.2, 1), 32, 32) -- OK
    	pixel:setPosition(math.random(640), math.random(360))
    	stage:addChild(pixel)
    end
    I loved using hex color because you could crank up the alpha value above 1 to have very bright colors. It's not big deal since I can use shaders instead, just curious ;)
    Thank you
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
  • hgy29hgy29 Maintainer
    Definitely should still be working with numbers. What happens with the first two cases ? Does it crash ? (Sorry I am AFK)
  • MoKaLuxMoKaLux Member
    edited November 6
    hgy29 said:

    Definitely should still be working with numbers. What happens with the first two cases ? Does it crash ? (Sorry I am AFK)

    oh in new Gideros alpha is missing from previous Gideros (Pixel.new(color,alpha,width,height)). This works in Gideros 2024.11:
    local pixel = Pixel.new(math.random(0xffffff), 32, 32) -- working but no alpha
    PS: take it easy hgy29 ;)
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
  • hgy29hgy29 Maintainer
    This is a bug, how can I have missed that! I will push a fix tomorrow

    Likes: MoKaLux

    +1 -1 (+1 / -0 )Share on Facebook
  • MoKaLuxMoKaLux Member
    edited November 6
    does it make sense in this category please :s ?
    https://wiki.gideros.rocks/index.php/ColorValue

    I will try to add the new additions asap God's willing o:)
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
Sign In or Register to comment.