ねこバタ会議

スマホアプリ制作に関するブログです。

カテゴリ: アプリ開発

前に以下の記事でポーズ時のアニメーションを実効する方法について書きました。

Unityでポーズ中のアニメーションと遅延処理を行う方法

上記記事では、AnimatorのUpdate ModeをUnscaled Timeに設定することで実現しています。
が、よくよく読んでみると、Animationとして登録しているものにしか対応していません。
Invoker.InvokeDelayedによる遅延処理はアニメーション用ではないので(やろうと思えばできるでしょうが…)。

というわけで、今回はポーズ中のアニメーションをもっとスマートに実現する方法として、DOTweenをご紹介させていただきます。
iTweenは手軽にアニメーションできるので便利ですが、uGUIの要素をアニメーションさせることができなかったり面倒だったりという面がありました。
DOTweenはRectTransformなどの変更に対応しているため、簡単にアニメーションを実行できます。

DOTweenでuGUI要素をアニメーションさせる具体的な方法については、下記ブログなどを参考にしていただくのがいいと思います。



簡単な導入フローを書くと、以下のようになります。
【1】DOTweenをダウンロード
【2】Assetsに入れる
【3】UnityエディタのToolsからセットアップ

注意が必要な点としては、DOAnchorPosなどのuGUI要素をコントロールするためには、Tools > DOTween Utility PanelからSetup DOTweenを実行する必要があるということが挙げられます。


Dotween1


その他注意点や設定についてはの詳細はDOTweenの公式サイトをご参照下さい。
私のようにあまり英語が得意でない場合でも理解できるように書かれているので、多分問題無いと思います。

ユーティリティーパネルからPreferencesを開き、TimeScale Independentにチェックを入れれば、ゲーム中のタイムスケールに関係なくアニメーションを実行することができます

Dotween2

 
あとは以下のような感じでアニメーションの指定を行えば、ゲーム中のタイムスケールに関係なくアニメーションを実行することが出来ます。
 
RectTransform rt = GetComponent<RectTransform>();
rt.DOAnchorPos(new Vector2(100, 0), 0.5f);

なお、アニメーションのタイムスケールをゲームのものと合わせたいときには、以下のように個別にタイムスケールを設定することもできます。

rt.DOAnchorPos(new Vector2(100, 0), 0.5f).timeScale = Time.timeScale;

iTweenを使ったことのある人もそうでない人も簡単に導入できると思いますので、コード側でアニメーションの実行をしたいという方は検討してみてもいいと思います。
ちなみに私はMecanimはとても苦手です…(^_^;)

ブログやツイッターをご覧の方はお分かりかもしれませんが、私は暇を見つけては色々なゲームをプレイしています。
予約TOP10で新しいゲームを予約してインストールしてプレイしては消しを繰り返しています。
ゲーム内容を見てどんなコンセプトで作られているかや操作感を試しているのですが、一番大きいのはやはりゲームが好きだからですね。

で、先日もとあるソシャゲをインストールして遊んでいたのですが、それがどうにも自分には合わない部分が多くて、もやもやとした感情を抱いていたのでした。
クオリティが低いとかゲームとして面白くないといったことではなく、私にとっては画面の要素が見づらくて遊びにくくイライラしてしまう感じだったのですね。

他の人は一体どう思っているんだろう…と思ってGoogle先生で検索したところヒットしたのが、今日ご紹介させていただく独身OLさんの運営されているアプリレビューブログでした。
つい先日新しいサイトに移転されたそうなので、本日はこちらのサイトをご紹介させていただくことにしたいと思います。

 ストーリー重視!アプリレビュー 

ストーリー重視アプリレビュー

管理人の独身OLさんはファミコン時代からゲームをプレイされているそうで、夢は「廃課金になって札束で殴りあうこと」という、とても素敵な方です。
ゲームの好みも濃くて、思わず共感してしまいますね。
ちなみにサラダの国のトマト姫がファミコンで出ていたのを初めて知りました(^_^;)

独身OLさんのレビュー内容は、ゲームの良い点と悪い点を非常に的確に挙げられている点にとても共感を覚えました。

例えば、私がイライラしてしまったゲーム『ひめがみ絵巻』については以下のような感じです。
和と中華を混ぜたような世界観はとても雰囲気がよく、音楽も癒し系。

グラフィックも手書き風で温かみがあり、大神で心をつかまれた人はたぶん見ちゃうでしょう。

キャラクターも神話や伝説の登場人物ばかりでそそられます。
メニュー画面の使いにくさがひどい。

メニューのどこに何があるかが直感的に理解できないし、見たいものが見える位置に置いてない。

これちゃんとカテゴライズしてあるの?と疑問に思うようなゴチャゴチャぶり。

単なる表面的な感想ではなく、きちんと遊んだ上で評価すべき部分や足りない部分を挙げていくという姿勢がとても素晴らしいと思います。
おそらくそれはゲームを楽しもうとする気持ちからきているのかな、と感じます。
また、各要素について分析や整理がきちんとされており、なんというか仕事のできる事務員さんの机や引き出しを見ているような気になります。
私は昔そういう事務員さんによく怒られていました…(^_^;)

