Unityでネットワークゲームを創りたい(UNET)7

はじめに

前回で少し中断すると宣言したのですが、今朝早く、日本代表対ベルギー戦の試合開始を待つ間にぼーっと何となく考えていたら、「ネットワーク対戦モードのシーンがシングルモードのシーンから創っているよな」というお告げが降りてきました。

そしてベルギー戦での敗戦の後でちょっといじってみたらネット対戦モードが動きました。まあワールドカップの邪魔も減る方向なので今少しネットワークゲームを頑張ってみようと考えなおした次第です。なんかええ加減やなぁ..すんません..

ネットワーク対戦モードへの挑戦

ネットワーク対戦シーンの作成

前回はこの作業が間違っていたのです。シングル対戦モードとネットワーク対戦モードでは対戦シーンの意味合いが全く異なります。前回はその点に気が付いていなかったのですね。

シングルモードでの海戦シーンはシングルモードでのデフォルトシーンをコピーして目に見える部分のみ編集してセーブして創っていました。前回はネットワーク対戦モードでこのシーンを読み込んでいましたので、ネットワーク対戦モードで必要な機能(例えば対戦相手のspawn設定等)が全く抜けていたのです。そして発生したエラーのコードがあまりに多くのエラーが多発しているがためになんやら抽象的で意味不明なエラーメッセージになっていてもう止めようかと考えたのでした。

ですが、本来やるべきことは、ネットワーク対戦ゲームで使う対戦シーンは、ネットワーク対戦用のシーンをベースに創りかえるべきなのです。

そして同じように岩だとか基地だとか遺跡だとか壁だとかを隠して海を導入することで自分専用のネットワーク対戦ゲーム用のシーンを創りました。

これをMapListに登録してネットワーク対戦モードを試してみます。

いやあ、動きました。手前のビスマルクがUnity-editorで操作するビスマルク。向こう側がmac-appで動かしている戦艦大和です。

二つのアプリ間はたぶんmac内でネットワーク接続されているので遅延時間はほとんどありません。なので、二つの戦艦はどう動かしてもかくかくした動作は見られません。

まあ何はとまれ、ネットワーク対戦モードで動かすことができたのでそれはすばらしいです。

カメラ制御のスタディ

最低限の動作が始まったので、ちょっとほってあったカメラ制御の機能を創りこみます。まずはmacのキーボードの矢印キーでカメラ位置を自在に動かせるようにしました。

この処理はシングルでもネットワーク対戦でも同じ処理なので助かります。戦闘シーンの中のカメラ制御用のcamera_rigというオブジェクトにアタッチされているCameraFollow.csというスクリプトでいろいろな処理を追加できます。

カメラ位置を制御して戦艦の前からも後ろからも高い場所からも自在に視点を変えることが可能になりました。

現在できていることの整理

ちょっとここで全体俯瞰しておきます。少なくともこれまでの検討では実現できていなかった下記の機能が既に達成できたというところは非常に大きいと感じています。

1.3種類までの軍艦を選択して登場できる仕組み

2.シングルモードで戦艦を自在に操艦操作する

3.ネットワーク対戦モードで戦艦を自在に操作する

現在できていないことの整理

細かな創りこみは当然後で実施するとして、ネットワーク対戦アプリのコア要素を実現していくために必要な技術は下記の3つでしょう。

1.主砲射撃制御

2.スマホ上でのタッチ処理による操作

3.インターネット接続を想定した遅延時間増の場合の動作調整

次に実現を検討すべきことを考えてみる

上で示したように最終的にネットワーク対戦アプリをまとめ上げるために必要な機能はかなり獲得できてきたように思いますが、次に獲得すべきは主砲制御だと考えます。詳細の機能はともかく、ダミーでも良いので戦艦の主砲弾を自在に飛ばすための処理の創りこみを検討していくようにしたいと思います。

最後に

前回は完全にスタックしてしまってすみませんでしたが、日本代表の試合のおかげでお告げをもらって、ちょっと先へ進めることができました。また進展があればここで紹介させて頂きたいと思います。

以上