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

マルチプレイできるHoloLensゲーム作った話

 マルチプレイできるHoloLensゲーム作った話

「札幌HoloLens ミートアップ vol.2 ~夏編~」の発表資料です。
HoloLens向けに『Boxello』というゲームを作った話です。

ストア
https://www.microsoft.com/en-us/p/boxello/9n74ts7n0l2j

動画
https://www.youtube.com/watch?v=TWiBa2AjgDA

Keizo Nagamine

July 21, 2018
Tweet

More Decks by Keizo Nagamine

Other Decks in Programming

Transcript

  1. マルチプレイできる
    マルチプレイできる
    HoloLens
    HoloLens
    アプリ
    アプリ作った話
    作った話
    長峰慶三
    ゲーム
    ゲーム

    View Slide

  2. 自己紹介
    自己紹介
    長峰慶三( @KzoNag

    福岡から来ました!
    Jollystics
    という会社にいます
    おもにUnity
    、ときどきXamarin
    など
    スマホアプリ
    インタラクティブ(Kinect
    とか
    XR
    (やりたい
    FMCN
    福岡XR
    部→8
    月4
    ~5
    日にVTuber
    ハッカソン

    View Slide

  3. HoloLens
    でゲームといえば
    HoloLens
    でゲームといえば

    View Slide

  4. https://www.microsoft.com/en-us/p/roboraid/9nblggh5fv3j
    RoboRaid
    RoboRaid

    View Slide

  5. https://www.microsoft.com/ja-jp/p/young-conker/9nblggh5ggk1#
    Young Conker
    Young Conker

    View Slide

  6. https://www.microsoft.com/en-us/p/fragments/9nblggh5ggm8#
    Fragments
    Fragments

    View Slide

  7. 特徴的な仕様
    特徴的な仕様
    RoboRaid
    壁に穴を空けて出てくる
    Young Conker
    床からテーブルに飛び移る
    Fragments
    ソファに座る

    View Slide

  8. 現実環境の認識
    現実環境の認識

    View Slide

  9. HoloLens
    の持つ能力を魅せる素晴らしいゲーム
    HoloLens
    の持つ能力を魅せる素晴らしいゲーム

    View Slide

  10. だけど
    だけど

    View Slide

  11. いつか、MR

    いつか、MR

    当たり前になった世界
    当たり前になった世界

    View Slide

  12. 現実に紐づくゲームばかり?
    現実に紐づくゲームばかり?

    View Slide

  13. もっとカジュアルに遊べる
    もっとカジュアルに遊べる

    View Slide

  14. 今のボードゲームのような立ち位置
    今のボードゲームのような立ち位置

    View Slide

  15. 作ってみた
    作ってみた

    View Slide

  16. 立体デジタルオセロ
    立体デジタルオセロ

    View Slide

  17. ポイント
    ポイント
    シンプル な遊び
    自分の色で相手をはさむ
    デジタルならでは
    立体化
    ルールの拡張
    マルチプレイ
    最大4
    人プレイ

    View Slide

  18. デモ
    デモ

    View Slide

  19. 作るときに意識したこと
    作るときに意識したこと
    シンプル
    凝りすぎない
    素早く
    整えて作る
    Done is better than perfect.

    View Slide

  20. 開発環境
    開発環境
    Unity 2017.4.1f1
    MRTK 2017.2.1.2

    View Slide

  21. 使用したアセット
    使用したアセット
    TextMeshPro
    リッチなテキスト表現
    UI
    のテキストに使ってる
    (特殊な表現してないから無くても大丈夫だった気がする)
    LeanTween
    iTween
    とかDOTween
    とかと同じ類
    軽量らしい
    スクリプトが含まれる

    View Slide

  22. ボックスの配置
    ボックスの配置
    プレイする場所を決める
    マルチプレイの場合は特に重要
    位置・向きを合わせる必要がある
    2
    通りの配置方法
    マーカー
    ジェスチャー

    View Slide

  23. マーカーでの配置
    マーカーでの配置
    Vuforia
    検出したマーカーの位置と角度に合わせて配置
    水平になるように補正
    Vuforia
    は配置フェーズのみON
    に(終わったら切る)
    軽くするため必要なときだけ使う
    Vuforia
    を動かしてるとMRC
    で出力できない

    View Slide

  24. ジェスチャーでの配置
    ジェスチャーでの配置
    タップ操作で位置を指定
    SpatialMapping
    でできたメッシュ上のポイント
    ナビゲーション操作でY
    軸回転
    マルチプレイでは各自で同じ位置・向きにする必要あり

    View Slide

  25. 通信
    通信
    UNET
    の高レベルAPI
    SyncVar
    でゲーム設定を同期
    Command
    、ClientRPC
    でゲームスタートやセル選択
    一部、低レベルAPI
    系?
    NetworkConnection
    で直接メッセージ送信

    View Slide

  26. 通信関連クラス
    通信関連クラス
    BoxelloNetworkManager
    全体管理
    メッセージ送信
    ルーム接続時のパスワードチェック
    BoxelloNetworkDiscovery
    ルームの作成・検出
    BoxelloNetworkDevice
    Player
    に相当
    Command
    、ClientRPC
    でデバイス間で処理を実行
    BoxelloNetworkGameSetting
    SyncVar
    でゲーム設定を同期

    View Slide

  27. UI
    UI
    uGUI
    HoloLens
    っぽい見た目・挙動
    グラデーションがかかった背景テクスチャ
    In/Out
    のアニメーション
    WorldLock/BodyLock/DisplayLock

    View Slide

  28. DialogWindow
    DialogWindow
    汎用のダイアログウィンドウ
    内容を指定して開く
    タイトル
    メッセージ
    ボタン
    コールバック
    DialogUtility.Open(title, message, button1, button2, c

    View Slide

  29. ExclusiveCanvasGroupManager
    ExclusiveCanvasGroupManager
    ウィンドウの排他制御(一番上だけ操作可能にしたい)
    各Window
    のルートにCanvasGroup
    リストで管理してinteractable
    を切り替える

    View Slide

  30. 多言語テキストはスプレッドシート管理
    多言語テキストはスプレッドシート管理

    View Slide

  31. ScriptableObject
    生成
    ScriptableObject
    生成
    スプレッドシートのスクリプトでhttp
    アクセスでJson

    返すようにする
    Unity
    エディタからJson
    データ取得してScriptableObject
    生成・更新

    View Slide

  32. TextID
    を指定するインスペクター拡張
    TextID
    を指定するインスペクター拡張
    PropertyDrawer
    でSCriptableObject
    からID
    リスト生成

    View Slide

  33. メインのゲーム部分
    メインのゲーム部分
    基本的にはオセロの次元が増えたかんじ
    AI
    は今のところ1種類
    (取れるところランダムに選ぶだけ・・・!)
    マルチプレイ時に通信が切れたらAI
    に切り替わる

    View Slide

  34. ストアリリース済ですが...
    ストアリリース済ですが...

    View Slide

  35. ストアのアプリ一覧に出ない
    ストアのアプリ一覧に出ない
    アプリ名で検索したら出る
    サポート問い合わせ中
    何か知ってる人いたら教えてください!

    View Slide

  36. ありがとうございました!
    ありがとうございました!

    View Slide