web-dev-qa-db-ja.com

Android別のスレッドでのゲームループ

私は最初にiOS用に書かれたゲームを移植しようとしていますが、特定のことをどのように行うべきかについて疑問があります。

私はAndroidのゲームループの多くの例を探してきましたが、ゲームループはどこでもメインUIスレッドではなく、別のスレッドで実行するように設計されています。ただし、私のゲームシーンはOpenGLグラフィックと標準のAndroidビュー(ボタン、ラベルなど))の組み合わせであり、設計上、主要なゲームロジックとOpenGL描画は別々のスレッドで行われます。残りの標準的なものはメインUIスレッドで行われます。

多くの場合、メインUIスレッドからゲームスレッドで実行する必要がある関数を呼び出す必要があります。その逆も同様です。非常に基本的で単純な例として、ユーザーがタッチ(UIスレッドで検出される)を実行すると、イベントが伝播され、ゲームスレッドによって処理される必要があります。

このようなクロススレッドの相互作用を行う方法について、いくつかの優れたメカニズムまたはパターンを知っていますか?おそらく別のスレッドでループを実行しないことによって、ゲームループのより簡単な解決策はありますか?

1
Dusan

別のスレッドでループを実行する場合は、進行中の他のすべてと同期を保つ必要があります。ただし、これにより洞察が得られるはずです: https://gamedev.stackexchange.com/questions/651/tips-for-writing-the-main-game-loop

私はAndroidでプログラミングしていませんが、Javaでプログラミングしました。私のゲームループの例を見たい場合は、ここでコードを取得できます: https://github.com/moorej/RetroPlexjava

1
user68738