Re: Oolite a GNUstep-based game released on MS Store and FlatHub

Michael Rans <[email protected]> Fri, 27 Feb 2026 08:59:03 +1300
Newsgroups gmane.comp.lib.gnustep.general
Message-ID <[email protected]>
Regarding the crash, that is odd since the AppImage is built on clang 
using Ubuntu and the Flatpak also uses clang. Did you use 
ShellScripts/Linux/checkout_deps.sh to build GNUstep? The versions of 
GNUstep libraries needed by Oolite are newer than the latest stable 
releases because certain fixes and additions since the last stable 
releases are needed. The script checks out from GitHub the latest commit 
of each of the GNUstep libraries. Once new stable releases are made, I 
will change to use them. This will be particularly beneficial in 
simplifying the Windows build assuming those new stable releases are put 
up as MSYS2 packages. It would be nice if there could also be stable 
clang packages for major distros flavours like Debian, Fedora and Arch 
in future, but until then for clang, building the libraries will be needed.

I want to make a clarification about framerate as I misunderstood what 
our main Windows dev said about it. I'll just quote him directly to 
avoid confusion:

"The framerate of the Clang build on Windows is not significantly higher 
than gcc's, but it is a bit better, there is indeed a small difference 
when comparing similar build configurations at uncapped framerate and 
under similar entity loads at the same location between the two builds 
but it is not that significant. Both hit 400+ fps on my tests but it's 
not like Clang hitting 600 fps and gcc hitting only 450. Plus, at the 
end of the day almost everyone plays with v-sync on, which limits 
framerate to the monitor refresh anyway (60, 70, 120, 144 fps etc.). 
Where the Clang build shines though, is maintaining a steady frame pace. 
The Clang build for me offers a gameplay experience that just feels 
smoother - that's why I recommend it."

Apologies for my incorrect reporting on that.

Please let me know if using the latest builds of GNUstep libraries makes 
any difference to the crash.

Thanks,
Mike

On Wed, Feb 25, 2026 at 11:45 AM, R Frith-Macdonald wrote:

    I thought I'd try that out on Debian. Using current (from the
    respective git repositories this morning) gnustep and oolite code, I
    built with gcc and with clang.

    On my system in the tutorial the gcc version was reporting a frame
    rate in the 70s.

    Unfortunately, the clang version crashed after displaying the
    startup screen...

    1  0x00007ffff68064ac in __GI_abort () at ./stdlib/abort.c:77
    #2  0x00007ffff6806420 in __assert_fail_base (fmt=<optimized out>,
         assertion=<optimized out>, file=<optimized out>, line=14876,
         function=<optimized out>) at ./assert/assert.c:118
    #3  0x00007ffff68166dc in __assert_fail (assertion=<optimized out>,
         file=<optimized out>, line=<optimized out>, function=<optimized out>)
         at ./assert/assert.c:127

    #4  0x0000555555aab11b in -[ShipEntity(SubEntityRelationship)
    isShipWithSubEntityShip:] (self=0x52300003d508, _cmd=<optimized
    out>, other=0x51f000131688)

         at src/Core/Entities/ShipEntity.m:14876
    #5  0x000055555596fadb in -[Entity parentEntity] (self=0x51f000131688,
         _cmd=<optimized out>) at src/Core/Entities/Entity.m:592
    #6  0x00005555559708bf in -[Entity absolutePositionForSubentityOffset:] (
         self=<optimized out>, _cmd=<optimized out>, offset=...)
         at src/Core/Entities/Entity.m:679
    #7  0x00005555559705ed in -[Entity absolutePositionForSubentity] (
         self=0x7ffff21790d0, _cmd=<optimized out>)
         at src/Core/Entities/Entity.m:671
    #8  0x00005555559703f5 in -[Entity updateCameraRelativePosition] (
         self=0x51f000131688, _cmd=<optimized out>)
         at src/Core/Entities/Entity.m:665
    #9  0x0000555555970246 in -[Entity setPosition:] (self=<optimized out>,
    --Type <RET> for more, q to quit, c to continue without paging--
         _cmd=<optimized out>, posn=...) at src/Core/Entities/Entity.m:650

    #10 0x0000555555ade17c in -[OOExhaustPlumeEntity
    initForShip:withDefinition:andScale:] (self=0x51f000131688,
    _cmd=<optimized out>, ship=<optimized out>,

         definition=<optimized out>, scaleFactor=<optimized out>)
         at src/Core/Entities/OOExhaustPlumeEntity.m:79

    #11 0x0000555555addfb5 in +[OOExhaustPlumeEntity
    exhaustForShip:withDefinition:andScale:] (self=<optimized out>,
    _cmd=<optimized out>, ship=0x52300003d508,

         definition=0x50400138bc58,

         scale=<error reading variable: Value cannot be represented as
    integer of 8 bytes.>) at src/Core/Entities/OOExhaustPlumeEntity.m:63

    #12 0x0000555555a4fa31 in -[ShipEntity setUpSubEntities] (
         self=<optimized out>, _cmd=<optimized out>)
         at src/Core/Entities/ShipEntity.m:869
    #13 0x0000555555a4c4b1 in -[ShipEntity setUpFromDictionary:] (
         self=<optimized out>, _cmd=<optimized out>, shipDict=0x507000113da8)
         at src/Core/Entities/ShipEntity.m:446
    #14 0x00005555559879c7 in -[PlayerEntity setUpShipFromDictionary:] (
         self=0x52300003d508, _cmd=<optimized out>, shipDict=<optimized out>)
         at src/Core/Entities/PlayerEntity.m:2285
    #15 0x0000555555d3694a in -[Universe setUpInitialUniverse] (

         self=<optimized out>, _cmd=<optimized out>) at
    src/Core/Universe.m:10573 #16 0x0000555555cfe793 in -[Universe
    initWithGameView:] (self=0x52d000adc408,

         _cmd=<optimized out>, inGameView=<optimized out>)
    --Type <RET> for more, q to quit, c to continue without paging--
         at src/Core/Universe.m:834
    #17 0x0000555555cba6dd in -[GameController applicationDidFinishLaunching:] (

         self=0x511000009788, _cmd=<optimized out>,
    notification=<optimized out>)

         at src/Core/GameController.m:253
    #18 0x0000555555cc4061 in main (argc=<optimized out>, argv=<optimized out>)
         at src/SDL/main.m:209