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

Gideros 2024.6 Released

hgy29hgy29 Maintainer
Hi everyone,

Gideros 2024.6 is out. It mostly bring fixes, but there is a possibly breaking change in the way device orientation is handled on iOS and Android: the auto-rotation setting, now in Graphics tab of project settings, used to enable the device to autorotate the canvas depending on physical orientation, in an all or nothing way.

Now you can select to allow normal orientation only (the one you choosed in orientation setting, that is fixed orientation), both normal and upside down, all orientations (4 or only 3 on some android devices), or only use whatever the system thinks is the best.

This is a quite complex change, so don't hesitate to report any issues with it.

Full change set:

Improvements

[export/ios] Allow changing keyboard type
[plugin/ogg] Support opus recording
[plugin/ogg] Support Theora encoding
[core] Rework screen orientation (breaking change)

Fixes

[gfx/textfield] Fix placement computations in texts
[export/apple] Fix special keys key codes for Mac
[export/oculus] fix menu action label
[gfx/path] Allow setLineThickness to be called before setPath()
[layout] Allow layout to be triggered when Sprite ios added to stage
[gfx/sprite] Add missing Sprite.STENCIL_GREATER definition
[plugin/camera] Fix for QT 6

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

Comments

  • PaulHPaulH Member
    Thanks for the update! I really appreciate the steady stream of improvements and fixes!

    I'm seeing one strange issue, though. I see it in every build since 2024.3, and I wonder if may be related to the issues discussed in the 2024.3 announcement thread.

    What I'm seeing it that if at some point a sprite has no children, then a child is added before the next frame, then when garbage collection happens, it will corrupt that sprite, possibly releasing some memory that wasn't garbage. In some cases I see sprites distorted, and in other cases completely blank. This happens in the player and in exported apps, at least on Android.

    It's taken me quite a while to narrow this down to the point that the small block of code below reproduces the error. If the variable show_failure is nil, you'll see a text field immediately, and then another will be added 3 seconds later. If you uncomment the first line so show_failure is set to true the code will remove the first text field from the main sprite before adding the new one, and if that's done followed by a collectgarbage(), the screen goes blank after 1 frame, so both text fields are gone. In older versions of Gideros (definitely in 2023.11, but I think it may be anything older than 2024.3) it will display both text fields even if show_failure is set to true.

    Here's the code:
     
    --show_failure = true
    application:setLogicalDimensions(1920, 1080)
    application:setOrientation(Application.LANDSCAPE_LEFT)
     
    global_content_layer = Sprite.new()
    stage:addChild(global_content_layer)
     
    local tf = TextField.new(nil, "First text...")
    tf:setScale(5)
    tf:setPosition(100, 200)
    global_content_layer:addChild(tf)
     
    Timer.delayedCall(3000,
    	function()
    		local tf = TextField.new(nil, "New text")
     
    		if show_failure then
    			global_content_layer:removeChildAt(1)
    		end
     
    		-- Add new text:
    		tf:setScale(5)
    		tf:setPosition(100, 300)
    		global_content_layer:addChild(tf)
     
    		-- Collect garbage. If the main sprite had no children, this will collect some data that
    		-- isn't garbage and the screen will go blank:
    		collectgarbage()
    	end
    )

    Likes: MoKaLux, hgy29, pie

    +1 -1 (+3 / -0 )Share on Facebook
  • hgy29hgy29 Maintainer
    Many thanks @PaulH for pointing out that bug, and even more for providing a reproducible test case, this is invaluable. I am investigating it already (spent two hours so far) and what I can tell at this point is that everything is handled correctly memory wise at CPU side, but somehow not at GPU side. I am trying to figure out.

    Likes: MoKaLux, PaulH

    +1 -1 (+2 / -0 )Share on Facebook
  • hgy29hgy29 Maintainer
    edited June 21
    Found and fixed! It was caused by recent OpenGL backend optimizations in Gideros where I tried to avoid unnecessary OpenGL calls. There was a case where a just deleted buffer wasn't properly unbound, so that a subsequent buffer created with the same identifier wasn't re-bound to OpenGL context (since Gideros thought it was the same).
    Depending on the opengl driver, this could create loss of data or even crashes.

    If anyone is interested, here is the fix: https://github.com/gideros/gideros/commit/78f90039bc42c8da8d2ac8bbd78200d2698b37fe

    Likes: keszegh, pie, MoKaLux

    +1 -1 (+3 / -0 )Share on Facebook
  • hgy29hgy29 Maintainer
    Thinking of it @MoKaLux, this could well be the cause of the crash you had in opengl driver.

    Likes: MoKaLux, kinrpg

    +1 -1 (+2 / -0 )Share on Facebook
  • keszeghkeszegh Member
    thank @hgy29 ,
    it would be great if that was the only cause of crashes.

    Likes: MoKaLux

    +1 -1 (+1 / -0 )Share on Facebook
  • PaulHPaulH Member
    Thanks for the fix! I'm glad the sample code was helpful.

    Likes: MoKaLux, hgy29

    +1 -1 (+2 / -0 )Share on Facebook
  • MoKaLuxMoKaLux Member
    edited June 21
    hgy29 said:

    Thinking of it @MoKaLux, this could well be the cause of the crash you had in opengl driver.

    Indeed, I built Gideros with the new changes and tested my beat'em up, the Player crashes no more :)

    Thank you captain hgy29, mister PaulH and all of you guys (pals?) :)

    Likes: PaulH, hgy29, kinrpg

    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
    +1 -1 (+3 / -0 )Share on Facebook
  • MoKaLuxMoKaLux Member
    edited June 22
    Regarding the Qt build and full screen: when I now press ALT+ENTER the app not only freezes but now it force close as well, which is better than just freezing and not force closing.

    (Still working just fine in a win32 build)

    EDIT: clicking the maximize button (which goes to full screen in Qt!) works as expected
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
  • MoKaLuxMoKaLux Member
    MoKaLux said:

    Indeed, I built Gideros with the new changes and tested my beat'em up, the Player crashes no more :)

    EDIT: sorry but I experience some crashes from time to time, although far far less than before. Maybe something is still not freed?
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
  • MoKaLuxMoKaLux Member
    edited June 26
    I did a clean build 2024.6.1 and so far so good :)

    PLUS: that fixed the ALT+ENTER full screen bug I had for Qt builds o:)

    Thank you captain hgy29 <3
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
  • QugurunQugurun Member
    Thanks for the update. I have a problem that has been going on for a couple of years. Builds for the Internet, even for an empty project, do not work on my ios browser
  • keszeghkeszegh Member
    a small bug:
    when i go to full-screen and then back to non-full screen using application:setFullScreen then 'auto-scaling' goes wrong in the (windows) player.
    (note: switching full-screen with alt+return does not have this issue)
  • hgy29hgy29 Maintainer
    Hello @Qugurun,

    Could you give a bit more details please ? I have no problem opening Gideros apps built for HTML on my iOS safari (iPhone 15). Issues could be caused by compression, but also other things. It would help to know the browser version and the export settings. It could also be a problem with the web server not understanding webassembly MIME Type
  • hgy29hgy29 Maintainer
    Just released officially Gideros 2024.6.1 update.

    ChangeLog:
    [gfx/textfield] Fix text layout in case of single line
    [backend/opengl] Fix deleted buffers not unbound
    [backend/gl] Don't assume buffer bindings are kept between frames
    [export/html] Ignore JPEG truncated warning
    [export/win32] Fix fetching state of Alt key
    [plugin/ogg] Fix theora building on UWP
    +1 -1 (+5 / -0 )Share on Facebook
  • keszeghkeszegh Member
    thanks for the update.

    about the player full screen issues. when in fullscreen the player menus do not open for me on windows.
  • keszeghkeszegh Member
    this ogg plugin is interesting, can you list on https://wiki.gideros.rocks/index.php/Ogg
    the list of functions that it has (in github you mention converting to ogg for example)?
    is it supported on all platforms?
  • hgy29hgy29 Maintainer
    @keszegh, I agree that proper documentation is needed, meanwhile here is a sample code to record a video:
    -- Microphone plugin, for recording in gideros
    require "microphone"
    -- Camera plugin, to get images from
    require "camera"
    -- Theora system (from ogg plugin)
    local theora=require "theora.core"
     
    --Locate available cameras
    lst=Camera.availableDevices()
    for k,cam in ipairs(lst) do
    	print("#"..k.." Desc:"..cam.description.." Pos:"..cam.position.." Dev:"..cam.name)
    end
    -- Pick the first available
    local cname=lst[1].name
     
    cw,ch=640,480
    --Theora needs full 16x16 blocks
    ch=(ch+15)&~15
    cw=(cw+15)&~15
    --Create texture and start camera
    Camera.texture=RenderTarget.new(cw,ch)
    Camera.start(Camera.texture,cname)
     
    --Set our stage size
    application:setLogicalDimensions(cw,ch)
    --Show our live video
    local b=Bitmap.new(Camera.texture) 
    stage:addChild(b)
     
    --Prepare for recording
    local mic=Microphone.new("",24000,2,16)
    mic:setOutputFile("|T|mic.ogg")
     
    --Laucnh recording process
    Core.asyncCall(function()
    	--Wait a frame and disable auto yield
    	Core.yield(true)
    	--Start recording and get recording stream id
    	mic:start()
    	local id=mic:getStreamId()
    	--Encode video header immediately, before audio data gets encoded
    	--Parameters are:
    	-- . stream id
    	-- . codec name
    	-- . frame rate (here 30fps)
    	-- . image width
    	-- . image height
    	-- . image format (use 3 for now, nothing else is supported)
    	-- . image quality
    	theora.beginVideo(id,"theora",30,cw,ch,3,0.6)
    	-- Now encode 120 video frames, every other gideros frame (60fps->30fps)
    	for i=1,120 do
    		--Parameters:
    		-- . stream id
    		-- . frame id (zero based)
    		-- . image texture
    		-- . end of stream indicator
    		theora.encodeVideoFrame(id,(i-1),Camera.texture,(i==120))
    		Core.yield(true)
    		Core.yield(true)
    	end
    	-- Stop recording
    	mic:stop()
    	-- For testing, read encoded file and print its size
    	local f=io.open("|T|mic.ogg","rb")
    	local ct=f:read("*all")
    	f:close()
    	print("Ended",#ct) 
    end)

    Likes: keszegh, MoKaLux, pie

    +1 -1 (+3 / -0 )Share on Facebook
  • MoKaLuxMoKaLux Member
    edited June 27
    will add to wiki asap ;)

    EDIT: only example copied will create the functions page asap

    Likes: pie, kinrpg

    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
    +1 -1 (+2 / -0 )Share on Facebook
  • kinrpgkinrpg Member
    Hello, Gideros Player still doesn't open here, even with version 6.1
    I checked and my video card is old and supports OpenGL3.3 will it be too old?
  • kinrpgkinrpg Member
    Linux feedback: For some reason the Gideros Studio .sh file doesn't open when you click on it directly, but it works normally when you call it from the terminal by running "./Gideros\ Studio.sh".
    The Gideros Studio editor doesn't recognise the ~ ` (the key just below ESC) and " ' (the key to the left of RETURN) keys on my keyboard (Apple Mini Magic Keyboard), but everything else is fine, including the special characters.
    I'll have to test other keyboards to see if it's something in the editor or the model of keyboard/layout used, but you can't programme in the editor without being able to type ".
    Gideros Player opens beautifully (as shown in the attached image) without any problems. Same thing when building the package for windows, Gideiros Player runs in Wine without any problems.
    Screenshot_20240704_220352.jpg
    1920 x 1080 - 401K

    Likes: MoKaLux

    +1 -1 (+1 / -0 )Share on Facebook
  • MoKaLuxMoKaLux Member
    edited July 11
    please allow me some late feedback :(

    the Player crashes are back!
    After updating to 2024.6.1 the Player only crashed one or two times at most.

    Now the Player crashes a lot, I mean every 2 or 3 builds ("start"). Sorry I don't have more info.
    AppName GiderosPlayer.exe 
      AppVersion 0.0.0.0 
      AppTimeStamp 667a6ae9 
      ModuleName nvoglv64.dll 
      ModuleVersion 31.0.15.5134 
      ModuleTimeStamp 65b7c9b2 
      ExceptionCode c0000005 
      FaultingOffset 0000000000522b67 
      ProcessId 0x5a0 
      ProcessCreationTime 0x1dad3bbcb7723a6 
      AppPath C:\Program Files\Gideros\GiderosPlayer.exe 
      ModulePath C:\Windows\System32\DriverStore\FileRepository\nvhdc.inf_amd64_7f14eb0fd6d4fd5b\nvoglv64.dll 
      IntegratorReportId 10d8fe0a-5a88-4046-875f-023c9ea4aa16 
      PackageFullName  
      PackageRelativeAppId
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
  • PaulHPaulH Member
    I'm also seeing some player crashes, including custom exported players on Android, but I'm nowhere close to pinning down the cause.

    Another thing I'm seeing is a graphical artifact in a game that builds a lake map tile by tile. Each tile is built on its own render target, and all drawn onto another. With the newer builds most of the lake map looks as it should, but at some point a tile will be made at a smaller scale, and every subsequent tile will have the same issue, so as the map gets built in columns from left to right, the right side ends up made of dots, each a miniature tile. That's buried in a lot of layers of code, and split up to do the work over multiple frames so the app doesn't appear to hang while doing a bunch of processing. As a result it's going to take some time to try to pin down what's going on, but I'll try to come up with a small amount of code that will reproduce it.

    Likes: MoKaLux, dreiko65

    +1 -1 (+2 / -0 )Share on Facebook
  • PaulHPaulH Member
    I'm still trying to work out the underlying cause of the graphical artifact in one of my games that showed up in the newer builds, but I did find a simple way to crash the Player. Just call:

    Core.profilerStart()

    I have no idea if that's related to any other issues, though.

    Likes: MoKaLux

    +1 -1 (+1 / -0 )Share on Facebook
  • MoKaLuxMoKaLux Member
    edited July 19
    trying to help :(

    Gideros Studio -> Tools -> Check Syntax All:
    ---------- Compile started at 05:52:49.615 ----------
    "C:/Program Files/Gideros/Tools/luac.exe" -o ".tmp/main.lua.bin" "assets/main.lua"
    C:/Program Files/Gideros/Tools/luac.exe: assets/main.lua:148: unexpected symbol near 'if'
    make: *** [.tmp/main.lua.bin] Error 1
    ========== Compile finished ==========

    assets/main.lua:148:
    self.alphablend = if g_oalphablend ~= nil then g_oalphablend else true -- Luau ternary
    The code works just fine (Luau ternary operator syntax).

    I don't know if this false flag is critical for Gideros.
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
  • hgy29hgy29 Maintainer
    PaulH said:

    I'm still trying to work out the underlying cause of the graphical artifact in one of my games that showed up in the newer builds

    I saw some artifacts too on one of my old games I was updating. They seemed to happen on Tilemaps

  • MoKaLuxMoKaLux Member
    edited July 25
    Hello gideros people :)

    is it possible to turn these warnings off?
    libpng warning: iCCP: known incorrect sRGB profile
    libpng warning: Interlace handling should be turned on when using png_read_image
    win32 export (visible in the console)

    EDIT: I didn't experienced any Player crashes lately :) but unable to pinpoint what was causing them :/
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
Sign In or Register to comment.