勉強会のレポート(メモ)です。
参加したのはこちら、「Indie Games Festival 2019 キックオフ イベント」、
の午前に開催されたUnityセミナー「ゲーム制作に集中するための便利サービス & 時間節約術」です。
events.withgoogle.comハッシュタグ : #indiegamesfestival
ゲーム制作に集中するための便利サービス & 時間節約術
スライドは後日公開されます。
公開されました。
対象者
・個人開発者
・自作するのがめんどうな方
・ゲーム以外に時間をかけたくない方
話すこと
開発時困ることやビルド時間の節約方法。
まれによくある困ることについて
Unity Collaborate
ありがちな問題点
・ファイルの同期、バージョン管理ができない。
・名前に日付を含めて保存する。
・USBメモリやクラウドで受け渡し。
こういう問題に対しみんなはgitを使っているらしい。
しかしgitは学習コストが高い・・・
そこで簡単なバージョン管理方法にcollaborateがあります。
できること
・チームメンバとプロジェクトを共有(エディタの中で完結します)
・ただしこれはgitのように分散管理ではなく一元管理になります。
・さらにリアルタイムで別の人が編集しているファイルを知ることができる。
ただし無料でできる範囲は限られている注意。
できないこと
分散管理ではない、ブランチもきれない。
使いどころ
・プロトタイプ作成
・短期開発
・特に学習コストはない
もっと機能が欲しい時はgitを覚えた方がいい。
こちらのテラシュールブログを読んでおくといいでしょう。
Unity Cloud Build
効率よくビルドしたい。しかし実機ビルドは長くなる。
プロジェクトサイズが大きくなると当然長くなる。
しかもビルド中は操作できないため開発が止まる。
これをなんとかして節約したい
ビルド専用マシンを用意するという対策もある。
しかしコストがかかるし手間。
いい感じにビルドしたい・・・そういう時にCloud Build
クラウド上でプラットフォームごとのビルドができる機能です。
できること
・開発用のPCを使わずビルドできる
・複数のビルドが同時にできる
・自動ビルド、さらのビルド完了のメールも送ってきてくれる。
しかしそもそも有料、同時ビルド数増やすのもお金がかかる
できないこと
・バージョン管理されてないソースコードからビルドはできない
・そのままストアにアップロードはできない
使いどころ
・環境を用意できない、めんどくさい方
・ゲーム制作に集中したい方に
もっと先のことがしたい
JenkinsなどCI(継続的インテグレーション)について勉強しましょう。
つよつよビルドマシンを買う。
Cloud Buildエンタープライズを使ってみる。
Remote Settings
リリース後のお話。
ゲーム内の設定や値を変えたい。
しかしいちいち書き直して再ビルドは時間と手間がかかる。
ではどうするか。
外部のサーバーを用意して、値を取得するようにする。
そういう手段もあるが、これもいろいろ考えることがふえる。つまりめんどくさい。
手軽にやる方法としてRemoteSettingsがあります。
ゲーム内の設定をダッシュボードからリアルタイムに書き換えることができる。
KeyValue形式で値で操作する。
具体的な利用例
・ライフやHPなどで難易度調整
・セリフの差し替え(季節ごとに変えるなど)
・ランダム性のあるくじびきの確率変更(ほんとはやらないほうがいい
できること
・ゲーム内の値をリアルタイムで更新できる
・アプリ更新しなくてもよい
・地域、国ごとに設定できる(IAPを使っている場合は課金勢、無課金勢で値をわけることがきでる)
できないこと
・値の変更はスケジュール管理ができない(自動で値の管理はできない)
・画像を登録することはできない
・ユーザデータの保存はできない
使いどころ
・プレイヤーの反応を見ながら値を調整したい時
・簡単なお知らせメッセージを表示、頑張ればJSONをいれることもできる
・ゲーム内のフラグをダッシュボードから操作する
効果的な利用案募集中です。
もっと先のことがしたい
・結果を分析すること
値を変更したことによってユーザの動きはどうかわるのか
ゲーム内のKPIはどう推移したか
・次に生かすためにちゃんと記録しましょう
・ちなみに無料で使えます
Unity Diagnostics
エラーやクラッシュのレポートを取得したい
アプリ公開後のユーザからの不具合報告で、
「エラーが出る」「アプリが落ちる」などいろいろレビューがきても、ログをもらえることは少ない。
再現の条件がわかりづらくもっと情報がほしい時にどうするか、自動化できないか。
そこで登場するのがDiagnostics(ダイアグノースティックス)です。
クラッシュレポートや例外、任意のフィードバックをもらうことができる機能。
まだpreview版だが使うことはできます。
Crashes and Exceptions
クラッシュと例外のレポートをクラウド上から取得。メタデータを含めることもできる。
シンボルファイルもダッシュボードで設定できる。
User Reporting
ユーザが任意でレポートを送信できる機能、スクショも含めることができる。
レポートはダッシュボードから見ることができる。
できること
・レポートの収集ができる
・ユーザレポートの収集もできる
・起きた瞬間に自動でレポートが送信される(ネットにつながった瞬間)
ただしライセンスによって上限が設定されているので、そこはお財布と相談。
できないこと
・レポートが送られていても返信できない、完全一方通行。
・質問がきても回答できない。
使いどころ
・とりあえずONにしておけばデータが集まる
・不具合報告の機能を簡単にいれることができる
公式のドキュメントにはない(preview版なので)、詳細はgithubに書かれています。
含まれているサンプルをいじっていくといいでしょう。
本日のまとめ
まとめ #IndieGamesFestival pic.twitter.com/G9CHX8m0YN
— しんーーご.vrm (@shi_k_7) March 2, 2019
タイムライン
Cloud Build→クラウド上でプラットフォームごとのビルドができる。使ったことないけど便利そうだな。 #indiegamesfestival
— yanpen3 (@yanpen3) March 2, 2019
Collaborate は無料版だとチーム3人で1GBまでだけど Cloud Build の恩恵もでかいので Unity Teams Advanced ($9/month) 契約するの結構ポジティブな選択だと思う #IndieGamesFestival
— 青木とと(ˊᗜˋ*) ごたゆに #11 3/27(水) (@lycoris102) March 2, 2019
サーバ周りがっつり触りたくない場合、Unity Remote Settings とかFirebase Remote Config とか使ってバナーやイベント出し分けたりするのいい感じっぽい (まだ試したことない) #IndieGamesFestival
— 青木とと(ˊᗜˋ*) ごたゆに #11 3/27(水) (@lycoris102) March 2, 2019
バナーって書いちゃったけど、Remote Settingsでは画像の管理は出来ないので、予めビルドに含めるかAssetBundle (もしくはWebリクエスト経由) で取得させる必要がありそう #IndieGamesFestival
— 青木とと(ˊᗜˋ*) ごたゆに #11 3/27(水) (@lycoris102) March 2, 2019
Cloud Diagnostics
— 青木とと(ˊᗜˋ*) ごたゆに #11 3/27(水) (@lycoris102) March 2, 2019
(クラウド ダイアグノースティクス)https://t.co/d2K1I1JFB4#IndieGamesFestival
Unity Cloud Diagnostics はクラッシュ/例外時のレポート自動収集も出来る、良い。Unityのライセンスによって上限が設定されている。 #IndieGamesFestival pic.twitter.com/EAYngXkWcn
— 青木とと(ˊᗜˋ*) ごたゆに #11 3/27(水) (@lycoris102) March 2, 2019
#IndieGamesFestival
— Giトgiト@ゲーム制作 (@geatnium) March 2, 2019
個人的にはRemote SerringsとCollaborate使えそう
Unityセミナー自分まとめ。Cloud Diagnosticsはとりあえず入れてオンにする。#IndieGamesFestival
— kema (@kema8351) March 2, 2019
参考資料
近い内容を取り扱った講演
Collaborateは昔コロプラさんの1dayインターン内のゲームジャムで使った記憶。
当時はGitなんてコミットプッシュプルくらいしか知りませんでしたがとても簡単に扱えました。
Gitが使えるのならGitでいいかと思いますが、他の人が編集中のファイルを知ることができるのは便利。
いちいち「これからこのファイルいじります」宣言などしなくていいのも楽ですね。
RemoteSettingは大変便利そうですね。
画像を含めることはできないので、画像は最初から入れてフラグ変数の書き換えで表示を切り替えるみたいな処理が必要みたい。
同じ感じで任意のタイミングでステージ解放とかも。