[facebook instant games] モバイル端末でのみエラー (is problems only for physics2?)


#1

** 環境

  • GDevelop 5.0.0-beta88
  • ローカル開発環境はMacOS
  • GDevelop歴半年

** 相談内容
GDevelopでfacebook instant games用にpublishしたzipをそのままfacebook for developersのテストアプリのウェブホスティングにアップロードして実行しています。

PCのブラウザ(chrome)では通常にゲームが実行されていますが、AndroidまたはiOSの端末から実行すると描画が停止しています。

AndroidをUSB Debug(Remote Device at Chrome)可能にしてtraceすると以下のerror messageが出ています。

シーン1で以下のエラーがあり、

[Intervention] Ignored attempt to cancel a touchstart event with cancelable=false, for example because scrolling is in progress and cannot be interrupted.

次にシーン2に切り替わった直後に、以下のエラーがあります。

Uncaught TypeError: Module.getCache is not a function
at eval (eval at O (box2d.js:8), :1:80)
at _emscripten_asm_const_int (box2d.js:172)
at sw (box2d.js:190)
at Qy (box2d.js:186)
at yy (box2d.js:186)
at Hh (box2d.js:182)
at F.Step (box2d.js:667)
at gdjs.Physics2SharedData.step (physics2runtimebehavior.js:94)
at gdjs.Physics2RuntimeBehavior.doStepPreEvents (physics2runtimebehavior.js:548)
at gdjs.Physics2RuntimeBehavior.gdjs.RuntimeBehavior.stepPreEvents (runtimebehavior.js:56)
at gdjs.TiledSpriteRuntimeObject.gdjs.RuntimeObject.stepBehaviorsPreEvents (runtimeobject.js:935)
at gdjs.RuntimeScene._updateObjectsPreEvents (runtimescene.js:464)
at gdjs.RuntimeScene.renderAndStep (runtimescene.js:274)
at gdjs.SceneStack.step (scenestack.js:36)
at runtimegame.js:471
at gameLoop (runtimegame-pixi-renderer.js:370)

あまりjavascriptの造詣があるわけではないので、フレームワーク(GDevelop)の中で行われていることでerrorがあっても何が原因なのかよくわからず…
(Moduleオブジェクトがインスタンスでない、くらいのことは理解できますが…)
対策方法について何かお気付きのことがあれば教えてください。

ゲームは、error message からもわかりますが、Physics2を中心に作っています。
javascriptイベントも多めです。
facebook instant gamesではなく自前のS3にホスティングしてモバイル端末のchromeやsafariで開くと正常に動作しています。
facebook instant gamesにテストアプリとして配置してfbアプリのwebviewで実行される場合のみ、エラーが発生しているように思います。


#2

(replying in English)
Are you able to share with me the game triggering the error, as a zip file or with a link? I can take a look at the issue then.


#3

thx 4ian
sent the URL of the source file to your email (Florian[dot]Rival[at]gmail.com).


#4

ExampleにあるPhysics2を使った「Ragdoll」をfb instant gamesにデプロイしても、同じ現象でした(同じエラーで、描画が止まり、動作しませんでした)。

When deploying “Ragdoll” using Physics2 in the example to fb instant games, the same situation occurred (drawing stopped and did not work with the same error).


#5

試しに、GDevelop4でExampleゲームの「Physics」をfb instant gamesに上げてみましたが、やはり同じエラー「Uncaught TypeError: Module.getCache is not a function」が出ていました。

これは、GDevelopでは物理を使ったゲームをfb instant gamesに乗せられないバグなのではないでしょうか?

I tried the “Physics” of the Example game to fb instant games in GDevelop4, but again the same error
“Uncaught TypeError: Module.getCache is not a function” appeared.

Is’nt work GDs Physics Game on fb instant games because of GD bug?
please give me advice.


#6

Sorry for the delay. I think it might be a Facebook Instant Games related bug, because when I package and publish it as an instant games, it:

  • Works on desktop
  • Works on mobile when launched in the browser (using fb.gg/play/xxxx url)
  • Freeze on mobile in the app.

Looking more what can be happening…


#7

I fixed the issue for next version :slight_smile:
Unfortunately there was a conflict between instant games and the physics engine.

If you can’t wait for next version, you can:

  • Export your game as a facebook instant game zip.
  • Extract the zip in a folder
  • Replace the file Extensions/Physics2Behavior/box2d.js by the new one that you can download here.
  • Compress again all the files in a single zip. Be sure that the index.html is at the root of your zip (there must NOT be a folder - Facebook Instant Games won’t accept it)

Let me know if that works for you :slight_smile:
Next version will have this issue solved. I’ll upload it as soon as I can.

Thanks for you patience!


#8

This is fixed in the new version: https://github.com/4ian/GDevelop/releases/tag/v5.0.0-beta89 :slight_smile:


#9

Hi 4ian,

As you said, it worked by replacing box2d.js.
We will continue working on the beta-89 release.

Thank you for everything!


#10

Happy that it works :+1: