Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

現実環境の認識 現実環境の認識

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

だけど だけど

Slide 11

Slide 11 text

いつか、MR が いつか、MR が 当たり前になった世界 当たり前になった世界

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

作ってみた 作ってみた

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

デモ デモ

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

ScriptableObject 生成 ScriptableObject 生成 スプレッドシートのスクリプトでhttp アクセスでJson を 返すようにする Unity エディタからJson データ取得してScriptableObject 生成・更新

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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