21
1 1 株式会社モノビット UnityによるVR&ゲーム通信実装実例実例 安田 京人(ミドルウェア事業部部長

GTMF2017 ゲーム&VR向けリアルタイム通信エンジンの新しい選択肢!2 株式会社モノビット

Embed Size (px)

Citation preview

1 1

株式会社モノビット

UnityによるVR&ゲーム通信実装実例実例

安田 京人(ミドルウェア事業部部長)

2 2

1,Monobit Unity Networking(MUN)+MRS編

3 3

MUNを使えば簡単にマルチプレーヤーゲームの実装が可能になりますが、 ゲームのロジックを全てクライアントアプリ側に実装するので、 チート対策という観点では大事な判定はサーバ側で行うのが望ましいです。 今回は、MUNを用いて簡易的な点取りゲームを作成し、クライアントアプリ側にあるゲームロジックを、 サーバ側に移植したデモを解説したいと思います。 ※本サンプルは最新のMUNに同梱されています。

■ はじめに

4 4

作成したゲームの仕様 ・フィールド上にランダムに発生するオブジェクト(アイテム)を収集するゲーム。 ・同一ルームに集まったユーザー同士でアイテムを奪い合い、奪ったアイテム数=スコア管理し、競う。 ・最終的にスコアで判定し勝敗を決する。

■ ゲーム仕様について

5 5

■ ゲーム画面動画

6 6

■ 実装コードを簡単にご紹介

7 7

■ 問題点

クライアントサイドプログラムの問題点 → 率直に言えばチートの問題! ルームホストがゲームルールを管理するので、 ホストが不正(チート)をするとゲームが崩壊する

8 8

■ 問題点

<考えられるチート内容> ・ホストと同じ場所にのみアイテムを出現させる ・ホスト以外のプレイヤーとはアイテムとの当たり判定を 無効にする ・制限時間を超過してもホストのみアイテムの取得を 可能にする

9 9

■ 問題点

そこで、サーバサイドプログラミング

10 10

■ サーバサイドプログラミング

・ゲームルールはサーバで管理し、 クライアントはルールによって為された 「結果」のみを受け取る ・受け取ったデータをクライアントで改ざんしても、 サーバや他クライアントに送信できない仕組みを 作る ・ホストの回線速度やマシン性能に依存しない ゲーム運用を可能にする

11 11

■ 具体的なサーバサイドの実装

12 12

■ 具体的なサーバサイドの実装

・アイテム取得処理をルームサーバに移行

13 13

■ 具体的なサーバサイドの実装

・アイテム出現処理をルームサーバに移行

14 14

■ 具体的なサーバサイドの実装

・制限時間経過処理をルームサーバに移行

15 15

■ クライアントプログラム側の変更点

16 16

■ 具体的なサーバサイドの実装

・クライアント側の変更

17 17

■ 完成したプログラムの動作確認

18 18

■ まとめ

今回、 MUN クライアントの MonobitNetwork の一部機能について、サーバ用に移植してみました。 実際、ほぼ Unity クライアントと同じようなコーディングで実装が可能です。 ※但し、当たり前ですがUnity独自のAPIは当然の事ながら書けない。 勿論自分でC#やC++でゲームロジックを書いてもOKです!

19 19

2,VR VoiceChat 2.0編

20 20

アプリケーション実装者が数クリックでボイスチャットが実装可能に MUNの使用が前提条件なので、 プレイヤーキャラクターなどにコンポーネントの追加のみで ボイスチャットを実現できること 実際にボイスチャットをアプリケーションに組み込むために、 プレイヤーキャラクター (MonobitViewコンポーネントが追加されている)に対し、 [Add Component]で[Monobit Voice]を追加するだけで ボイスチャットの実装を完了する事が確認できます。

■ 『VR Voice Chat 』とは

21 21

■ VoiceChatとオブジェクト同期の組み込み