gracetory’s blog

東池袋にある合同会社グレストリのエンジニアブログです

初 Unite Tokyo 2019に行ってきました。

f:id:grshizawa:20191007161642j:plain:w500

まえがき

こんにちはプログラマのShizawaです。

9/25(水)、26(木)2日間に渡って開催されていたUnite Tokyo 2019に行ってきました!
初めての参戦。
開催からだいぶ日にちが経ってしまいましたが、ちょっとしたレポートを残しておきたいと思います。

会場の雰囲気

全てではないですが、ざっくりと載せていきます。

フードサービス

f:id:grshizawa:20191015170457j:plain:w300
フードサービス(この他にもたくさん)
f:id:grshizawa:20191015171022j:plain:w300
Unite Bar
フードサービスが充実していて、昼食、夕食、小腹が空いた時は会場内で済ませられるのがとても良い。
ただ、お昼時は激混みで、後には品切れだろうと思っていましたが、
補給がされたからなのか普通に食べることができました。
見かけた食べ物は
アイス、りんご、バナナ、ミニハンバーガー、ポテト、ピザトースト、サーモンのマリネ、ハヤシライス、フルーツゼリーなどなど。
夜にはお酒が振舞われ、講演によっては飲みながら公聴することができます(自分は恐れ多くて飲めませんでしたが)。
立って飲食している方がほとんどで、ゴミなど散らかってるのかとも思いましたが、
清掃が行き届いていたのかそんなことはありませんでした。

おみくじ

f:id:grshizawa:20191015174728j:plain:w300
雲丹亭神社
一回だけ引けるおみくじ。
ユーモアのあるお告げが書いてあります。
私は大吉を引くことができました。

サテライト公演席(ラウンジ)

f:id:grshizawa:20191015174552j:plain:w300
サテライト公園(ラウンジ)
一番人が多い公演はサテライトルームかラウンジで中継される。
時間通りに行くか、サテライトすれば、自分がみたい講演が見れないということはほぼないと思います。

ExpandedBooth

f:id:grshizawa:20191016170808j:plain:w300
3Dスキャナー体験
自分の身体を3Dスキャンして、モデリングしたデータをみれるブース

f:id:grshizawa:20191016173026j:plain:w300
イラスト×モーションでライブ配信体験
アニメイラストを元に目と口を検知、アニメーションして会話できるバーチャル体験ブース

f:id:grshizawa:20191016173613j:plain:w300
HoloLens装着 モザイク強め
HoloLens体験コーナー

個人的にはMRデバイスであるHoloLensに感動しました(初体験)。
現実世界にPCモニタようなWindowが置かれ、
そのWindowをジェスチャーで選択してアプリケーションを立ち上げるような感じでした。
3Dの飛行機や人体模型をジェスチャーで移動、拡大縮小して、内部構造も覗けることに驚きました。
実際の3Dモデルを内部まで作成することで、可能となり、医療や建築の分野で活躍を期待しているとのことでした。
体験してみると感動した部分もありましたが、やや難点も。 一つはCPUがヘッドセッドに内臓されていて重い。重心が前の方に来ているからか、眉間の下あたりが痛くなりました。
2つ目に、画角が狭く没入感があまり感じられないこと。ここは個人差あるかもしれません。
しかし、これから発売予定の「HoloLens 2」はこれらのデメリットを解消していると、 スタッフの方がおっしゃっていたので期待が膨らみますね。

喫煙所

f:id:grshizawa:20191015165311j:plain:w300
喫煙所
開けた場所にあり、おしゃれなオブジェ。
喫煙者にはありがたい室外の喫煙スペース。

まとめ

と、一部ですが雰囲気が分かればいいかなと思います。
雰囲気はUnity開発者という志を共にする同士が和気あいあいとしている感じがして、
個人的に居心地がよかったです(自分はソロ参戦でしたが)。

講演レポ

2日間の中で参加した一部の講演について書いています。

『SINoALICE -シノアリス- 』〜 それは最速のゲーム起動 〜

講演者

株式会社ポケラボ 中原 雄一 様

シノアリス開発環境
  • Unity 2018.4.2
  • Spine
  • SPARK GEAR
  • CRIミドルウェア
起動時の処理
  • ログイン処理
  • 各種ユーザデータの取得
  • マスタデータのロード(マスタ毎に用意しているAPIを実行)
  • アセットバンドルのチェック&ダウンロード
      アイコン
      キャラクターSpine
      敵Spine
      バトル中エフェクト
      バトル背景
      各種バナーなど
  • ダウンロードしているファイルのチェック
  • Resource Fileのチェックとダウンロード
      ・動画
      ・BGM、SE
      ・ボイス
    ※Asset bundle化していないもの → CRIのファイルなど

