今度は対戦だ!ということでUnityのネットワークを調べてみたら、とりあえず自前の「NetworkView」があるらしい。基本的にオブジェクトそのものをネットワーク間で共有するもので、オブジェクト表示以外のアレコレもRPCを介することで可能になる模様。ネット上にサーバを用意する必要もなく端末間のみで構築可能で複数端末も可、なのもいいけど、それだけにというか端末の1つがサーバとして構えて他がクライアントとなる形。なので屋内で全端末が同じLANにぶら下がっている形ならまだしも、グローバルなネットプレイとなると厳しそう。特に3G回線のモバイル端末がサーバになった日にはいろいろ大変なことになりそう。あと接続時にサーバのIPが必要ってのも何気に(利用者の)ハードルを上げてる気がする。
そんなわけで代替策としてよく使われているのがPhotonらしい。外部の業者が用意しているもので、無料から有料までいろんなプランがあります。無料だと同時接続20ユーザーまでとか制限があるけど、テストするには十分ですよね。そこから100ユーザーとかそれ以上のスケールアップにともなって料金いろいろ。スマホの商用ネットゲームにもいろいろ採用実績があるらしい。そして外部サーバが用意されるので、接続端末は全部クライアントとなってサーバ端末が落ちたら終わりってことにはならないのが最大のメリットっぽい。とりあえずこのサイトなど参考にサンプルを組んでみましたが、さくっと動いてくれました。そしてAssetStoreからPhotonプラグイン?を落とすのだけど、無料版だとモバイルに出力できないけど、$95の有料版を使えばiOS/Androidにも出せるようになるとのこと。コレ買うとついでに100ユーザー同時接続権も付いてくるそうな。
とりあえず手軽に試すなら純正のNetworkView、しっかり作り込むならPhotonといったところなんでしょうかね。両者とも、サンプル動かすぶんにはさくっと繋がりました。NetworkViewに関してはandroidも普通にいけた。
画像無しも寂しいので貼ってみますが、すげえゴチャゴチャしてわかりにくいですね。内容も地味で殺伐としてるし。
NetworkViewのサンプルなんだけど、デスクトップの画面の手前にMacbook、さらにその前にNexus7を置いてサーバ+2クライアントの形で動かしています。それぞれを動かして弾を吐くところまでは動きました。
同一PC内で複数起動も可能なのだけど、どうもNetworkViewでは描画が上手くいかないようで最前面画面以外がおかしな感じになってました。別端末からだと普通に動かせましたが。この点、Photonだと同一端末内でもちゃんと描画が追随してました。