sunarit’s blog

Unity開発の備忘録

【セール!】Advanced Shooter Kit

本日、「Advanced Shooter Kit (以下、ASK)」がセール中です。
どんなアセットかというと、いわゆるFPS系のフレームワークです。このアセットをインポートすれば、あっと言う間にFPSの基礎部分が作れてしまうというわけです。
この手のFSPフレームワークでもっとも有名なのは「UFPS」だと思います。他にも「Easy Weapons」や「Pro Weapons Kit」などがあります。

そこで「UFPS」、「Easy Weapons」、「ASK」の3本を、モバイル化を念頭にカスタマイズすることを前提に比較したいと思います。

【多機能】
Easy Weapons < ASK < UFPS

スローモーションやインタラクションなどの機能があらかじめ搭載されている「UFPS」が最も多機能と言えます。逆に「Easy Weapons」は「撃つ」、「倒す」といった基本的なFPSの部分は機能として実装されていますが、アイテムやインタラクションなどの概念は無く、必要であれば自分で実装する必要があります。「ASK」はその中間です。インタラクションの概念はありませんが、アイテムの概念などは実装されています。
「多機能」という括りで考えれば、「UFPS」が一番です。
ちなみにここで言っているインタラクションの機能とは、「スイッチを押すとドアが開く」みたいな機能のことです。

【カスタマイズの難易度】
UFPS < ASK < Easy Weapons

「Easy Weapons」は機能がシンプルなのでスクリプトの可読性も高く、カスタマイズが容易です。逆に、「UFPS」は多機能ゆえ、若干スクリプトを読み解くのに時間がかかります。ただ、この辺は活発なフォーラムと詳細なドキュメントが用意されているので、目的のクラスやメソッドに辿り着くのはそんなに難しくありません。
「ASK」は結構癖のあるスクリプトなので、他の2つに比べて若干難易度が高いと思います。また、バージョンアップによってスクリプトをガラッと変更することがあるので要注意です。余談ですが、1.2 から 1.3 へのバージョンアップで入力系を大幅に変更してきました。1.2 でモバイル対応させていたスクリプトは全部書き直しとなりました。

【軽量化の難易度】
UFPS < Advanced Shooter Kit < Easy Weapons

モバイルで動作させるにはやはり軽量化が必須になります。特にエフェクト系でパーティクルやRigidbodyが使用されていることが多いです。いずれもCPUコストが大きいので、この辺を簡単に調整できるかが重要になります。
基本的なFPSの機能である「撃つ」、「倒す」を残し、どこまで軽量化が可能かをテストしてみました。
「UFPS」はそもそもPCで動作させることを前提に開発されている(と思われる)ので、機能が豊富で画面が派手な分、軽量化するには数多くの手間が必要でした。Full Body Awarenessの削除や必要のないUpdate()の最適化などを行い、できる限りシンプルにしてiPhone6で動作させてみましたが、Xcode上でのCPU使用率は40%を切るくらいが限界でした。時間をかけて最適化をしていけば、もっとCPU使用率を下げることは可能だとは思いますが。
これに対して、「Easy Weapons」はシンプルゆえに、本体のカスタマイズをせずに入力系だけモバイル対応させiPhone6上で動作させても、CPU使用率は40%を切るレベルです。必要のないUpdate()削除や細かい部分での調整を行えば、CPU使用率30%を切るところまで簡単に行えます。
「ASK」も「Easy Weapons」同様、シンプルなフレームワークですので最適化は容易です。「Easy Weapons」並みに、アイドル時20%台、オブジェクト破壊時でも常時30%台をキープできるので、十分軽量化可能だと思います。

【総評】
「UFPS」、「Easy Weapons」、「ASK」と3本の比較をした結果として、一番のオススメは「ASK」です。
まず「UFPS」ですが、モバイルで動作させることをあまり重要視していないアセットであるため、PCで動作させるハイエンドなFPSを作るには最適ですが、モバイルで動作させるには数多くの機能削除が必要となり、売りであるFull Body Awarenessやエフェクト等を利用することはかなり厳しいです。そうすると、「UFPS」を利用する意味が無くなってしまいます。今回のテスト時にCPUコストにほとんど影響しなかった「UFPS」機能のひとつ、インタラクションですが、こちらもオリジナルでの実装がそんなに難しいものでもないので、このためだけに「UFPS」を使用するというのも、ちょっと考えものです。
「Easy Weapons」はモバイル最適化が非常にしやすいフレームワークです。シンプルさとコードの可読性の高さゆえに、必要だと思う機能を自分でコツコツ追加していくことも簡単にできます。この辺は開発者も分かっているらしく、簡単にカスタマイズできるようにデフォルトでは使用していないカスタマイズ専用のクラスやメソッドをあらかじめスクリプト内に用意してくれていたりします。
ただ、ひとつ大きな問題点があります。それは、アップデートが2015/4/21で止まってしまっている点です。今回のテストはUnity5.1.2で行いました。インポート時にいくつかのWarningが出るだけで使用自体には特に問題はないのですが、すでに半年近くアップデートが止まっているのは心配になります。Forumでは開発者が今でもいるようなので大丈夫だとは思いますが、もう少し頻繁にアップデートしてくれないと、諸手を上げてオススメできないです。
そんなちょっと心配な「Easy Weapons」とハイエンドすぎる「UFPS」の間にいるのが「ASK」です。
「ASK」のスクリプトは癖があるので慣れるまで読み解くの若干時間がかかりましたし、バージョンアップで泣かされたりもしましたが、今回取り上げた3本の中では一番、モバイル化しやすいと感じました。また、「ASK」の売りとして Mobile Optimized とも記載されています。この謳い文句が一体どこまで本当なのかは分かりませんが、スクリプトを読む限り、常時コールしているメソッドはかなり抑えられているように感じました。

そんな「ASK」が本日2015/10/19のセール(55%OFFの15.73USD)になっています。
モバイル動作前提でFPSフレームワークをお探しならオススメです!

[Unity5 対応]
Asset Store