Edited at

Unityでオンラインマルチプレイなゲームを作りたい その1 ネットワークエンジンの選択


経緯

最近購入したゲームのマルチプレイがローカルのみだったのがかなり勿体ないと感じショックを受けたのが始まりです。

無いなら作ってしまおうということで、ついでに今後マルチプレイ有りのゲームを作る方に、オンラインでの実装の検討や開発の参考になるようなものを残せたらいいなと思い、記事を書くことにしました。

ということで、これからゲーム作っていこうと思います。


オンラインゲーム開発を楽にしてくれるもの

オンラインゲームのネットワークを1から作成するのはかなり敷居が高いです。

調べたところ、ありがたいことにオンラインゲームの開発を簡単にしてくれるエンジンが複数ありました。

開発はやっぱり楽したいのでこれを使わない手はないです。

自分の環境ではUnityを使用しているので、Unityで使用できるものを利用したいと思います。


Unityで使用できるもの

前述で調べたものを簡単に紹介します。


UNet

Unityに元々あるネットワークAPIです。Unity2019で廃止されました。

デフォルトの機能だけでは実装が難しく、機能を継承してカスタマイズしたりするのがオーソドックスなようです。


Connected games

GoogleがUnityと提携して開発しているUNetに代わるものです。

まだ開発中っぽいです。


Photon Unity Networking(PUN)

多機能で実装幅が広めです。使用している人が多く、調べれば実装例が結構出ます。


Monobit Unity Networking(MUN)

PUNに使用感が近く機能も同じく充実しています。アセット内に含まれているサンプル + 公式のドキュメントを見ながらの開発が進めやすいです。


GameLift

Unityでも利用はできますが、Amazon Lumberyard(アマゾン製のゲームエンジン)向けです。

Unityで使う場合SDKを自身でビルドし、アップロードするといった一手間があるようです。


Strix Unity SDK

機能がシンプルに纏まっていて扱いやすそうです。付属のサンプルが流用しやすくカジュアルなゲームや単純なFPSならサクッとオンライン化できます。


どれを使おう?

結構数がありました...。使用するのは一つだけでいいので、選んでいきます。

Unity2019を使いたいのでUNetは使えないですね。

Connected gamesも開発中なので使用は見送りです。(そもそもDLするところが見当たらない...まだ出てないんですかね)

GameLift...サンプルや実装例を調べたんですが、それよりもチュートリアルで料金が発生したって記事が...ちょっと怖いので利用は控えます。

残りのPUN/MUN/Strix Unity SDKは普通によさそうです。この3つから使用するものを選びたいと思います。

サンプルとドキュメントを見て比べてみました。

PUN
MUN
Strix Unity SDK

機能


導入のしやすさ


実装の手軽さ


ドキュメント


サンプル


Strix Unity SDKは前述通りで簡単なゲームならすごく楽で扱いやすそうなんですが、スクリプト面での実装の情報が少ないのと、ルーム関連(主にパラメータと検索)がちょっと使いづらく感じました。

PUNとMUNは機能に関しては申し分なさそうですが、PUNのドキュメントが個人的には足りない感じがします。

その分MUNは公式のドキュメントと同梱されているサンプルが充実していて、開発が進めやすそうです。

ちょっと凝ったものを作ろうと思っている + 実装法の模索や検索の手間を考えるとMUNがよさそうなので、MUNを使用しようと思います。




使うネットワークエンジンが決まったので、次回はオンラインゲームを開発する準備を書いていきます。