oakmound / oak

A pure Go game engine
Apache License 2.0
1.54k stars 83 forks source link

Ios & android support #49

Open fastfading opened 7 years ago

fastfading commented 7 years ago

Is there plan for ios & android support?

200sc commented 7 years ago

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 commented 6 years ago

@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.

fastfading commented 6 years ago

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 notifications@github.com:

@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 .

200sc commented 2 years ago

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!

prologic commented 1 year ago

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/glfw@v0.0.0-20220320163800-277f93cfa958/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? 🤔

200sc commented 1 year ago

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.