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

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

Jan 21, 2018

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: GTMF2017 ゲーム&VR向けリアルタイム通信エンジンの新しい選択肢!2 株式会社モノビット

1 1

株式会社モノビット

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

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

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

2 2

1,Monobit Unity Networking(MUN)+MRS編

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

3 3

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

■ はじめに

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

4 4

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

■ ゲーム仕様について

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

5 5

■ ゲーム画面動画

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

6 6

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

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

7 7

■ 問題点

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

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

8 8

■ 問題点

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

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

9 9

■ 問題点

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

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

10 10

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

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

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

11 11

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

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

12 12

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

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

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

13 13

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

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

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

14 14

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

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

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

15 15

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

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

16 16

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

・クライアント側の変更

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

17 17

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

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

18 18

■ まとめ

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

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

19 19

2,VR VoiceChat 2.0編

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

20 20

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

■ 『VR Voice Chat 』とは

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

21 21

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