Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マップゲーム SDK AROW とその運用を支える AWS の構成 / AROW with AWS

マップゲーム SDK AROW とその運用を支える AWS の構成 / AROW with AWS

こちらで LT したスライドです。
https://gamingtechnight.connpass.com/event/141156/

Ryuichi Jinushi

September 19, 2019
Tweet

More Decks by Ryuichi Jinushi

Other Decks in Programming

Transcript

  1. Copyright Drecom Co., Ltd. All Rights Reserved. マップゲーム SDK AROW

    と
  その運用を支える AWS の構成
 株式会社ドリコム / DRIP 部 / 地主龍一

  2. Copyright Drecom Co., Ltd. All Rights Reserved. だれ?
 地主龍一(Ryuichi JINUSHI)

    • じぬ / ryuj / @reximology • DRIP 部(新規開発部署) • AROW リードエンジニア 最近 • キングダムハーツ3 • オクトパストラベラー
  3. Copyright Drecom Co., Ltd. All Rights Reserved. アジェンダ
 • AROW

    の概要 • AWS の活用 • SDK デモ • SDK の機能紹介
  4. Copyright Drecom Co., Ltd. All Rights Reserved. 本日の要点
 サーバ •

    サーバレス構成の実現とその工夫 クライアント • Unity SDK (AROW) でできること
  5. Copyright Drecom Co., Ltd. All Rights Reserved. POI(Point of Interest)


    ランドマーク POI • 東京タワー • 渋谷 QFRONT • .etc カテゴリ POI • コンビニ • 病院 • .etc point of interest または POI は誰かが便利、あるいは興味のあ る所と思った特定の場所のことである。(wikipedia)
  6. Copyright Drecom Co., Ltd. All Rights Reserved. AWS の用途
 開発者サイト

    • 開発者登録、認証メール • SDK、マップデータのダウンロード • ライセンストークンの発行 • ニュース一覧 その他 • ライセンス認証 • マップデータ • 機械学習の計算リソース
  7. Copyright Drecom Co., Ltd. All Rights Reserved. 利用している技術
 • ALB

    • CloudFront • Amazon CloudWatch • Amazon SQS • AWS Lambda • AWS Step Functions • Ruby on Rails • Terraform
  8. EC2 (Web) EC2 (Web) EC2 (Web) リクエスト CloudFront ALB ①

    /dynamic_contents/* Default S3 ② /api/* W AF W AF DynamoDB SQS Webサーバー関連 RDS S3 ① S3 ③ Lambda① SES
  9. Copyright Drecom Co., Ltd. All Rights Reserved. ストレージ
 S3 •

    マップデータ(arowmap) • POI データ(json) • Unity SDK(unitypackage) • マップデータ編集ツール(C#)
  10. Copyright Drecom Co., Ltd. All Rights Reserved. サーバレス構成
 用途 •

    MAU 計算 • ライセンス認証 補足 • 利用データは S3 で保持 • lambda + CloudWatch/SQS • ユーザ関連なのでスケーリングも考慮
  11. Copyright Drecom Co., Ltd. All Rights Reserved. 特徴
 • CloudFront

    経由で API を利用 • 静的ファイルと API のドメインを共通化
  12. Copyright Drecom Co., Ltd. All Rights Reserved. 評価
 メリット •

    Cookie の SameSite 属性によるセキュリティ向上 デメリット • API レスポンスがキャッシュされないように注意 • 管理コスト キャッシュされないことは負荷試験等でも確認
  13. Copyright Drecom Co., Ltd. All Rights Reserved. AWS 振り返り
 採用理由

    • 社内に実績あり • 運用の知見あり メリット • サーバーレスを駆使して JOB サーバーを静的に 設置しない設計にできた • 費用及び管理コストを抑える事ができた デメリット • 機能が多く、ある程度の知見が無いと活用が難しい
  14. Copyright Drecom Co., Ltd. All Rights Reserved. 初期設定
 • Unity

    の環境設定(ランタイムバージョン変更) • unitypackage の import • サンプルリソースの生成(エディター拡張) • 詳細はドキュメント
  15. Copyright Drecom Co., Ltd. All Rights Reserved. できること
 街並みを作れる •

    データから建物を生成 • 建物を prefab へ置換 • 道・川・地形を生成 POI でゲーム性として取り入れる • POI を prefab で表現 • POI への接近を検知
  16. Copyright Drecom Co., Ltd. All Rights Reserved. 建物編
 • 頂点配列からメッシュを生成

    • 上中下階それぞれ 別々のテクスチャを設定 • 各面のタイリング幅を統一 • 面ごとに UV を丸め込んで 見切れを回避
  17. Copyright Drecom Co., Ltd. All Rights Reserved. 建物編
 旧 現在

    • メッシュを分けない ように修正 • UV を積み重ねることで反 転を回避
  18. Copyright Drecom Co., Ltd. All Rights Reserved. prefab 置換
 •

    道に対してモデルの前方を向けると違和感がなくなる • 建物から最も近い道を探索して Rotation を調整している
  19. Copyright Drecom Co., Ltd. All Rights Reserved. 初期化
 var data

    = File.ReadAllBytes("xyz.arowmap"); var model = ArowMapObjectModel.LoadByData(data); ArowMapObjectModel • 建物・道・地形などのデータを管理 • .arowmap 関連処理のラッパ
  20. Copyright Drecom Co., Ltd. All Rights Reserved. 建物の生成
 var config

    = new CreateConfig(); BuildingCreator .Builder(model.BuildingDataModels) .SetConfig(config) .SetOnMeshCreatedCallBack( /* mesh to GameObject callback */ ) .Build(); • config: 描画形式などの設定クラス • creator: 生成処理の実行クラス
  21. Copyright Drecom Co., Ltd. All Rights Reserved. POI by prefab


    • ScriptableObject で設定 • POI の種類ごとに設定可能
  22. Copyright Drecom Co., Ltd. All Rights Reserved. POI を用いたゲーム性の実現
 •

    登録した特定 POI への接近を検知 • 活用例 ◦ コンビニに近づいたら買い物 ◦ 病院近くにいる間は回復 ◦ 学校から離れたら敵が出現 • 3種類のコールバック ◦ 範囲内に入る時: OnAreaEnter() ◦ 範囲内にいる時: OnAreaIn() ◦ 範囲内から出る時: OnAreaExit()
  23. Copyright Drecom Co., Ltd. All Rights Reserved. IArowPoiVisitor
 // ユニティちゃんオブジェクト

    var unitychan = GameObject.Find("..."); // IArowPoiVisitor の実装 var visitor = unitychan.AddComponent<PoiVisitorSample>(); • 例:ユーザが操作するユニティちゃんが監視対象 • IArowPoiVisitor の実装クラスをアタッチ このクラスで各種メソッドをオーバーライド
  24. Copyright Drecom Co., Ltd. All Rights Reserved. ArowPoiObserver
 // visitor

    をマップを紐付け var observer = AddComponent<ArowPoiObserver>(); observer.RegisterTarget(unitychan, visitor); observer.RegisterObservePoi( arowMapObjectModel, AROW_FILE_NAME); // PoiObserver に「商業施設」「距離50m」を設定 observer.RegisterNoticeDistance(CATEGORY_NAME, 50); • 監視対象を登録 • マップと検知したい POI を登録 • 接近の閾値となる距離を登録
  25. Copyright Drecom Co., Ltd. All Rights Reserved. まとめ
 開発者サイト •

    Same Site 属性によるセキュリティ向上 • lambda + SQS でサーバレス構成 Unity SDK • 建物、道、地形の 3D 表現 • prefab による置換も可能 • POI の表現やゲーム的利用も容易
  26. Copyright Drecom Co., Ltd. All Rights Reserved. AROW の情報
 Unity

    Learning Materials • https://learning.unity3d.jp/2196/ 登壇資料 • https://speakerdeck.com/ryuj/how-to-arow-practice-at-gotanda-dot- unity-number-11 ドキュメント • https://arow.zendesk.com/hc/ja/categories/360001495392-AROWス ターティングガイド • http://reference.arow.world/current/ SNS • https://twitter.com/arow3dmap • https://www.facebook.com/AROW-266389430650623/
  27. Copyright Drecom Co., Ltd. All Rights Reserved. Map Tools
 •

    SDK に同梱されているスクリプト • arowmap(マップデータ)の編集用 • 必要な POI をマップに付与 ドキュメント https://arow.zendesk.com/hc/ja/sections/360004937132-POI