前回に続いてBluetoothを使ってみる。
前回までの処理をどんどん改造してみます。
とりあえず今回までで終わりの予定。
前に BLE(Bluetooth Low Energy) ライブラリを使って実装してみようとしてました。
ライブラリはサンプルプロジェクトを見ながらだとわりと簡単に使えました。
動作確認しても特に支障なく使えたんですが、なにかアプリを作ってみようかと思った時に問題があって使えませんでした。
今度は色んな用途で使えるように基本的なAPIだけを使って実装してみます。
Gradleは使ったことはあっても弄ったことはなかった。
便利なんだろうけど利用範囲が大きすぎてとっつきにくい感じがする。
Unityで使う用ライブラリで外部ライブラリを含めたりする方法のメモ。
少し前までUnityでのネット対戦を実装しようとしていたけれど、維持費0での実現が難しそうなのでBluetoothでの接続を試してみることにした。
いつも通り知識0から始めてるけど今までで一番よくわからない。
とりあえずやったことのメモ(トライ&エラーなのでダラダラ長いです)。
順番が逆になったけど、通常のクライアントサーバーとして接続テストしてみた。
これまでのテストは機能が多すぎ(複雑すぎ)て原因がわかりにくい。
今回はドシンプルにサーバーを立ち上げて、接続するだけにする。
ついでにOnGUIの練習。
前回は Network Lobby アセットを利用してマニュアルの対戦機能を作ろうとしてつまったので、今回はUnityのMultiPlayerサービスを使ってみます。
いくつか準備がいるので順番にやっていきます。
まずサービスウィンドウを開きます(閉じていればWindowタブから開く)。
サービス一覧の一番下「Multiplayer」を選択。
「Go to EULA」をクリックするとブラウザが起動します。
ログインしたらまずはサービスの同意をします。
最後にマッチの最大人数を入力したら前準備は終了です。
準備したらテストしたいけど作ってすぐは使えなかったです。
しばらくログを見ながらデバッグしてたらいつの間にか使えるようになっていたのでラグがあるのかもしれません。
今回は「MATCHMAKER」のほうを使います。
最初の端末では、「CREATE A GAME」に部屋名を入力して「CREATE」します。
次からの端末は「LIST SERVERS」をから部屋名一覧を見て好きなものに入ります。
この方法では「部屋のWifi」「SIM1」「SIM2」で問題なくマッチできました。
ただ CCU Limit が20ということは同時プレイ20人まで※なのが悩みどころ。
※正確には「Max Players per room」× 部屋数が20以下
前回はUNET (Network Manager) を使って通信をしようと試みた。
この機能を使うと簡単に通信ができたがホストが通信を始めた瞬間にゲームスタートになり、クライアントが通信するとそこにスポーンする形になってしまう(MMOみたいな感じ)。
そこで一旦ロビーに集めて、人数がそろったら始める形式に変更する。
そのためのクラスが NetworkLobbyManagerとして用意されている。
UNETの使い方に苦戦中。
サーバー↔クライアントとホスト↔プレイヤーが同じスクリプトで動くというのがいまいち理解しづらい。
解説もいくらか見つけたけど、同じようなFPSの作り方ばかりだったので基本的に公式マニュアルを参考にした。
とりあえず分かったことのメモ。
難しそうなのでこれまで作る気がしなかった対戦ゲーム。
ちょっと挑戦してみたくなったので実装方法を探る。
調べてもPhotonとかUNETとかの用語で良くわからなくなったのでまとめて覚書。