discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Live GNUstep Android game ( Golf Blitz )


From: Jordan Schidlowsky
Subject: Re: Live GNUstep Android game ( Golf Blitz )
Date: Mon, 13 May 2019 10:33:36 -0600

Thanks.  Yes I've been following what you and Greg have been doing with the tools-android project, great work!  We kinda abandoned gnustep-config and gnustep-make and just wrote CMakeLists.txt for everything.  As David eluded to earlier in this thread, it's kinda the lesser of all evils at this point regarding C/C++ build systems...   It was appreciated when we built everything with ASan, and when debugging in Android Studio to track down bugs, etc.

We ran into a rather 'fun to find' arm64 ivar offset bug with the 1.9 runtime and the latest ndk/clang.  Happened VERY rarely, and was quite difficult to find and identify as it usually failed silently with unexpected values in ivars.  But I've got a few months to get everything running on arm64 before our deadline hits, so I'm hoping to get everything running on the 2.X runtime.  The latest beta NDK clang is r346389, which doesn't include what looks like a few important commits David has made to fix a _Bool ivar encoding size which I'm particularly worried about.  At any rate, the latest NDK may not include the clang we need so I will probably just build clang manually.

Regarding android support in libs-base, I'm curious what your strategy is for things like say NSBundle?  Planning on supporting any API in that class, or just going to punt?


On May 7, 2019, at 2:06 PM, Frederik Seiffert <frederik@algoriddim.com> wrote:

Congratulations on the release, really great to see GNUstep used in the wild like this!

As we’ve also been working on an GNUstep Android toolchain (announcement forthcoming by Greg Casamento), I’d love to see if we can somehow combine our efforts towards making GNUstep work great on Android.

Our solution to managing the build process has been a collection of concise scripts, one for each library, to pre-build the toolchain into a common shared location (for all ABIs). An Android project can then integrate the toolchain by calling gnustep-config in that location to get the necessary compiler/linker flags (e.g. from CMake as shown in our Android Studio example project).

Other than that our setup seems very similar (e.g. using libdispatch and ARC), but it’d be great to hear where it differs from yours. We also have an integration with Qt internally (including integrating libdispatch with the Qt run loop) which I hope to share as another example.

While we’re still a long way from shipping something with this setup we’re pretty happy with our early prototypes using it.

As a side node, as of today the toolchain also works on arm64 and x86/x86_64 (great for using the emulator) using the gnustep-1.9 runtime (we tried using the 2.0 runtime but ran into an issue with the clang version that is part of the NDK, but hopefully we can make the switch with a future NDK release).

Frederik


Am 04.05.2019 um 05:49 schrieb Jordan Schidlowsky <jordanschidlowsky@gmail.com>:

Hey all, just wanted to share with everyone on the list we FINALLY launched our Android game built on GNUstep, Golf Blitz.   It of course has an iOS counterpart but the Android build is built on top of GNUstep.   If you have an android device you can find it easily in the Google Play store by searching for "Golf Blitz", it's free.  It's a quite strange multiplayer golf game...

Some highlights:

Runtime: gnustep-runtime-1.9
Arch: armv7a softfp
Graphics: GLESv2, cocos2d
Uses blocks, arc, and libdispatch heavily.  Libdispatch isn't built into any runloop and we kinda bootstrap the apps main thread onto a java render thread...  We also just drain the main dispatch queue manually and the start of our game loop.  
Libs-base version:   9bcef37ae0bdf2ce5a1baacac2a3288cb39e2f03
Cloud game servers:  Google cloud

Next up on my todo list is the get the game running on the 2.1 runtime (thanks David for all your work!), as Google has a requirement that all new game updates have to be built as arm64 binaries by August.   I definitely will be able to provide a decent amount of testing for that runtime and arch.

Cheers,
-Jordan
_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustep@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnustep



reply via email to

[Prev in Thread] Current Thread [Next in Thread]