私はゲーム開発の中でも、
オンライン対応にこだわってゲームを開発してきました。
また、本サイトでは、
オンライン対戦できるFPS(一人称シューティング)ゲームの作り方を公開していて、
結構需要がある気がしてます!
FPSのようなアクションゲームのオンライン実装は、
送受信する情報量が多かったりしますが、
ボードゲームのような、
ターンが回って進行するゲーム(以降、ターン性ゲーム)は、
比較的情報の通信量は少ないです。
オンライン対応させる場合、
Photonというツール(同時接続20名プランは無料)を私は使いますが、
Photonには、ターン性ゲーム向けに"Pun Turn Manager"という機能(クラス)が用意されています。
これによって、よりシンプルにオンライン実装できるようになっています。
(アクションゲームのように常に相手の動きを同期せずに、オンライン対戦できる仕組み)
そこで、本記事では、このPunTurnManagerを使った
オンライン対戦可能なターン性ゲームの作り方を解説していきます!
さらに、
サーバーログイン・ルームリストを一望できるロビー画面・ルーム作成
といった他のゲームのマッチングシステム構築に使えるノウハウも含みます!
1. 開発の準備
今回はシンプルな2Dボードゲームを例に開発していくので、
Unityのプロジェクトは、「2D」を選択して、立ち上げます。
(筆者は、Unity 2021.3.8f1で進めます)
開発に必要なアセットは、無料の「PUN 2 FREE」*のみ!
Asset Storeからダウンロードしましょう。
*同時接続人数を20以上にしたい場合、有料プランを選ぶ
また、Photonアカウントを持ってない人は作成、ログインして、
これから開発するゲーム専用に、AppIDを取得しましょう。
アカウントにログインしたら、
ダッシュボードから「新しくアプリを作成する」をクリック。
↓
<必須項目>
種別をPUN
アプリケーション名を自由に入力して
「作成する」をクリック。
↓
作成されたアプリのところの「アプリケーションID」から、AppIDをコピーしとく。
AppIDは生成できたので、
Unity Editorでの作業に移りましょう。
WindowタブからPackage Managerをクリック
↓
Asset Storeで入手したので、
Registry: My Assetの中に「PUN 2 - FREE」があります(なければ検索)。
↓
「PUN 2 - FREE」をインポート。
↓
AppIDの入力を求められるので、取得したAppIDを張り付けて
「Setup Project」および「Close」で閉じます。
インポートするとAssetsフォルダ内にPhotonフォルダが追加されます。
AppIDを再設定する場合は、
Photon_PhotonUnityNetworking_Resources_PhotonServerSettingsにて、
AppIDPunで、入力し直します。
2. マッチングシステム(ログイン・ロビー)の作成
それでは、シーンを作っていきます。
デフォルトのシーンは、"SampleScene"という名前なので、
右クリックして「Save As ...」から"TitleScene"に変更しましょう。
このTitleSceneでは、
サーバーにログイン、ロビーからルーム入室するための
オブジェクトを作成していきます。
小難しいコードやオブジェクトの作り方も、一目でわかる図を多数用いて解説しているので、せひご購読ください^^