同人・インディーゲーム部会(SIG-Indie) 第10回研究会「PlayStation Mobileの現状と可能性」に行って来ました。
IGDA Japan chapter - IGDA日本 同人・インディーゲーム部会(SIG-Indie) 第10回研究会「PlayStation Mobileの現状と可能性」【6月1日(土) 11:20-】東京
http://www.igda.jp/modules/bulletin/index.php?page=article&storyid=1014
Togetterまとめ
IGDA日本 同人・インディーゲーム部会(SIG-Indie) 第10回研究会「PlayStation Mobileの現状と可能性」 - Togetter
http://togetter.com/li/512512
このイベントでSCEさんが紹介されていたPlayStation Mobileプログラムの最適化テクニックやTipsがとても有用だったのでまとめておきます。
よくある問題に対するTIPS
- パフォーマンスが思ったほど良くない
- まずはStopwatchクラスを利用してボトルネックを見つけるところから
- ElapseMilliseconds 経過時間の合計を取得(ミリ秒単位)
- ElapseTicks 経過時間の合計を取得(タイマ刻み) ※こちらの方が細かい刻みで測定できる
- まずはStopwatchクラスを利用してボトルネックを見つけるところから
実機での正しいパフォーマンスを知るには
- Releaseモードでビルドする
- PSMアプリのデプロイ後、DevAssistantのメニューからPSMアプリを立ち上げる。
- PSM Studioから起動すると、実機とPC間の通信が行われるため、オーバーヘッドがかかる。
Debugビルド - Debug実行に比べて20〜30%早くなる
最適化オプションの有効化
- パフォーマンスの向上
- ソリューションの中から有効化したいプロジェクトを選択した状態でメニューから [プロジェクト] - [(ここにプロジェクト名)のオプション] - [ビルド] - [コンパイラ] - [最適化を有効にする]にチェック。
描画最適化のヒント
よくある問題に対するTIPS
- Vitaでテクスチャローディングが遅い
- 現時点では圧縮テクスチャフォーマットがサポートされていないので、サイズの大きなテクスチャを読み込まないといけない
- プロパティ「署名と暗号化」の設定でリソースからチェックをはずしてみる
- SignedAndEncypted > Signed > Plain
- ローディング時間を考えて、Plainを選ぶことも検討
(※筆者注)Android環境で有れば暗号化されてないとデータを簡単に見れることになると思われるのでその辺りが気になる場合は特にユーザに見られても問題無いUI関連の画像データなどのみ変更するなどの工夫が必要かと思われます。
(※筆者注:画像付きの「署名と暗号化」を外す手順解説)
1. 画像ファイルを選択
2. プロパティを開く
3. プロパティの項目をスクロールした最後に有る「Content Protection」の値を「SignedANdEncrypted」から「Plain」に変更する
※それぞれの項目の画面上での位置
- メモリ使用設定について
- 設定できるメモリ量は96MB
- Resource Heap + Managed Heap = 96MB
-
- SDK 1.10以降で、Resource Heapの使用量がSystemMemoryでチェックできるようになった
- SystemMemory.Dump()で簡単にメモリ使用量がわかる
- SDK 1.10以降で、Resource Heapの使用量がSystemMemoryでチェックできるようになった
-
- SDK内部で一時的に確保しているバッファはこのチェックで計測できないため、少し余裕を持たせる必要がある
セーブデータの暗号化
- アプリ内課金を実装する場合、セーブデータは暗号化しておきましょう
- Sce.PlayStation.Core.Servicesのクラス AccountInfomation の UniqueID プロパティでユーザアカウントごとにユニークな値を取得できます
- ユニークな値を種にして、セーブデータをSystem.Security.Cryptographyのクラスを使って暗号化し、セーブする。
(※筆者注)この方法で有れば全ステージクリア済みのセーブデータをネットにアップされた様な場合にもアップした本人のデバイス以外では正しく動作しなくなるので上手い方法ですね。
HighLevelライブラリ
GameEngine2Dのこれからの改善予定の部分
今後のロードマップに関して
Unity
- Unityを使っている方は、そのまま使えます!
- Unityコンテンツを持っている人は、PSMのストアで販売可能!
- PSMならカジュアルな2Dゲームや課金ゲーム、ハイレベルな3Dゲームも開発可能!
鍵、デバイスシード
- 鍵
- パブリッシャー鍵
- ライセンス購入が完了すれば発行可能
- 基本的には一度作れば変更不要
- 更新すると色々と面倒です(後述)
- エクスポートしてバックアップしておくと安心
- アプリ鍵
- Application ID(Project Name)と 1:1 の対応
- パブリッシャー鍵
デバイスシード/アプリ鍵/アプリ鍵束/は全て1つの「パブリッシャー鍵」に紐づけて有るため、これを変えてしまうとデバイス(Vitaなど)にインストールされたそれらのデータを新たに差し替え直す作業が発生。テスト端末を沢山使っている場合にはかなりの手間に
※「アプリ鍵束」は複数の「アプリ鍵」を1つのグループとしてまとめたもの
アプリを実機テストする際のバッドノウハウ
Androidの設定
- 充電中にスリープモードにならないように設定する事を推奨
- (特にIS11Sは)自動回転もOffにしていおいた方が良い ※アプリ転送中に回転が行われると転送エラーになるそうです
PSM Development Assistant
- 再インストールしたら前に使っていたアプリ鍵束を再作成
- (Android)プロセスが死なずに残っている場合も(残念ながら)あるので、怪しい場合はAndroidの設定から強制停止して下さい
- (Vita)巨大ファイル(500MB以上とか)のアプリをインストールする場合、スリープしない様にたまに画面をタップして下さい(SDK 1.20で修正)
PSM Studio、PSM Publishing Utility
- PSM Device.exeというプロセスが残り続けるケースが(残念ながらかなり)あるので、その場合はタスクマネージャから強制終了して下さい