パクリアプリ開発日記 9日目 Unityで玉転しゲーム前半

★☆★ 今回の作業 ★☆★

立方体を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が出れば良いのですが・・・

★☆★ 次回の作業 ★☆★

玉転しのチュートリアルを完成する。

パクリアプリ開発日記 7日目

今日は、パソコンの電源「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”はオフ)。

この余裕な感じがたまらなく好きです。

色々条件を変えて温度がどのくらい上がるとか、ファンの回転数がどのくらい上がるとか、消費電力がどう変わるかなどを眺めていたら、楽しすぎていつの間にか寝る時間になりました。

パクリアプリ開発日記 6日目

今日はUnityをMacにインストールしました。
以上ですが何か?

・・・ごめんなさい、明日から開発作業は最低1日1時間以上するように努力します。

・・・いや、努力するようなものじゃないな。
自分が楽しいからやっているだけだ。

おそらくじきにガッツリ開発すると思います。

たぶん。

パクリアプリ開発日記 5日目

今日はPlants VS Zombiesを久しぶりに少しだけやろうと思ったら、いつの間にかボスまで倒してこの時間(0:00)になってました。

このゲームクリアするの3回目位なんですが、何回やっても面白いなあ。
世界観と音楽とゾンビたちの動きが素晴らしいゲームですね。
もちろんゲームシステムとその難易度のバランスも素晴らしいです。

コーディング上は特別に作るのが難しいゲームではなさそうだし、技術的には大したことない(失礼)んだけど、とっても面白いです。技術的な難しさとゲームの面白さが比例しないことを、当たり前ですが改めて再認識しました。

OpenGLで一生懸命パフォーマンスを出そうとして試行錯誤している自分に対して「おまえ馬鹿だなあ」とこのゲームに頭をぶん殴られている気がしました。

というわけで今日は作業進捗0で寝ます。

パクリアプリ開発日記 4日目 OpenGL ES3.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が出るのかを検証したいと思います。また、アプリの起動時間がどのくらい増えるのかも確認したいと思います。

パクリアプリ開発日記 1日目 OpenGL ES3.0

まずはマ○クラのフィールド画面をパクるため、OpenGL ES3.0でのアプリ実装を検討しました。

3D描画には「Unity」を使うと楽だと思いますが、アプリの起動時間が長くなりそうです。「ク○クラ」よりアプリ起動に時間のかかる「Dragon Sky」のように、余分なライブラリを読み込んだり、非効率な処理を行うことにより起動時間を長くするのは避けたいです。

OpenGLのバージョンを3.0としたのは、自分が新しいもの好きというのと、3.0の動作対象がiPhone5sからなので十分だという判断です。

本日は、xcodeでOpenGLの雛形プロジェクトを作成し、OpenGL ES1.0/2.0のコードを元に3.0に改造しました。

また、OpenGL ES3.0でポリゴン(頂点配列)を動的に動かすには

・glBufferData(glBufferSubData)
・glMapBufferRange

の2つがあることを調べました。

明日は、上記どちらの方がパフォーマンスが出るのか検証したいと思います。

SQUARE ENIXのDRAGON SKYが某ゲームの丸パクリな件について(パクリアプリ開発日記 0日目)

私はSQUAREとENIXが大好きでした。よってSQUARE ENIXも好きなゲームメーカーです。FFやDQは、1が出た小学校の頃から熱中し、学校と寝てる時間以外はゲームばかりやっていた時期がありました。私にとってのゲームとは、趣味の枠を超えて自分の体の一部だと感じる程で、ゲーム無しでは生きられないくらいに依存しています。ゲームが出来ない時間は、呼吸できない時間と言っても過言ではありません。

・・・いや言いすぎました。別にゲーム無くても生きられます。でもとにかく昔からSQUAREとENIXは好きだったということです。

それが聞いてください。

その私が好きなSQUARE ENIXがスマホ向けに出したDRAGON SKYというゲームなのですが、これがどう見ても某ゲーム(クラ○ラ)をパクった劣化版なのです。

本当にそっくりです。グラ以外のシステム部分がそっくりそのまま、本当にそっくりそのままで、誰が見ても完全なパクリなのです!

しかも余分な課金要素を入れてバランスが崩壊しています。また、細かい作り込み部分で本家に負けています。起動時間も本家より劣化しており、ロードが長いです。

イラストの質だけは優っていますが、プロジェクトを統括する人がダメで、人材を無駄遣いしている気がします。

もちろん慈善事業ではないので、お金を稼ぐという大前提があるとは思いますが、多分信念やプライドがなく、金稼ぎだけを目的とする方が作ったゲームだと感じました。

昔から好きなゲームメーカーだけに残念です。

話は変わりますが、スマホアプリ「ねこマタ」をリリースしたばかりですが、次回作のアプリの構想が決まりました。

アプリ名は「My Tiny Planet」に決め、

システムはク○クラに加えて、マ○クラもパクって、両者のいいとこ取りにしようと思っています。

3日坊主で終わらないために、作業進捗が無くてもこれから毎日ブログにアプリ開発の様子を書きとめることとします。