2分以上かかっていたロード処理。
ユーザ間でも進まないロードが話題になるほど。

ボトルネック
  • マスタデータのロード
     ・マスタの数が多い(約80種類)
     ・サイズが大きい(クエスト、シナリオ、カードマスタ)
       → 運営を続けて行くと特に増加が顕著になり、チェック時間が増加
  • アセットバンドルのチェック&ダウンロード
     ・アイコンなどでハッシュ値の比較をしているが、これが4500回(ダウンロードが走らなくても)。
       →これをゲーム起動時にチェックしているので、時間がかかっている。
     ・アイコン以外は随時チェックとダウンロード。
  • リソースファイルのチェック & ダウンロード
     ・シナリオボイスが圧倒的多い、増加も顕著
     ・ファイルチェック回数1000回
     ・動画などそもそも一つ一つの容量が大きい。
対策
  • マスタデータのロード
     ・各マスタのバージョンを管理するマスタを用意。
     ・バージョンをチェックし、差分のあるマスタを取得し、ローカルストレージに保存。
      (ゲーム起動時に丸ごと取得するのをやめ、必要なものだけ取得するように。)
     ・マスタ上の有効期間を参照し、使用していないマスタデータをフィルタリング   (サーバ側で除外し、レスポンス)。
  • アセットバンドルのチェック&ダウンロード
     ・アイコンを随時ダウンロードに変更。
     ・アイコンを表示する画面では、非同期でダウンロードして表示をする。
     ・キャッシュクリアすると表示がスムーズでなくなるがそれは許容。
  • リソースファイルのチェック & ダウンロード
     ・随時必要な時にダウンロードする方式に変更。
     ・リソースファイルのバージョンを管理するマスタを作成。
     ・バージョン差があった時のみダウンロード。
  • ロード時のプログレスバーの表現工夫
     ・ 下記種類の表現を比較
      1. プログレスバー(ゲージと分数表示) → 単数と比較して長く感じる
      2. プログレスバーなし → いつおわるかわからない、フリーズ感
      3. プログレスバー(単数・段階的)
      4. プログレスバー(単数・スムーズ) → 段階的より、スムーズである方がUX的に体感が良い。

  • そもそも待ち時間が2、3秒であればプログレスバーはいらない。

  • プログレスバーが右に溜まっていく時、左に波打つエフェクトがあると体感が速くなるという研究がある。
やった結果
  • ユーザ満足度が上がった
  • CDN料金削減
  • 開発時のPDCAが高くなった
今後
  • バックグラウンドダウンロード
  • 一括ダウンロード、随時ダウンロードの選択
  • 動画のストリーミング再生
  • プログレスバー表現によるさらなるUX向上
    に取り組んでいく。
感想

チェック数削減やダウンロードをその都度するように変えてロード時間を減らすのは
当然そうなるかなと思いましたが、
プログレスバー(UX)の見せ方で体感を良くする話が興味深かったです。
非同期ダウンロードと必要なときだけダウンロードが重要なのはユーザの体感を良くすること、
リセマラのCDN料金対策になることなので、効果的だと思います。


Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~

講演者

日本マイクロソフト株式会社 齋藤 隼也 様 Sansan株式会社 西根 幸洋 様

ゲーム市場の変化

・小売店販売のみ(過去) → デジタルでの販売に変化
 ユーザとの接点が増えたことによりゲームも変化している。
・オンラインに繋がるゲームが増え、リリース後にもサービスを提供できるように変化してきた。
・ゲームプレイの性質が変化している。→ コミュニティとしてのゲーム。
・全世界で最高収益を上げているゲームの9割はLive Opsの形になっている。

Live Opsとは
  • リアルタイムで戦略を考えていくこと。
  • 運用でユーザニーズを見極めて、ゲーム運営を進化させていく。
  • 下記サイクルを繰り返すことで、利益を生み続けるコンテンツにする。
    1 .プレイヤーについて考える
     ・どんなプレイの仕方をするのか
     ・どの時間帯によく遊ぶのか
     ・ユーザ同士どんなコミュニケーションを取るのか
    2 .データ分析
     ・ユーザ分析(ゲーム内の課金額やレベルが上がったタイミングなど)
     ・実績分析
    3 .デザインと方針
     ・プレイヤー中心のゲームデザイン
     ・価値をプレイヤーに提供することを重視
    4 .効果検証
     ・進化を継続するために検証を重視
     ・施策後の反応をみる。

  • しかしこのサイクルを開発と平行して行う余裕がない。
     ・一人で全部やるのは辛い
     ・サーバーやDBの維持コスト
     ・とにかく時間(人手)が足りない

 そこでLive OpsのためのPlayFabというサービス。

