頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


家族でマインクラフトPE

世間的にはポケモンGOが話題だけど、我が家では同じようなタイミングでマインクラフトが一大ブームとなっております。
ヒカキンとかお友達の影響とかで小三の息子がずっと「マインクラフトやりたいよ〜!」言ってたんだけどMacを使わせるのは嫌だし、わざわざXboxやプレステ買うのもお金かかりすぎるしどうしたもんかと考えた結果、だいぶ簡易的なものらしいけどiOSのPoket Editionをやってみることにしたのよ。息子にはヒカキンさんがやってるみたいな機能は使えないかもしれないから覚悟しといてね、と言い含めておいてApp Storeからダウンロード(840円)。

ちなみにデバイスやアカウントはこんな感じ。
俺は自分のiPhone 6でプレイ。
俺のアカウントのiPad (第3世代)で息子がプレイ。
ヨメさんはヨメさんのアカウントのiPhone 5sでプレイ(俺とファミリー共有なので無料でダウンロードできる)。

いいのか悪いのかわからないけど、iOSのマイクラはデバイスにデータが保存されるみたいで、iCloudでデータが同期されるなんてことはないみたい(なので俺アカウントのiPadで息子が遊べる)。


マイクラPEの楽しいところは何と言ってもお互いの世界へ行って一緒に遊べること。
今は息子の世界へ俺やヨメさんが行ってお互いを探したり一緒に探検したり色々作ったりしてる。

マインクラフトPE 北極点

↑我が家では北極点と呼んでる位置(コンパスが差す位置だったのでそう呼んでたけどどうやらリスポーンの位置を指してるらしい)に俺が作った目印にいつの間にか息子はトロッコを設置してた。是非とも俺やヨメさんにトロッコに乗って欲しいみたい。

息子は期待してたのと違う部分もあるんだろうけどほとんど不満も言わず楽しんでいる。そう言えば発売日に買いに行った妖怪ウォッチ3もほとんどせずにマイクラに没頭してるわ。
スポンサーサイト






原因不明の不具合はメモリが解放されてた

不具合の原因を探すのに数時間費やしてしまったんだわ。
エラーメッセージも毎回違ったり、時には落ちないこともあって、、、こういう不安定な場合はメモリの確保ができてない(mallocでサイズ間違えてるとか)とかそういうのが多いと思ってるんだけど、そのあたりをいくら調べてもよくわからない。


ようやく気付いたのが、、、

作成中のアプリのスクショ

↑描画にMetal、物理エンジンにBulletを使ってるんだけど、通常自作クラス(例えばMyObjectとか)のオブジェクト(myObjectとかね)を作ってそれを描画にも物理演算にも使うようにしてるんよ。

ところが、

MagicaVoxelで作ったモデルの頂点の数

↑ここに書いたように地面に関しては描画用と物理演算用と別々のオブジェクトを作ったのよ。面倒だけど計算量を減らしたいから。

地面のBullet用オブジェクトを作って、、、つまり例えばMyBulletObjectクラスのmyBulletObjectってのを作って、それを物理エンジンに渡すんだけど、実際は

world->addRigidBody(myBulletObject.body);

みたいな感じで処理してる。つまりMyBulletObjectクラスのプロパティとして実際にBulletに渡すbtRigidBodyオブジェクトを持たしてる。

という構成だったので、myBulletObject.bodyをworldに追加はしてるんだけど、myBulletObjectオブジェクト自体はどこからも参照されていなかったので、このメモリが解放されてたってことみたい。

myBulletObjectを配列に入れておくとかしたら意図通り動いたわ。
うっかりして時間を無駄に使ってしまったよ〜



ヨーグルトメーカー 第三弾の結果

ヨーグルトメーカーで低脂肪ヨーグルトをタネに使えるか?
↑これが第二弾。その続きです。

R-1ヨーグルト

↑今回(第三弾)は飲むタイプじゃない普通のR-1を買ってきてタネにしてみた。ちなみに第一弾、第二弾と違って割引シールは貼っていない、と言っても賞味期限に近いか否かってあまり関係ない気もするけど。
これが4回目で液状になってしまったのでおしまい。

今までの結果をまとめると

1) 液体のR-1 → 5回目で液状
2) 低脂肪のR-1 → 3回目で液状
3) 普通のR-1 → 4回目で液状

という感じ。こんなもんなのかなあ?もう少し回数が伸びると嬉しいんだけどねえ。


タカラトミーのえげつない商法

昨日息子とトイザらスに行った時のこと。
メインは予約してた3DS用の「妖怪ウォッチ3」だったんだけど、それとは別に息子はやっとこさ貯めた小遣いでベイブレードも買うつもりだったのよ。

どうも当日が発売日のがあったみたいで、サイトを見ると、、、

イェーガーユグドラシル.G.Y


これだわ、イェーガーユグドラシル.G.Yってやつ。
これだけ見ても、公式ショッピングサイト見ても分かりにくいんだけど、これガチャみたいなもんで、本当にイェーガーなんたらが入ってるかどうかわからなくて、他の(7種類あったかな?)が入ってるかもしれないんだわ。

正直えげつないと思った。小学生相手に何やってるねん?と思った。
100円やそこらの商品じゃなくて900円前後の商品でこういう売り方ってどうよ?と思うのは俺だけなんだろうか?

息子に「確率の問題だから1万円分買っても当たるかわからんなあ」と言った時の息子の微妙な表情をタカラトミーの社長に見せてやりたいわ!

ちなみに息子はしばらく悩んだ末に結局買わなかった。

ベイブレードってよく作ったよな
↑最初ベイブレードを絶賛してただけになんだか残念。


MagicaVoxelで作ったモデルの頂点の数

ボクセルエディター MagicaVoxel を試してみた
↑ここでこりゃいい!と絶賛したMagicaVoxelなんだけど、いざモデルを作ってたくさん(数百個程度)並べたら速度が30FPSを下回るほど遅くなってしまったのよ。iPhone 6なのによ?!

いろいろ調べてみるとどうやら物理演算ではなく描画に問題があるっぽい。頂点数が多い?

MagicaVoxelで作成したモデル

↑例えばこのモデル。地面のイメージなんだけど、物理エンジンのことを考慮して平面じゃなくある程度の厚みを持たせてる(Bulletだと厚みがないとすり抜けやすい気がしてる)。このパーツを地面としてたくさん並べた次第。

このモデルの頂点数は552個。なんで直方体なのにそんなにあるの?と思ってしまうけど、実際のモデルをBlenderで確認するとこんな感じになってる↓

Blenderでobjファイルを確認

テクスチャ画像サイズがすごく小さい分、モデルはこんな風になってるのね、、、

ともかく改善せねばってことで、物理演算用のを別に用意するとして、表示に関しては平面+テクスチャ画像ってことにすれば(描画のための)頂点数は6個で済む。
そんなわけで実際そのように変更したらサクッと60FPS出るようになったわ。


↑モデル、テクスチャなどを作り直した後の結果。

手を抜いたらいけませんねえ〜




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.