oak icon indicating copy to clipboard operation
oak copied to clipboard

Ios & android support

Open fastfading opened this issue 6 years ago • 6 comments

Is there plan for ios & android support?

fastfading avatar Sep 15 '17 03:09 fastfading

No plan in terms of a timeline, but it'd be good to get mobile support eventually, yes.

Due to ease of emulation (and therefore testing) android would probably come before ios. A hypothetical timeline would put this after 2.0.

200sc avatar Sep 15 '17 03:09 200sc

@fastfading This is something you're still interested in so I'll go into more depth on the issues with android and ios:

Other game engines in Go have solved the issue of working with android and ios by instructing the user to stitch together assistant files in other languages, in the little I've looked around. Oak wants to be a pure Go language, so if support for mobile means requiring non-Go language files we want to generate all of those files for the user, which is a significant endeavour we haven't looked into because we haven't wanted to make a mobile game-- mobile games have a lot of restrictions that make it hard to make something new and fun.

200sc avatar Nov 13 '17 08:11 200sc

Yes , u are right. However, from the user(player) view, mobile game is the future. That is why the populor engine like ue4 ,unity, cocos2dx all support mobile.

the gomobile project support programing mobile game in go, however it is a pity it stopped developing.

2017-11-13 16:33 GMT+08:00 Patrick Stephen [email protected]:

@fastfading https://github.com/fastfading This is something you're still interested in so I'll go into more depth on the issues with android and ios:

Other game engines in Go have solved the issue of working with android and ios by instructing the user to stitch together assistant files in other languages, in the little I've looked around. Oak wants to be a pure Go language, so if support for mobile means requiring non-Go language files we want to generate all of those files for the user, which is a significant endeavour we haven't looked into because we haven't wanted to make a mobile game-- mobile games have a lot of restrictions that make it hard to make something new and fun.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/oakmound/oak/issues/49#issuecomment-343847392, or mute the thread https://github.com/notifications/unsubscribe-auth/AH9v9AAgZhRG9K1thbba2LpBbDKAC16aks5s1_7DgaJpZM4PYb46 .

fastfading avatar Nov 14 '17 05:11 fastfading

#188 Adds experimental android support. IOS is still not going to come soon; I don't have an IOS device and developing for IOS does not personally interest me, but if anyone else can and wants to try adding it, it would be appreciated!

200sc avatar Feb 05 '22 14:02 200sc

#188 Adds experimental android support. IOS is still not going to come soon; I don't have an IOS device and developing for IOS does not personally interest me, but if anyone else can and wants to try adding it, it would be appreciated!

I tried to build one of the examples blank on my macOS iMac targeting iOS with gomobile build -target ios and this is what happens:

(⎈ |local:default)
prologic@Jamess-iMac
Sun Oct 02 11:16:10
~/tmp/test-gomobile/oak/examples/blank
 (master) 130
$ gomobile build -target ios -bundleid io.mills.oak
gomobile: go build -ldflags=-w -o=/var/folders/8h/c9gl4gms3fjb0kyf7nb42ybh0000gn/T/gomobile-work-4044548340/ios/arm64 github.com/oakmound/oak/v4/examples/blank failed: exit status 2
# github.com/go-gl/glfw/v3.3/glfw
In file included from ../../../../../go/pkg/mod/github.com/go-gl/glfw/v3.3/[email protected]/c_glfw.go:4:
In file included from ./glfw/src/context.c:30:
In file included from ./glfw/src/internal.h:184:
./glfw/src/cocoa_platform.h:30:10: fatal error: 'Carbon/Carbon.h' file not found
#include <Carbon/Carbon.h>
         ^~~~~~~~~~~~~~~~~
1 error generated.
# dmitri.shuralyov.com/gpu/mtl
mtl.m:16:22: error: 'headless' is unavailable: not available on iOS
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.0.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:395:46: note: 'headless' has been explicitly marked unavailable here
mtl.m:17:22: error: 'lowPower' is unavailable: not available on iOS
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.0.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:389:46: note: 'lowPower' has been explicitly marked unavailable here
mtl.m:18:23: error: 'removable' is unavailable: not available on iOS
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.0.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:403:47: note: 'removable' has been explicitly marked unavailable here
mtl.m:26:37: error: 'MTLCopyAllDevices' is unavailable: not available on iOS
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.0.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:104:37: note: 'MTLCopyAllDevices' has been explicitly marked unavailable here
mtl.m:32:38: error: 'headless' is unavailable: not available on iOS
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.0.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:395:46: note: 'headless' has been explicitly marked unavailable here
mtl.m:33:38: error: 'lowPower' is unavailable: not available on iOS
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.0.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:389:46: note: 'lowPower' has been explicitly marked unavailable here
mtl.m:34:39: error: 'removable' is unavailable: not available on iOS
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.0.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:403:47: note: 'removable' has been explicitly marked unavailable here
mtl.m:173:49: error: 'synchronizeResource:' is unavailable: not available on iOS
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.0.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLBlitCommandEncoder.h:50:1: note: 'synchronizeResource:' has been explicitly marked unavailable here

Looks like oak depends on github.com/go-gl/glfw/v3.3/glfw somewhere which is trying to reference a C library I don't seem to have? I'm not very familiar with either glfw or oak so all I can do is help test/build if anyone wants to chime in that knows this stuff better than I? 🤔

prologic avatar Oct 02 '22 01:10 prologic

It's probably defaulting to try to build a darwin desktop target, because there isn't a driver underneath shiny/driver that matches gomobile's ios build tags. Until such a driver exists it will probably fall over immediately.

200sc avatar Oct 04 '22 00:10 200sc