だらだら〜自由自在〜

インディーゲーム制作チーム GAME GABURI でプログラム担当してます

Unity iOS BasicでLanchScreenでこけるやつの対処法

環境はUnity4.6.3 + Xcode6.1です。
Unity iOS Basicでビルドしてアプリが起動した直後、SplashScreenをロードするところ?
"You are not allowed to remove the Unity splash screen from your game"
というログを吐いてAbortしてしまう問題が発生した。
他の人も発生していて
4.6.2p2 Free Version iOS crash | Unity Community
こういうところが参考にして対処できた。自分の対処法は
UnityからpublishしたXcodeプロジェクトでプロジェクトの設定タブ[info]を開いて、その中の"UILaunchStoryboardName~iphone"というKeyを削除する(マウスをホバーさせるとマイナスアイコンでるのでそれで削除可能)。そしてCleanしてBuildして実行。
一応これで対処はできるものの、UnityでBuildしてReplaceすると設定が戻っていてちょっと面倒すぎる。BugReportは出してるみたいなこと書いてあった気がするけど、俺も出そうかな

Metal cocos 6

とりあえずGithubに上げた
nyakagawan/MetalCocos · GitHub
cpp-empty-testのTextureQuadが1枚かけるだけで、HelloWorldのifdefをはずして、labelとMenuボタンを描画ONすると、描画が乱れる。

これで一区切りとして、放置しているOculusを触りたい。
MetalはiOSじゃないとダメだし、OculusはGPUパワーいるからウチはWindowsDesktopじゃないと動かせないし。コンテキストスイッチコストがちょっと大きいのでMetalはしばらく休みかなー、わかんないけど

Metal cocos 5

なんとか休みが明けるまでにTextureQuadを描画するまで行けた。つまづいたところとか一応書いてみようとしているところだが、先にこの記念すべきスクリーンショットを貼っつけたい!ということで。

f:id:nyakagawan:20141221230446p:plain

まだUniform(定数バッファ)にちゃんと対応してなくて、TextureQuad特別仕様なプログラムになっているので、そこを対応して、他のShaderを移植してーって感じで進めていくかなぁ。

それ以外にOculusDK2を買って届いたはいいけど、まったく触ってないので、一応作るネタだけはあったりするのでそっちをやりたいという気持ちもあったり。

Metal cocos 4

やはりrenderCommandのcommit前にvertex/index-bufferをreleaseしていたのがabortの原因なようだった。

glのAPIGPU情報を取得しているっぽいところで最大TextureサイズをConfigureに設定していたが、これが動いてないのでTextureが作られない現象が発生していた。
GPU情報の取得とかについてはMetalはきっとサポートしてないと思うので、GLAPIをふっかつせねば。

やっとクラッシュせずに実行するところまで行ったが、HelloWorld.pngが表示されていない。
画面的にはLanchImageが出っぱなしになっているので、FrameBufferがSwapされていないとか?

Metal cocos 3

以下、作業しながらメモしたものなのであしからず…。
======================
EAGLViewのcontextの生成部分のMetal対応が必要で、そこでコンパイルエラーで止まっている。
contextは外部に公開されて使われているうようなので、その用途からMetalで相当するものを見つけるか。
もし相当するものがない場合は、互換レイヤーを今より上げて、GLViewのところでMetalViewを実装する必要があるかもしれない。
というか、どう見ても名前的にそちらのほうが正しいような気がする。

と、思ったが。GLViewはios抽象レイヤーの外なので、ここにMetalを入れるのも違うかも。てなると、今の実装で間違いじゃないのだけど…。
GLView部分にレイヤーを入れるとなると、大工事な気もする、調査してないし分からんけど。

にしても、VisualStudioに慣れきった体にはXcodeがキツイ…。

contextはGLのコンテキストのようだ。Metalでは不要な気がする。ってことでその辺はサクージョ。

実行すると"Metal default library not found"というメッセージでABORT。metalファイル(シェーダファイル)が見つからないためLibraryが作れないということらしく。
libcocos2dの中にいれたあったmetalファイルをtest-cpp-emptyのほう(スタートアッププロジェクト)にいれてやったら解決。

ShaderはとりあえずkShaderType_PositionTextureColor_noMVPだけswichcaseを対応。これ以外を使う場合programが見つからないで落ちるはず。

実行時にrenderEncorder.drawIndexPrimitivesでABORT。VertexBufferとIndexBufferをdraw前にreleaaseしてしまっているのが原因か?そもそも、頂点バッファとIndexBufferは最初に確保してあとは使いまわしたい気もする。それでよければsetupVBOの辺で初期化してやれば良いし、Metalサンプル見て、そういう運用じゃなさそうなら何か考える。

ViewとRenderer周りを整理するために書いたクラス図
f:id:nyakagawan:20141208002027p:plain

OculusRift GameJam 参加してきました。

遅ればせながら…。

去る2014/11/29、30に開催されましたOculusGameJamへ参加してきました。
僕は@yandoさんと2人チームでOculusRift+LeapMotionでチャーハンをひたすらフライパンで炒めてスコアを稼ぐ、という謎ゲームを制作しました!

僕はOculus実機を持ってないどころか、LeapMotion実機も無い状態で参加していたのですが、途中で心優しい他の参加者の方にLeapMotionを貸していただき、Oculusに関する調整は@yandoさん任せという状態で開発を行いました。僕の担当した部分は、チャーハンの注文を追加する部分や、具材を上空から降らせる部分とか、どちらかと言えばガワの部分を担当しました。

個人的に今回参加してよかったなぁという点を上げたいと思います。

  • OculusRiftを活用したゲームを沢山遊ぶことができた
  • LeapMotionについて詳しくなった
  • 1日目にちゃんと家に帰って寝れた
  • 前のGameJamに参加していた人に再会できた
  • GameJam自体おもしろい

などなどあります。この中でも「ちゃんと家に帰って寝た」そしてゲームはちゃんとそれなりに出来上がった。というのはちょっとした体験でした。今まで(といっても2回しかないですが)参加したGameJamではどちらも夜通しの作業だったので、こういう健康的というかw、あまり根を詰め過ぎずにやれたのは良かったです。

これでGameJamへの参加は3つめとなりますが、いつも最後は楽しく終われています。チームメイトに恵まれているというのも大きいと思いますが。今度はGlobalGameJamだと思いますので、それもぜひ参加したいと思っています。

最後に、作ったゲームを開発パートナーの@yandoさんがLeapMotion3DJamというコンテストに応募してくれました。実行ファイルをDownloadできるようですので、ご興味のある方はぜひプレイしていただけたらと、チャーハン作っていただけたらと思います。他にもクオリティ高そうなゲーム上がってますしね!

Leap Motion 3D Jam presented by IndieCade - itch.io