FreelyApps

個人によるアプリ開発の日記です。アプリの収入だけで生活できるようになるのが目標です。UnityでAndroid向けのゲームアプリを作成しています。


    アプリ『トランプ・7並べ』を公開しました。
    Android/iOS https://goo.gl/zsFces

    2015年05月

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unityのエディター上では簡単にFPSを表示できます。
    ゲームビューのStatusボタンを押すと、画面の右中段に表示されます。
    簡易的に調べられるので便利です。
    実機上の確認には使用できないので端末の性能を測ることに使えません。
    つまり、リリースするときの機種次第では目安程度の意味しかありません。
    FPSが急激に変わったりすることを見つけるとかに使いましょう。

    FPSの表示をするにはOnGUIを使うのが簡単です。
    Unity UI(uGUI)を使ってもかまいません。 
    表示方法は何でも良いです。 

    FPSを測るには2通りあります。
    • 定義通り、1秒間に何回更新が行われたかカウントする方法 
    • 更新間隔を測り、その逆数をFPSとする方法
    1秒間を測りその間に何回更新されたかをカウントして、FPSを求めます。
    FPS = (更新回数)
    定義通りの値であり、整数値が返ります。利点は見やすく、ゲームの1秒ごとのパフォーマンスが把握できることです。1秒というのはそれなりに長いので、パフォーマンスが良い悪いという指標に使いやすいです。
    欠点は瞬間的なパフォーマンスの悪化を見逃すことと実装の面倒さです。
    1秒ごとというのを判定し、そのたびに初期化をして繰り返すといったことになります。

    更新間隔を測ることから求める方法は、測った更新間隔でこの後も処理が続くと仮定して1秒間に何回更新されるかを決定しています。
    FPS = 1 / (更新間隔) 
    になります。
    1フレーム前の更新時刻を 記録しておけば毎フレームFPSを求めることができます。この方法の 利点は瞬間的な処理の速さを知ることができることと実装が簡単ということです。欠点は瞬間的なゲームのパフォーマンスしか測れないことです。 

    FreelyAppsでは2番目の方法を使っています。
    そのまま使うと継続的なパフォーマンスがわかりにくいため、平均を用いてある程度の長さでのパフォーマンスを測っています。
    最新の更新間隔だけでなく、いくつか前の更新間隔も記憶しておくということです。



    fFPSとfAveFPSには毎フレーム更新された値が入ります。
    上では30フレーム分の更新間隔を平均し、その更新間隔からfAveFPSを求めました。
    この値をOnGUIかUnity UIで出せばいいわけです。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    FPSというのはFrames Per Secondの略であり、1秒間に何回画面の描画がおこなわれるかという単位です。
    大きいほど頻繁に画面が切り替わるので、動きが滑らかになります。動画の滑らかさを表すのに使われていますが、ゲームの処理がどれくらい速く行われているかを表すのにも使われます。ゲームの処理が行われてから画面を更新しての繰り返しでゲームが進んでいきます。処理が行われることが画面の更新のタイミングを決めるため動画と同じ単位が使われているのでしょう。

    FPSを測ることでゲームの更新頻度がわかり、どれくらい処理がかかるのかを把握できます。つねに表示すれば、どのタイミングで重いのか調べることもできます。

    あまりに低いFPSが出ることがあるなら、その部分には改善すべきことがあるはずです。

    ゲーム全体で目標とするFPSを決めてそれ以下になる部分をなくしていくことが良いです。わかりやすいですし、無駄な作業が減らせます。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    livedoorブログを書くためのアプリがリリースされているらしいのでインストールをしました。
     スマホから書けると便利です。
    あまり長い文章を書くのには適しませんが、メモを書いて下書きを保存するには適しています。

    活用できればと思います。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unity 4では3種類の言語が使えました。
    C#、JavaScript(UnityScriptと呼ばれてます)、Booの3つです。 

    Unity 5になるとBooがなくなっています。
    公式のマニュアルやUnity上で新しくスクリプトを作るときの選択にBooがないのです。
    (実行は可能らしいですが、今後消えていくと思われます。)

    現在Unityで使えるプログラミング言語は C#とJavaScriptになります。
    JavaScriptの方はUnity独自の拡張が多くなされ、UnityScriptとも呼ばれます。 
    元のJavaScriptにはない書き方をしなければいけないことがあり、JavaScriptに慣れている人ほど混乱しそうに思います。

    C#が一番良いと思います。
    使われていることが多いですし、入門書に困ることもありません。Unity以外で使われているC#と同じように書けます。JavaScriptに比べて慣れればなれるほどC#が使いやすいと思います。 JavaScriptは読めれば良いくらいだと思っています。他の人が書いたコードに入っているときに知っておくと良いということです。

    C#を使う上で気をつけるべきことがあります。
    クラスのインスタンス生成時に呼ばれるコンストラクタを使わないということです。 

    Unityのシーンに保存されているデータと競合するからなのだと思います。 Unityのインスペクタ―でクラスの値を変更できる機能があるのですが、それを実現するにはコンストラクタでの初期化は都合が悪いことが推測できます。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    以前リファラースパムの対応をしました。
    この結果をグラフで表したので、載せておこうと思います。

    compare.png

    青い線がGoogle Analyticsでデフォルト設定のサイトにアクセスしたすべての数を表しています。オレンジの線がこのブログにアクセスを行っているという条件をいれたアクセスになります。
    途中から青い線とオレンジの線が一致していきます。これは対策を入れてデフォルトで表示されるアクセス数にリファラースパムが除外されるようフィルタがかかっていることを表しています。

    対策前には一致せず、青い線が表すアクセス数がオレンジの線よりも多いことが確認できます。この差分がスパムの数ということになります。あまり突出していないので、アクセス数だけ見ていてもわかりづらいです。

    現在はうまくいっていることが見て取れます。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    アプリの開発の流れをざっとまとめてみます。
    1. 企画を考える 
    2. アプリを作成する
    3. アプリを公開して宣伝する
    4. 更新をつづける
    大体こんな流れになると思います。

    1はどんなものを作るかを決めるものです。自分の作りたいものを作ってもいいですし、多くの人が求めそうなアプリを狙うのもかまいません。個人の場合はユーザーの動向を調べるとかやり始めると時間を取られすぎるので、あまりこだわらない方が良いと思います。

    2ではアプリを作ります。作り方は色々な方法があるため自分に合った方法ならなんでも良いです。
    ゲーム(特に3D) であれば、Unityを使うのが楽だと思います。ただどんなジャンルのゲームでも作れるようになっているので、自分で作る部分が多くなります。決まったジャンルのみ作るなら、それに特化したツールを使う方が楽です。

    3の公開がひとまずの目標になります。公開できればアプリを作ったと言えるでしょう。
    どんなアプリだとしても存在が知られていなければダウンロードされません。したがって宣伝をしなければいけません。これが個人でも非常に重要だと思います。 
    既にリリースした有名なアプリを開発した人であれば別ですが、普通は無名です。誰かが宣伝してくれるわけでもありません。自分から宣伝することが大事です。

    4はアプリが順調にダウンロードされ続けないとやることはありません。
    同じアプリを長く遊んでもらうことで収益や知名度の向上が見込まれます。
    停止してしまうといったバグであればすぐに修正することが必要です。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unityではシーンにライトを置いてShadowの設定を行えば、影が出ます。
    LightコンポーネントのShadow TypeがNo Shadows出なければいいということです。

    エディター上で確認しているときはオブジェクトの動きに合わせて影が表示されるはずです。
    これをAndroid用に出力して実機で見ると、 影が出ていないということが起きます。

    Quality Settingsで影を無効にする設定があるので、それを確認すると直ることがあります。
    影を出さなければその分処理が速くなります。画面の質と処理のどちらをとるかという設定をするところなのでこのような設定ができます。

    Quality Settingsではゲーム全体に対する有効・無効を設定できるので、 影が出るはずにもかかわらず全ての場所で出ないとすれば、その設定が原因の可能性が高いです。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    スマホ向けのアプリはiOSとAndroidがあります。
    他にもあると思いますが、主流はこの2つです。
    どうやって片方を選ぶかという話をします。

    どちらにも一長一短あり選ぶのは難しいと思います。
    どちらも出すというのが良いと思いますがお金がかかります。
    どちらか一方出すということであれば、自分の端末と同じ方を選ぶのが良いと思います。

    新しく端末を買わなくて済みますし、多少は勝手がわかっているはずです。
    その点が有利なのでまずはそちらで開発するのが妥当です。現時点で他のプラットフォームに出していなくても、今後出すことは可能です。経験を積んでからプラットフォームを増やしていっても遅くはないわけです。

     どちらの端末も持っていないかあまり詳しくない場合は、自分の持っているパソコンで決めるのが良いです。
     iOSの場合はMacが必須です。既に持っていないなら買わなければいけません。
    使っているパソコンがMacでないなら、Androidにした方が敷居が低いということになります。
    使っているパソコンがMacであるなら、 iOS/Androidどちらの開発も可能です。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Androidのゲームアプリを開発しているFreelyAppsと申します。

    現在は知名度がまるでありませんが、面白いゲームを開発し皆様に遊んでいただけるように頑張ります。
    最終的な目標はアプリだけで生計をたてられるようになることです。 

    よろしくお願いします。 
      【ブログを開設しました】の続きを読む

      このエントリーをはてなブックマークに追加 Clip to Evernote
    現在開発中のアプリの動画をアップしました。





    このゲームはUnityのチュートリアルを元に作成しています。そのままでも面白いですが、いろいろ改造して見た目が似ている別のゲームになる予定です。

    現時点では遊びの根幹部分の作成しか終わっていません。端末の傾きを利用した操作を気持ちよくするために実験中です。加速度センサーを用いた実装がおそらくは良いのだろうと思います。傾けたときの反応がどれくらいであれば良いのかということが難しいのです。

    このページのトップヘ