他のゲームについてもとても的確で、読んでいると色々と勉強になります。
作る側の意図や気持ちと遊ぶ側の気持ちは往々にしてズレが生じるものですが、独身OLさんの記事のように「どこがいいか」「どこが悪いか」がよくわかるレビューというのは、開発や企画をする上で非常に参考になると思います。

今後が楽しみなレビューサイトです。
皆さんも是非ご覧いただければと思います!

ちなみに、現在制作中のゲームはそろそろ予約TOP10で予約を開始しようと思っております。
開始したら改めてお知らせさせていただきますm(__)m 

相変わらずガンナーズ・ハイの作成に勤しんでおります。
シナリオの再生部分を作っているのですが、インターフェースが文字だけというのはさびしい感じなので、アイコンを表示することにしました。
フリーのアイコン画像などもたくさんあるのですが、今回はFont AwesomeをUnityで使うことにしてみます。
(Unity 5.2で仕様が変わったため、対応版をアップしました) 

Font Awesomeというのは、数百種類に及ぶアイコンをフォントとして使えるようにしたものです。
CSSなどで手軽に使えるようになっているので、ウェブデザインをされたことのある方は、ご存知の方も多いと思います。

font11
 
Font Awesomeについての詳しい説明は以下のページなどをご参照下さい。


この非常に便利なFont Awesomeは、Unityでも手軽に使えるようにパッケージになっています。
以下のページの説明に従って導入します。
なお、Unity4.6以上が必要です。


導入の手順は以下の通りです。

1.Unity用パッケージのダウンロード

2.Assets > Import Package > Custom Packageで上記ファイルを選択してインポート

3.TextUnicode.csを以下のページからコピーして保存

4.uGUIのTextコンポーネントを削除して、TextUnicodeをアタッチ
Add Component > Scriptsあたりからどうぞ 

5.表示したいアイコンをUnicode形式で指定

という感じですね。
追記:よく見たら、Font AwesomeのサイトからフォントファイルをDLしてAssetsに追加すれば パッケージの導入はいらないかもしれません。 

uGUIのTextコンポーネントの場合はUnicode形式での文字コードの指定ができないため、できるように拡張したものがTextUnicode.csです。

それでは、実際に使ってみましょう。

まず、TextUnicodeのFontに「fontwawesome-webfont」を指定して下さい。

次に、Font Awesome Cheatsheetを参考にして、使いたい文字を以下のように指定します。
ここでは家のアイコンを例にやってみましょう。

home

