代官山らへんで働くengineerのUnityブログ

サーバサイドやってきたエンジニアがUnityとか触って遊ぶだけのブログ

【Unity】UNETについてわかったことメモ【P2P】

今年の夏くらいにUnity5.1から実装されたマルチプレイ用のネットワークシステムUNETですが
思ったよりネットの文献も少ないし本も出てないし公式マニュアル読んでもよくわからんしで
色々自分なりに調査してみた結果をまとめてみます

そもそもUNETとは?

マルチプレイ用ゲームのネットワーク関連の機能を実装できるクラス
マルチプレイとは言うのもの、基本的にはプレイヤーのうち誰かがホストとなり、ゲストプレイヤーがそれにぶら下がるP2P通信タイプのゲームのこと
ホストの接続が落ちたらそれにぶら下がったゲストプレイヤーも接続が切れるやつである

サーバ→クライアントのような方式には出来ないのか?

出来るには出来る
しかしnode.jsやサーバサイド開発言語などを使った一般的なリアルタイムゲーム(白猫みたいな)とは大きな違いがある
まずサーバ用の言語を必要とせず、サーバで動くのはクライアント用にビルドしたものと同じUnityのプロジェクトだ
イメージ的にはP2Pのホストプレイヤーの役割をサーバが行っている感じだ
Minecraftやterrariaのようなプレイヤーが一時的にサーバとなり、そこに他のプレイヤーが接続するゲームの開発を想定しているのだろう
確かにそういったゲームを作るならお手軽感がある
サーバを経由せず通信を行うため、ハッキングに弱いのではないかと思われる。自分がホストになってしまえばある意味やりたい放題出来る可能性がある。

便利機能がいっぱい

ゲーム内のオブジェクトの距離に寄って、離れていたらそもそも生成しなかったりデストロイしたり
通信する情報ごとに通信のクオリティを決められたり(早くてテキトーとか遅くて正確とか)
ネットワークのパケットの動きを可視化できたり
P2P通信でのユーザ同士のマッチングサーバをUnityが用意してくたり(100人までは無料!)
サーバ側で動くメソッドとクライアント側で動くメソッドをそれぞれ準備出来たり
P2P通信ゲームを作るなら使わない手はないだろう

まとめ

まだまだ機能不足ではあると思うし、バグも多いようなので今後に期待というところだろうか。
個人でちょっとした通信機能がついたゲームを作るならばPhotonよりもお手軽感があるかもしれない。
P2P通信でなおかつマッチングサーバをUnityが用意してくれるならサーバまわりの運用は必要なくなる
つくづく個人デベロッパーに優しい機能をつけてくれたわけである サンキューUnity!

※記事を書いている現在Unity Multiplayerはまだプレビュー版のみの公開なのでマッチングサーバーは100人までしか使えないし有料版みたいなものもないです