Unity

Photonで何ができるのかざっくりまとめてみた

どうも、コニーです

 

突然ですが『Photon』って知ってますか?

 

ゲーム制作についての話でよく出てくる単語なのですが

 

「サーバーサイドっぽくてよくわからん」

ってなった方も多いのではないでしょうか?

 

でも「なんとなくでいいからPhotonについて知りたい!!」

 

そんなあなたのために

この記事では『Photonは何者で何ができるのか』について解説します

Photonって何者なの?

まず『Photonって何者なの?』についてです

 

一言でいうと

オンラインゲームを簡単に創ることができるサービス

です

 

オンラインゲームはオフラインゲームと違い、ネット通信が必要です

マリオカートとかイメージしたらわかりやすいですね!

 

でもそんな通信のシステムを作るのは結構手間がかかります

それを代わりにやってくれるサービスがPhotonなんです!

PUN(Photon Unity Networking)

そんなPhotonはたくさんのゲームに対応しています

そのなかでもUnityに特化したサービスがPUN(Photon Unity Networking)です

PUNはアセットとして導入するだけでオンラインゲームが実装できる超優秀なサービスなんです!

小規模なら無料で使えるのも魅力的ですね

今は最新版のPUN2がリリースされています

PUNがやってくれること

『PUNがやってくれること』

=『オンラインゲームに必要なこと』です

 

オンラインゲームには『接続』と『同期』という2つの工程が必要です

 

最初に『接続』で他のプレイヤーと通信できるようにします

そして『同期』で他のプレイヤーとゲーム状態を同じにします

 

この2つを行うことでオンラインゲームができるんですね!

PUN2による接続について

先ほども述べましたが接続とは

他のプレイヤーと通信できるようにすること

です

主にサーバーなどを扱う工程となります

 

…待って!!

サーバーって聞いても逃げないでください!!!

 

PUNがサーバー処理をやってくれますから、あなたはコードで呼び出すだけで使えるんです

今回はとりあえず概要しか説明しません

だから逃げないでください!!!

接続によってできること

この接続によってマッチング機能ができるようになります

 

友達と対戦部屋をつくる

一定のランクだけの人で対戦する

 

などはこの接続によって実現しています

サーバーの種類

「サーバーとか聞きたくねぇ!!」というあなた

気持ちわかります

 

そこで

これだけ覚えれば大丈夫だよというのを今回3つ持ってきました!!

 

それが

サーバーの種類

①ネームサーバー

②マスターサーバー

③ゲームサーバー

 

です

この3つだけです!!

 

1つ目のネームサーバーは全体を管理しています

 

2つ目のマスターサーバーは地域(国)ごとに管理しています

ここにロビーという『ゲームサーバーへの入り口』があります

 

そして3つ目がゲームサーバーです

ここが実際にプレイするときに使う場所となります

プレイするときに何人かで分かれますがその1つ1つを『ルーム』といいます

 

会社でいうと

会社:ネームサーバー
部署:マスターサーバー
班:ゲームサーバー

っていうイメージです

 

PUN2による同期について

続いて『同期』について説明していきます

同期とは

アイテムや得点状況などをほかのプレイヤーと同じにすることです

同期によってできること

同期によってレースやFPSができるようになります

 

マリオカートだと自分がアイテムを使用したら、ほかのプレイヤーの画面にも映りますよね?

 

それを可能にしているのが同期なんです

3つの基本テクニック

『同期』を実装するためにはいろんな知識が必要です

が!!

それを最初から全部知ることはしんどいです!!

 

なのでここでは『同期』をするときに使う3つの基本テクニックを紹介します

オブジェクト同期

1つ目は『オブジェクト同期』です

一番わかりやすいテクニックで、オブジェクトの位置情報などを同期できます

 

マリオカートだと先ほど言ったアイテム使用などに使われていますね

 

ちなみに位置情報を共有しているオブジェクトを『ネットワークオブジェクト』といいます

要はネットで共有しているオブジェクトってことです

RPC

2つ目は『RPC(Remote Produce Call)』です

RPCはネットワークオブジェクトに追加したスクリプトを実行し、その結果を同期させます

 

例えばアイテムとして赤甲羅(ネットワークオブジェクト)を使用したとします

『その甲羅が当たったらスリップする』というプログラムを作動させることがRPCに当たります

カスタムプロパティ

3つ目は『カスタムプロパティ』です

これはプレイヤーやルームごとに通信できるようにすることです

 

ちょっとイメージしにくいものですが、

例えばゲーム内チャットなどに使われています

 

そのルームだけに反映されるシステムってことですね!

Photon(PUN2)で制作の幅が広がる!!

というわけで今回のまとめです

Photonまとめ

・オンラインゲーム制作を簡単にするサービス

・接続
→ネームサーバー・マスターサーバー・ゲームサーバー

・同期
→オブジェクト同期・RPC・カスタムプロパティ

この記事でざっくりとイメージがつかめたのではないでしょうか?

 

新しい知識が増えると作れるものが一気に増えますよね~

 

私もこの知識を使って

・マルチ対戦のシューティングゲーム

・複数人で鑑賞するバーチャルライブ

とか創れそうだなと思いました

 

ちなみに実際に接続や同期を実装するときはプログラムで操作します

その方法は以下の記事や公式チュートリアルに書いてあるので読んでみてくださいね!

>>>PUN2で始めるUnityオンラインゲーム開発入門

>>>Photonチュートリアル

 

ではまた!