ネットワークゲーム作りたいけど何使えばいいの?という話。
歴史と現状
古代:Legacy network system
中世:UNet
現代:暗黒期
未来:Connected games
つまり今は歴史の中間点であり、コレといったモノが存在しない。暗黒。
UNet
死亡確認!*1
Photon
現状選択一番手になるミドルウェア。Photon Cloud と呼ばれるクラウドにみんなで接続しにいく。幻走スカイドリフトでも採用。
メリット
- スクリプトの書き方が UNet と近く導入コストが安め。
- 基本的なマッチングのやり方など、サンプルが充実している。ドキュメントも日本語。
- まあまあ枯れてるしまあまあ安定している。
デメリット
- ちょっと高い。
- プラン次第で解消しない秒間通信量制限がある。対戦ゲームなら8人くらいが限界。
- 中国とサーバが分かれているし、中国サーバの値段が何故か日本の五倍する。
- 割と Photon サーバが死ぬことがある。
Photon bolt
- 似た名前が付いているがアーキテクチャが全く異なるサービス。
- P2Pやサーバasホストに対応しているので、多人数対戦も可能。
- 導入コストがめっちゃ高いし仕様がややこしいので正直オススメできない。普通の Photon で十分。あるいは Mirror を使う。
Mirror
比較的プリミティブなP2Pができる無料のフレームワーク。有料だが uMMORPG など完成プロジェクトのサンプルが存在する。
メリット
- 無料
- シンプルなネットワーク機能が実装できる。
- サンプルが結構充実している。無料のものでも Network Transform が付いてる。
- LiteNetLib4Mirror や NobleConnect のような拡張ライブラリで UDP や NAT 越えも取り扱える。
デメリット
- マッチングはついてないので自分で作るか NobleConnect の有料サービスを使う必要がある。(サーバリスト機能はあるっぽいが)
- Send / Recv に慣れてない人は勉強が必要。
Epic online service
UE4の Epic が公式で出している無料のネットワークミドルウェア+サービス。UE4でなくても使える。マッチングやランキング、アナリティクスなど。
メリット
- 無料
- Epic 製のゲームで実際に使われているフレームワークなので技術的に保証されている。多分。
デメリット
- 資料が少ない。.unitypackage のサンプルも今の所見当たらない。
- Dedicated server は含まれない。
Unity Connected Games
Unityの新しいネットワークフレームワーク。まだプレビュー版未満で、お問い合わせれば環境もらえるっぽい……?
その他
- MagicOnion:サーバサイドもC#で書けるOSSのフレームワーク。
- Monobit Unity Networking:モノビットのフレームワーク。サイトにめっちゃ高い保守料が書いてあるが、インディー版というリンクもあり、もっとお安いかも。使ってないので未知数。
- DOTS Netcode:Connected Games の一部が一応 preview で使えるらしい
まとめ
とりあえずネットワークやりたい、って人は Photon。
かっちり通信させたいのでフレームワーク欲しいって人は Mirror。
*1:厳密に言えばレガシーでまだ使えるのだが確定で死ぬので使ってはいけない。