[&#xf015;]→\uf015として指定します。「&#x」を「\u」にして、セミコロンを取ればいいですね。

home3
 
すると、以下のようにアイコンが表示されます。
とても簡単ですね。
 
home2

たくさん表示することもできます。
色はColorプロパティで自由に変更できます。

font10

font6

ちなみに、私はいちいち入力するのが分かりづらかったので、フォントの名前から自動的に変換されるようにしました。
以下に変更したものを置いておくので、使いたい方はご自由にどうぞ。
動作保証はしませんので、ご理解いただいた上でご利用下さい。

TextUnicode.cs
5.2対応版。ダウンロード後にファイル名をTextUnicode.csに変更してください。

上記のスクリプトを使用すると、Cheatsheetの名前からアイコンを指定することができます。
例えば家の場合は「fa-home」です。
アイコンは1つのみしか指定できません。
複数指定できるようにしてもよかったのですが、まああまり使わないかなと…(^_^;)

font18
 
というわけで、画面はこんな感じになりました。

適用前
スクショ1 

適用後
スクショ2

文字だけに比べると、若干見やすくなったような感じが…するような、しないような…。

Font Awesomeのアイコンは癖がなくて使いやすいので、一度導入の仕方を覚えておくと、他のゲームなどにも共通して使えると思います。

このブログでも何回か書いていますが、女子高生が校門の前で銃を乱射するというゲームを作っています。
こう書くと非常に物騒な感じですね…レーティングとか色々大丈夫なのか心配になってきますね…(^_^;)

で、ゲームの骨格が結構出来てきたので、実機で動かしてみたところ、動作がカクカクして見るに耐えません…。
私の使用しているAndroidの端末が古いということもあるのですが、古い端末を使用されている方でも、それなりには遊べるようにしたいところです。

特に弾丸などの新しいオブジェクトを生成して表示する際に時間がかかっているようで、その動作がある度にフレームが飛んでしまいます。

今までまったく知らなかったのですが、Unityには色んな情報を見られる機能があるんですね。
以下のページを見て、どんな状態なのかを確認してみました。
Unity 5 Proとなっていますが、Unity 5ならフリー版でも問題なく使えます。

Unity 5 Proの新機能FrameDebuggerでグラフィックパフォーマンスを改善する

ゲームビューにあるStatsというボタンを押すと、色々な情報が見られます。
詳しくは私も知らないのですが、色々なオブジェクトをアクティブ化したり非アクティブ化したりすると数字が変わるので、それを参考にすれば良さそうです。
細かいことはいつか勉強しましょう。

Unity_stats

ただ、上記のStatsで見られるのは、当然Unityエディタ上での情報です。
参考にはなるのですが、重要なのは端末での動作ですね。
端末の方については、こちらのページで紹介されていたスクリプトを使用しました。

【Unity】メモリ使用量とか、FPSとか、色々表示するスクリプト:ほんにゃら重工

スクリプト
AllocationStats.cs

スクリプトを保存して、適当なゲームオブジェクトにアタッチするだけなので、とても簡単です。

 fps

フォントサイズとか調整していないので見づらいかもしれませんが、状態の把握が出来ればいいので私的にはオッケーです(阿武隈)。

上記の画像では30.1FPSと表示されていますが、調整前は9~26FPSあたりを行ったり来たりしていました。
不必要なオブジェクトを非アクティブ化したり、都度生成していたプレハブを最初に一括で生成して使いまわしたりしたところ、動作もかなり軽くなりました。

やはり情報を確認できるというのはいいですね。
多分情報可視化ツールはたくさんあると思いますし、自作もそれほど手間ではないと思うので、自分にあったものを見つけるなり作るなりしてください。

相変わらずレベルの低いブログですが、一歩ずつ進んでいきたいと思います。
ちなみに上記の女子高生銃乱射ゲームのタイトルは「ガンナーズハイ 学年ビリのギャルが40人倒して合格を目指す話」となりました。
なるべく早く完成させられるようにがんばります!

icon512

最近アップトーキョーさんの頑張りなどの影響で、ブースト広告によるランキング操作について注目が集まっていますね。

今日はそのランキングについてのお話です。
そもそもブースト広告のランキング操作は、ランキングからの自然流入を狙ったものです。
遊びたいアプリや欲しいアプリを探す場合、ストアを見るのが一番手っ取り早いものですし、どのアプリが人気があるのか見るという人は多いため、そこからの流入を得たいというのは、アプリ開発者なら誰でも思うことなのではないでしょうか。

このランキングについてはGoogle PlayとApp Storeで大きな違いがあります。
順位決定のアルゴリズムは公開されていないので、アプリの動きを見て想像しなければいけない部分が多いのですが、App Storeの場合は直近のダウンロード数の比重が大きいと考えられます。
これは拙作ワーズ・アンド・マジックが2ちゃんまとめサイト等に掲載されたその日に大きく順位を伸ばしたことからも明らかです。
対してGoogle Playの場合は、おそらくですが2日程度のスパンでのDL数と起動数を見ているのではないかという感じがします(あくまで自分のアプリのランキング順位からの想像です)。
Google Playは上がるときも下がるときも緩やかな印象を受けます。

では、どちらがより個人開発者にとって恩恵を受けられるのかというと、私はGoogle Playの方だと思います。
App Storeは一時的に順位が上がっても、すぐにより力のある(またはブーストできる体力のある)アプリに押しのけられてしまうため、ランキングの変動が激しく順位を維持するのが難しいと考えます。

また、Google Playの場合は、公開後30日以下のアプリを集めた新着ランキングや、最近のDL数または起動数の上昇率によって計算されていると思われる急上昇ランキング(20DLくらいしか伸びなくても掲載されるので上昇率だと思います)、類似アプリやインストール傾向からユーザー毎にカスタマイズされたオススメアプリの表示など、App Storeにはない形でのアプリ露出機会が多いのもありがたいところです。

実際にどの程度違いがあるのかについて、App Annieによるワーズ・アンド・マジックのランキング推移を見てみたいと思います。

まずはGoogle Playからです。

ranking_google

大体調子のいい時で150位以上、あとは200位あたりをウロウロしている感じですね。

それでは次にApp Storeでの順位です。

ranking_apple

App Storeの場合はロールプレイングゲームカテゴリを外してしまったのでストラテジーカテゴリでの順位を一緒に表示しています。
一番いいときでロールプレイングゲームカテゴリの50位あたりまでいきましたが、ものすごい勢いで急降下しているのがわかります。
また、とても重要な事ですがApp Storeの場合は150位までしか表示されません
ワーズ・アンド・マジックの場合、たまに順位が上がっても大体152位とか154位とかまでしか上がらなかったので、ランキングに顔を出すこともできない状態でした。
Goole Playは確か400位あたりまで掲載されます。

ちなみに、現在のダウンロード数はAndroid版が1日あたり40~120DLに対し、iOS版は10~20DLといったところです。
もちろん他の方の場合にも必ず当てはまるとは思いませんし、Androidでもまったく露出もなくダウンロードされないアプリも数多く存在するので、なるべくなら両方のOSで出した方がいいとは思います。
ただ、iOSとAndroidのどちらでアプリを出そうかと迷っている個人開発者の方がいらっしゃったら参考にしていただければと思います。

↑このページのトップヘ