Skip to content

Google「Indie Games Festival – キックオフイベント」の雑メモ

Posted in 技術記事

公式ページ

午前も含め、行ってきました。
講演中に色々とメモをしたので、整理補足してまとめてみましたが
思った以上に文字数が多かったので編集はあっさりめ。

 

1限 最適化を始める時にすること

※unite2017の講演がベース

更にその前の話

ターゲット端末は開発の早い段階で決めよう。解像度、画面比率の後手対応は手間
Unityのサイトにデータがある。OS、メモリ、アス比、その他の割合がわかる →リンク
直すべき箇所は少ない。原因は極一部の処理がであることがとても多い
いきなり修正しない。効果があったか分からなくなる

プロファイリングをしよう

大まかな対応はUnityのProfilerで十分可能
wifi接続した実機のプロファイルも可能 Profiler→ActiveProfiler→IP入力

・メモリ使用量が多くて不正終了する
使用量が多い≠メモリリーク である
繰り返し(長時間)遊ぶと落ちる時はメモリリークが疑われる
メモリはC#とUnityの2種類に分かれる
確認はProfiler→Memoryを選択→一番上の行(C#はMonoと表示)
Reserved Total=確保されたメモリ量

・C#メモリ=MonoMemory
Editorの分も加算されることに注意
ファイル読み込み、通信時が特に重い

・Unityメモリ
Profiler→メモリ→detail(ログ窓左上のドロップダウンリストから選択) take sampleから詳しく見れる
アセットを減らす、読み込みタイミングをずらす

・ロードが長い
ロードが長い?初期化が重い? Jsonのパースとかが重いことも
読み込みデータの量が多くないか?差し当たって不要な分をロードしてないか?
1F内の処理の詳細は、Profiler→CPU Usage→HierarchyをTimelineに変更 で確認できる
Debug.Logは非常に重い。Debug.logger.logEnabled = false; で一括オフに出来る
AssetBundleの重複ロードに注意

・プチフリーズ
ほとんどはGarbage Collection(=C#メモリ解放処理)のせい
Profiler→CPUUsage→GabegeCollectionで確認できる
DeepProfile(Profiler窓一番上)をON GCAllocの項目からスクリプトを特定する
例:Stringの足し算は無駄が多く重い(string str = “a” + “b”;)
StringBuilder.Appendを使うと軽い、が非常に書き方が煩雑
StrOpe拡張を使うと簡単に書ける(string str =StrOpe.i + “a” + “b”;) →リンク

・フレームレートが低い
60FPS(16.6ms/F) 30FPS(33.3ms/F)
ロジックの問題か?描画の問題か?
Profiler→CPUでRenderingかそれ以外どちらが重いか、で確認 VSyncの項目は外しておく
もしくはカメラいじって解像度を限界まで下げると、切り分けができる

重くなりがちな事例

・GameObject
モバイルは3000個程度に収めたい

・物理演算
計算回数を減らす 専用のFPS設定を持ってるので、できるだけ減らす(貫通しやすくなることに注意)
不要な(何も起きない)衝突判定をしない設定にするのも有効 ProjectSetting→Physics
Colliderを簡素化する Mesh→Boxに変更

・uGUI
負荷はUnity2017以降ならProfilerで見れる
アニメーションは動く部分を別キャンバスに分けないと重い
(動くのが一部でも、キャンバス全体が動く処理をしてるイメージ)
透明でも負荷は同じなので「透明で塗りつぶす」のはNG

・無駄描画
手前のオブジェクトに隠れているものを描画するのは無駄
Cameraが複数あると起こりがち
Window→FrameDebugger→Enableにすると1F中の描画処理順が見れる

・Batch、SetPass
Profiler→Renderingから確認、モバイルは合わせて200が限度
DynamicBatcingとか頑張る

・空、地面など面積が大きい部分は軽いShaderを使おう

 

2限 動画広告のすゝめ

(ログインボーナス連続600日とかあるゲームもあるらしい)
・F2P型で課金するのは約2%
・とあるゲームの動画広告は
DAUのうち広告を見たユーザー 40%
広告を見たユーザーあたりの平均視聴回数 3回

・用語
CPV=視聴完了で収益 数百円/1000回
CPI=アプリインストールで収益 5-600円/1回 高いと2-3000円(FFとかリネージュとか)

・導入例
デイリーログインボーナス、にボーナスを付けるための動画広告(追加報酬とか)
タップゲーの妖精さん
お絵かき心理テスト 結果はCMの後で!(画面遷移に挟む)
※強制広告は日本だととても嫌われるので任意がよい
浮気したら死んだ 女の子との会話用チケットをもらえる
君の目的は僕を殺すこと3 タップゲースキルの1つとして常設されている(オート連打みたいな機能がつく)

・手法
デイリーログイン型 ボーナスが増える(その瞬間だけ有効、1日1回だけ表示)
アイテムプレゼント型 通貨、経験値ブースト、合成成功率UP
時短型 建築速度、スタミナ回復
コンテニュー型
ガチャ引き直し型 10連ガチャをやり直せる 無課金層に有効(せっかく貯めた石を無駄にしたくない人が利用)

・UnityAdsの特徴
同一広告が連続で配信されない 在庫が多い
最大7日間のユーザートラッキング 動画広告から直接インストールしなくてもカウントされる
ゲーマー特化 広告出稿側、掲載先のほとんどがゲーム
SDKいらず

・改善
調子がいい作品は数カ所数種類設置してる
広告に接触するまでの時間、手間が多すぎないか?
回数が限定的すぎないか?
報酬は魅力的か?

・機能
ブラックリスト、ホワイトリスト機能あり
広告毎のeCPM、クリック数とかインストール数とかのデータはUnityに聞けば見れる・・・らしい

 

3限 IGFはいいぞという話

泥端末20億台 820億アプリインストール/年
3作品までエントリー可能
ドットよりローポリやボクセルの方が若い世代に強い
IGF韓国の盛り上がりが凄かったらしい
※韓国はゲームの社会的地位が高い。eSportsの選手はジャニーズレベル

 

4限 便利ツール

開発環境

まあ今から始めるならUnityだよね

画像、3Dモデルの用意は?

ボクセルが手軽 ツールはMagicaVoxelqubicle
複雑な形状は頂点数増えすぎることが多い 頂点数減らすのはAssetStoreのVoxcelImporter
プリレンダで2Dにして使う手もある
動きはBlenderでもいける
素材買って加工する AFFINITY DESIGNER
海外のツールは(代理店を通さず公式サイトに行くと)インディーライセンスがあることが多い

外部サービス

小規模向けの「出世払い型」サービスは多いので探してみるとよさそう

・アイテムストア →リンク
残高とか機種変とかユーザー個別対応とか全部対応可能

・ニフティクラウド mobile backend →リンク
mBaaS(mobile backend as a Service)の一つ
プッシュ通知とか会員管理とかデータベースなどの機能を、サーバーを用意せずに使える

・アドフリ君 →リンク
複数社の動画広告を一元管理するサービス

・スケッチ ツェッペリン デザイナーとエンジニアの情報共有に利用(多人数向け)

苦労する部分時間がかかる部分

素材準備、宣伝、マネタイズ
海外の機種依存バグ そもそも端末が手に入らないことも多い

 

5限 PlayConsole

・リリースダッシュボード
ANR = 応答なし
時間指定公開もあるよ。自動かと思った?残念手動でした!
※時間指定公開を選ぶと公開直前で止まる。その状態になれば、時間を指定できる…ぽい
アルファ/ベータテスト 対象地域別に分けられるようになった
端末カタログ 検索力上がった

 

6限 ポリシー

詳しいことはポリシーセンターで見てね →リンク
・Googleplayのリジェクトは6割が著作権違反
コラボとか正当な利用時は、使用権を示す証明書を事前に送れば良い(事前通知) →リンク
違反されたらどうする?コンテンツを削除する的な通報ページがある →リンク

・プライバシーポリシー アプリ内にも入れるとベスト

・広告はデベロッパーの責任である
ユーザーに適切な広告を出すこと 子供用アプリに大人用広告が出るのはアウト 日本で違反が多い
広告SDKが端末データを勝手に収集してるケースに注意

・(例えアプリが大人向けでも)メタデータ(言葉、画像、動画など)は全年齢対象にすること

・誘導で増えたインストール数はランキングから弾かれているらしい
(お小遣い系、インストール数販売業社などによるもの)

 

7限 アプリの品質

詳しいことは以下略 →リンク
SDKversionを気にする。各バージョンの比率と対応コストで決めよう

・バックキーについて
※バックキー=通常画面下部に配置されてる左向き三角アイコンボタンのこと
UnityではInput.GetKeyDown(KeyCode.Escape)で取得可能
ブラウザバックと同じような動作をさせるのが基本 ダイアログを閉じる、1つ前の画面に戻るなど
自前で実装済みの「戻る」ボタンがある場面においては同じ動作するのがよい

・電話とかで割り込まれたら一時停止するのがよい(アクション系は特に)

・パーミッションが拒否された時の対応を忘れがち

・ストア表示
ヘッダー、動画にタイトルを入れる 文字は大きめにする。小さい文字はモバイルだと読みにくい
実際のゲームプレイ画面も1枚は入れよう

・通知
アイコンは設定しないと他所から持ってきて白塗りされて表示される。ちゃんと設定しよう
content titleは内容の要約を入れる。ゲームの名前ではない

 

8限 現在のインディーシーンについて

現在のスマホ有料アプリは安すぎる
有料ゲームの波は起き始めてるらしい(課金疲れなどによる?)
買い切りは初速命
日本の市場は世界全体の1割程度しかない、ならば世界だ。では世界で勝つには?
コンテストで賞をとる(せめて人間関係を作る)、国でトップをとる、英語得意になる
認知度を上げるために
ゲームの公式サイトを全力で作る、各メディア(大小、企業個人、種別問わず)との繋がり
イベント 直にプレイしてる様子を見る機会は貴重
開発日記は結構人気があるらしい

 

その他

・スライド
リンクは常時出しておくと、メモする時間ができて良い
・Google Play APP DOJO
なんか品質向上のサポートしてくれるらしい →リンク
・タダ飯

Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です