PlayFabの特徴
  • Azureのゲームバックエンドサービス
     ・Analytics、プッシュ通知、チャット、ランキング、マッチングなど
  • Unityはもちろん、どんなプラットフォームにも対応。
  • プレイヤーのセグメント化
     ・「ゲーム開始○日以内」、「レベル○以下」のユーザなど任意のセグメントに分けることができる。
     ・セグメント化したユーザを対象にアクション(限定ショップ、プレゼント配布など)を起こすことができる。
  • つまりmBaas
使い方

・PLAYFABのサイトで会員登録し、スタジオ(プロジェクト)を作成。
・Unity用のエディタ拡張をサイトからダウンロードし、Unityにインポート
・エディタ拡張で追加されたWindowに。サイトで登録した情報を入力し、SDKをインストール。
・Unityのスクリプトでログインを行うコードを参考サイトからコピペして連携完了。

使用例
  • PlayStream Hook
     ・プレイヤーの行動をフックしてアイテムを配布や
      チートプレイヤーを検知してBanをしたりなどできる。
     ・PlayFab管理画面の自動化 > ルールから設定できる。
      受け取ったユーザのログも管理画面から確認することができる。

  • Player Segmentation
    ・対象セグメントのプレイヤーにお詫び配布などができる。
    ・管理画面のプレイヤー > セグメントから設定できる。
    ・PlayFabにはアイテムやストアの定義ができ、その定義をセグメントに適用することができる。
     → 初心者ユーザだったら、ビギナーショップを表示させる etc

  • Scheduled Task
    ・全ユーザにギフトを配るバッチ処理を行う。
    ・管理画面の自動化 > スケジュール済みタスクタブから設定。
    ・アクションを指定して、指定したセグメントにも実行できる。
    ・バッチ処理の履歴などが管理画面で確認できる。
    ・お詫び配布などに使える。

良いところ(個人開発をしていて)

・RDBサーバを使うとなると、無料のものがないが
 PlayFabは key value storeだが、マネージドで使用可能。
・ユーザーの認証、ダイヤのレシート周りなどのサポート。
・たくさんのサービスが低コストで利用できるので、
 注力したい、ゲーム内容部分に時間を割くことができる。

まとめ

・導入がとても簡単。
・少ない工数で多彩な機能をゲームに実装できる。 ・PlayFabは無料で利用可能。
 ※Essentials Planの場合は機能制限はあるが、無料(人数は制限なし)。
  今回紹介した機能はすべて使用可能。
・ドキュメントが日本語対応したので、わかりやすい。
・これらはあくまで一部のサービスで他にもたくさんある。

感想

このサービス内容を機能制限ありとはいえ、無料で使用できるのはすごいですね。
この手のサービスは最近増えてきていますが、
その中でも網羅的に様々なサービスを兼ね備えている印象を受けました。
ただ、どこに手が届かないとか、デメリットも知りたかったです。
講演では実際の仕組みなどは分からなかったですが、利用できるサービスの内容と実装のデモを
見て興味が湧きました。詳細を調べて自分でも試しに実装してみたいと思います。


開発から運用まで、デベロッパーをサポートするUnity Services

講演者

ユニティ・テクノロジーズ・ジャパン合同会社 鎌田 泰行 様

内容

Unityで提供しているサービスの紹介。

開発編
Unity Collaborate
  • できること
     ・Unityプロジェクトをメンバー間でスムーズに作業ができる機能がある。
      → バージョン管理、ファイル同期
  • サービスを受けるのに必要なもの
     ・Unity Team Basic(無料)で3ユーザまで。
     ・4人以降はUnity Team Advanced($9) + メンバー追加人数 * $7
  • メリット
     ・導入が楽でわかりやすい。
     ・編集ファイルの競合が起こりにくい。
  • 気にすべきところ
     ・ブランチ機能がない ※将来的にブランチ機能を追加予定。
     ・人数が増えると金額がかかる
  • 使い所
     ・個人開発や小規模チーム開発。
     ・プロトタイプを作成するときなど。
  • 導入方法
    下記参照
    https://unity3d.com/jp/how-to/happier-faster-teamwork
Cloud Build
  • できること
     ・プロジェクトのビルドをクラウド上で行う(並列可能)。
     ・ワークフローの簡易化、自動化できる。
  • サービスを受けるのに必要なもの
     ・Unity Team Advanced($9) → オーナーが持っていればOK(3人までは)
     ・4人目以降は人数 * $7
     ・並列ビルドは2つ以降から1つあたり、$10
  • メリット
     ・環境に依存しない
     ・Switch Platformの手間がない
     ・テスターへのビルドデータ配布が楽
     ・お金かかるけど、CI知識なくても設定可能
  • 気にするべきところ
     ・Gitから引っ張ってくるので、バージョン管理されていないソースコードのビルドができない。
     ・なので、ネットワークが閉じていると利用ができない。
    使い所
     ・複数プラットフォーム対応する場合のビルドの時
     ・マシンがビルドに占有されて時間がかかってしまう場合

