今日はUnityについて、その利便性と引き換えに不幸になっている人がいるのではないかということを考えていました。Unityのような汎用的な3Dゲーム開発環境が登場することによって、確かに開発効率は上がったのかもしれません。しかしその裏で、プログラマーの方々のコーディングにおける創意工夫というか、ものづくりというかそういう点でつまらなくなっている面があるのは確かです。Unityなどのツールを使うことを強制され、ゲーム開発のプログラミングという仕事が誰でもできるレベルでコモディティ化されてしまい、創意工夫が極端に制限された中で作業させられてしまう人が出ているという現実に思いを馳せていました。
(翻訳:今日は作業していません)
★☆★ 今回の作業 ★☆★
完成した玉転しゲームをとりあえず実機に入れました。
Unityから設定をするだけで、簡単にiPhone向けのプロジェクトを自動生成してくれました。
操作方法は特に難しいことはありませんでした。
問題は、その変換時間です。
まず、iPhone向けのxcodeプロジェクトをUnityから出力するのですが、言っちゃ悪いですが私はそこそこ良いMAC使っていますよ。MACBOOK PRO 2015年モデル使ってても3分くらい掛かったんですよ。
カップラーメンが出来てしまいます。
その後、xcodeプロジェクトを開いてビルドするんですが、3分を超えてしまいました。
カップラーメンが伸びてしまいます。
iPhoneにインストールした後、もっと作業を予定していたのですが、ビルドの間に私は寝てしまい、起きたら朝の8時でした。
★☆★ 次回の作業 ★☆★
Unityで12万5千の立方体を描画(Unityのプロジェクト上で追加出来る?)して同様にiPhone実機にインストールし、自分でOpenGLESのコードを書いた場合のFPSとどのくらい差が出るか計測します。
でもなんかUnity使うの辛くなってきた・・・
★☆★ 今回の作業 ★☆★
https://github.com/unity3d-jp/FirstTutorial/wiki
今回は4〜7ページを実施して玉転しゲームが完成しました。
前回の作業と合わせて1時間くらいでできたと思います。
iPhoneが出たばかりの2008年頃のアプリ市場を知っていますが、当時はろくなアプリが揃っていませんでした。2008年頃に戻れるとしたら、この玉転しゲームレベルでも有料である程度売れたかもしれないですね。
誰か私を過去にワープさせてください。
★☆★ 次回の作業 ★☆★
とりあえず玉転しゲームをiPhone実機にインストール予定です。
簡単にインストール出来たならば、Unityで12万5千の立方体を描画(Unityのプロジェクト上で追加出来る?)して同様にiPhone実機にインストールし、自分でOpenGLESのコードを書いた場合のFPSとどのくらい差が出るか計測します。
★☆★ 今回の作業 ★☆★
立方体を12万5千ほど描画するのに、以下パターン1と2でどのくらいFPSに差が出るのか検証したいと思っています。
パターン1.自分でOpenGLESのコードをバリバリ書いた場合
パターン2.Unityで描画した場合
パターン1はすでに実装しましたが、パターン2を実現するために、まずはUnityの操作方法を学ばなければならないため、Unityの玉転しのチュートリアルを行いました。
https://github.com/unity3d-jp/FirstTutorial/wiki
0〜7の全8ページで、そのうち0〜3の4ページを消化しました。
得てしてこういうツールは定型のことを行うのが素早く出来る代わりに自由度/柔軟性を失うものと思っていましたが、スクリプトを要所要所で書けば何でも出来そうで良い感じですね。
これでアプリ起動速度が遅くならず、かつFPSが出れば良いのですが・・・
★☆★ 次回の作業 ★☆★
玉転しのチュートリアルを完成する。
今日も特に開発作業はしておりません。
主に、昨日買った
GTX1070を愛でてました。
・・・アプリ開発日記になってなくて何か申し訳ない気持ちでいっぱいです。
今日は、パソコンの電源「Thermaltake Toughpower DPS G RGB 650W Gold」と、グラボ「MSI GTX 1070 GAMING X」を買って、色々といじって遊んでいました。
両方ともパーツが光るギミックがあって、何と好きな色で光らせることが出来ます!
私のPCケースは半透明のものを使っているので、とっても綺麗に光っている様子を見れます。
電源はマザーボードにUSBで接続して、OS上で様々な情報をリアルタイムで確認出来ます。
全体の消費電力、電源温度、CPU温度、CPU消費電力、グラボ温度、ファン速度、電圧などです。
最近のパーツは面白いなあ。
グラボもOS上からツールを入れて、GPUの動作クロックやファン速度などが見れます。
動作クロックを変更することも出来ます。OCモード/ゲーミングモード/サイレントモードの3段階から選ぶか、もしくは任意に細かく設定することもできます。
このグラボは諭吉が5人を超えているだけあって、静かなのにとてもよく冷えるGPUクーラーが付いています。私はフルHD(1920×1080)のディスプレイしか持ってないこともあって性能を持て余しまくりで、すべての状況でFPSは60に貼り付いてるし、負荷かけてもGPU温度が40度程度しか行きません(一定温度以下でファンを回さないモード”Zero Frozr”はオフ)。
この余裕な感じがたまらなく好きです。
色々条件を変えて温度がどのくらい上がるとか、ファンの回転数がどのくらい上がるとか、消費電力がどう変わるかなどを眺めていたら、楽しすぎていつの間にか寝る時間になりました。
今日はUnityをMacにインストールしました。
以上ですが何か?
・・・ごめんなさい、明日から開発作業は最低1日1時間以上するように努力します。
・・・いや、努力するようなものじゃないな。
自分が楽しいからやっているだけだ。
おそらくじきにガッツリ開発すると思います。
たぶん。
今日はPlants VS Zombiesを久しぶりに少しだけやろうと思ったら、いつの間にかボスまで倒してこの時間(0:00)になってました。
このゲームクリアするの3回目位なんですが、何回やっても面白いなあ。
世界観と音楽とゾンビたちの動きが素晴らしいゲームですね。
もちろんゲームシステムとその難易度のバランスも素晴らしいです。
コーディング上は特別に作るのが難しいゲームではなさそうだし、技術的には大したことない(失礼)んだけど、とっても面白いです。技術的な難しさとゲームの面白さが比例しないことを、当たり前ですが改めて再認識しました。
OpenGLで一生懸命パフォーマンスを出そうとして試行錯誤している自分に対して「おまえ馬鹿だなあ」とこのゲームに頭をぶん殴られている気がしました。
というわけで今日は作業進捗0で寝ます。
★☆★ 今回の作業 ★☆★
OpenGL ES3.0でポリゴン(頂点配列)を動的に動かして、
1.glBufferData(glBufferSubData)
2.glMapBufferRange
の2つでどのくらい性能が違うか検証しました。
検証としては、立方体を50*50*50個で合計12万5千個作成し、上記2つの方法でy座標を描画毎に書き換え、FPSを計測しました。
結果
1.17FPS
2.21FPS
当然といえば当然ですが、y座標を書き換えるために毎回頂点配列をglBufferDataでGPUに転送するより、glMapBufferRangeで直に書き換えた方が速い結果となりました。
★☆★ 次回の作業 ★☆★
実際に使うかどうかは別として、Unityを利用して、同じことをするのにどのくらいFPSが出るのかを検証したいと思います。また、アプリの起動時間がどのくらい増えるのかも確認したいと思います。
youtubeで動画見てたらこんな時間(0:00)になってました。
誰かこの世からyoutubeを消し去ってください。
大手には作れないアプリを(気持ちだけは(๑•̀ㅂ•́)و✧)