導入は下記参照
https://unity3d.com/jp/how-to/happier-faster-teamwork

Cloud Diagnostics
  • できること
     ・アプリのクラッシュや不具合のフィードバックを自動レポートして、収集
     ・ユーザから任意のレポートを収集
     → 原因特定や、優先順位をつけるのに役立つ。
  • メリット
     ・無料
     ・導入が簡単(とりあえずONにしておけば良い)
     ・エラーや不具合にいち早く気づける
  • 気にするべきところ
     ・Unity Personal/Plus/Proユーザでレポート保存件数、期間が変わる。

導入の仕方やUnity Pro/Personalでの違いは下記参照
https://unity3d.com/jp/unity/features/cloud-diagnostics

運用編
Analytics
  • できること
     ・ゲームのプレイヤの行動データを収集、分析するサービス。
     ・カスタムイベントをスクリプトで仕込んで送信し、Analyticsに活用。
     ・ダッシュボードで「日本のDAU」や「ゲームを初めて3日以内のDAU」などの確認。
     ・全世界のレポートをリアルタイムに追跡、表示(Unity Pro/Plusのみ)。
  • メリット
     ・包括的に集計データを確認できる。
     ・とりあえずONにすれば勝手にデータが集まるので使ってみよう。
Unity Ads
  • できること
     ・アプリ内広告で収益化をサポートするサービス
     ・動画広告(インターステイシャル、リワード動画)
     ・バナー広告 → あまり知られていないが乗せることが可能。
     ・IAP Promo
  • メリット
     ・導入コストが低い
     ・他の広告サービスと比べて同じ動画が連続して出ることがない
     ・ゲーム内の課金アイテムの宣伝として使える(IAP Promo)
    Remote Config(ベータ版)
  • できること
     ・リアルタイムにゲームの設定値を変更することができる。
     ・期間限定イベント、ショップのセールのON/OFFなど。
     ・対象の範囲も徐々に変更できる。
     ※Unity 2018.3以降、Package Manager 1.0.6

  • メリット
    ・アプリの更新をしなくても、中身の更新、テストが行える。
    ・イテレーション、PDCAサイクルを高速化

※導入の仕方は下記参照
Unity Remote Config | Unity

※講演ではRemote Configについて実装例は話されていませんでしたが、調べてみたところ
Unityの管理画面でスキーマを設定し、アプリ側でWeb APIを呼びだし値を取得する形のようでした。

GameTune(ベータ版) → Unityイチオシサービス
  • できること
     ・Unityが培ったビックデータから機械学習を利用して
      個々のプレイヤーに対する最適なゲーム体験をリアルタイムに予測する。
     ・プレイヤーにあったUXを提供する(このユーザの傾向だとチュートリアルは短く、難易度は高めでOKなど)。
     ※Unity 2017.4以降
  • 仕組み
     1. アプリにGameTuneサーバに質問を投げる。
     2. GameTuneサーバが機械学習サーバへ問い合わせ。
     3. GameTuneサーバが回答を受け取り、アプリに送る。
     3. 回答の結果、プレーヤがどうなったのか観察して、機械学習サーバは学習する。
  • 使い所
     ・ゲームアプリの継続率を改善したいとき。
     ・質問を投げたらいい感じの答えがほしいとき。
  • メリット
     ・機械学習の知識がいらず導入ができる。  ・LTV(Life Time Value)を高める。

※導入の仕方は下記参照(申し込みが必要)
GameTune | Unity

感想

PlayFabに続き、開発効率UPのためのサービスをまとめました。
少人数でゲームアプリを制作していることもあって、サービスを
まとまった内容で講演して頂けるのはありがたいですね。
そして、UnityAdsで広告が出せることを知りませんでした...。
がっつりなソーシャルゲーム向けというよりは、カジュアルゲームなどに効果的なサービスだなという印象です。

まとめ

マネージドサービスが増えていく中で、開発者は何ができて何ができないのかサービスを
知ることから始めなければなあと感じました。
小規模開発では効率化できなければ、肝心なゲーム部分に注力できる時間が限られるので、
こういった意識は重要だと思います。
選択する苦労があって、恵まれた時代だなとも思いました。

初めてのUnite、行くまでは自分のような者が参加していいものか、不安もありましたが、
Unityを取り巻く技術に触れることができて、とても楽しめました。
講演の中には全く理解が追いつかないものがあったので、まだまだと思いつつ(DOTSとかStructC#の講演とか特に...)。、
興味と意欲を持つことができた、と思います

次回も可能であれば、ぜひ行きたいと思います!