はじめに
P2Pとは「Peer to Peer」の略です。
P2Pを使用すると複数人同時のマルチプレイが可能になります。
P2Pはサーバを介した通信ではなく、クライアント同士で直接データのやり取りを行います。
そのために、実行中のゲーム(クライアント)からブローカーサーバに接続します。
一度ブローカーサーバに接続したクライアントは固有のIDを取得できます。
ブローカーサーバに接続したほかのクライアントのIDへ接続することで、イベントを送受信できるようになります。
1.オブジェクトを用意する
ほかのクライアントに接続するためのシーンで使うオブジェクトを用意します。
必要なオブジェクトはテキストオブジェクトとテキスト入力(テキストフィールド)です。
今回は必要最低限のものだけを用意します。
まずはテキストフィールドです。
- 自身のクライアントIDを表示するテキストフィールド
- 接続先のクライアントIDを入力するテキストフィールド
- 接続試行をするためのボタンとなるオブジェクト
これらを用意したらシーンに配置します。
2.ブローカーサーバへの接続
オブジェクトを作成して配置したらイベントエディタに移ります。
ほかのクライアントに接続するためのシーンでイベントを作成します。
条件:
シーンが始まった
アクション:
デフォルトブローカーサーバーと接続する
このイベントにより、ブローカーサーバへ接続します。
サーバに接続したら自身のクライアントIDを取得できるようになりますので表示します。
条件:
P2Pは準備はできた?
アクション:
MyID のテキストを変更する:P2P::GetID()
を代入
P2P::GetID() は接続済みの自身クライアントIDを取得するための式です。
相手のクライアントIDを入力するためのテキストフィールドに、接続先IDを入力したら、そちらへ接続を試みます。
次はそのイベントを作成します。
IDを入力するテキストフィールドオブジェクト名は「ConnectID」だとします。
そして、接続試行開始するためのボタンのオブジェクト名は「Join」だとします。
条件: Button Join is released
アクション: P2Pクライアント ConnectID.Text() と接続する
ConnectID.Text() はConnectIDという名前のテキストフィールドに入力された接続先IDとなります
次に相手のピアと接続開始したあとにシーンを変更するイベントを作成します。
相手のクライアントと接続が開始したらシーンを移るんですが、イベントをトリガーしないと自身のクライアントだけシーンを移り、相手のクライアントはそのままの状態になります。
ですので、接続が開始したタイミングでトリガーを送ります。
条件:
P2P ピアとの接続を開始した
アクション:
すべての接続先クライアントに
"Join"
をトリガーする(追加データ:"")
アクション: シーン "PlayScene" に変更する
相手のクライアントがトリガーを受け取ったら、シーンを変更します。
条件:
他のクライアントからイベント
"join"
を受信した(データロス:いいえ)
アクション: シーン
"PlayScene"
に変更する
これで準備が整いました。
3.ほかのクライアントと接続する
プレビューウィンドウをふたつ開いて、ふたつのクライアントを接続してみましょう。
ウィンドウを開いたら一方のIDをコピーし、もう一方のクライアントの空欄になっているテキストフィールドにペーストします。
これで接続が完了したら、両方のクライアントは接続を維持しながらシーンを変更します。
次は、移動先のゲームシーンを作成していきます。
4.アクションをトリガーする
今回はプラットフォーマーアクションゲームでマルチプレイのテストをしてみましょう。
まず、通常のシングルプレイ用のプラットフォーマーゲームを作成してください。
その後に、自身のクライアントで起こった変更を相手のクライアントに反映するために、イベントをトリガーするだけです。
例えば、プレイヤーAが前進したとします。
その時アクションで"move on"というトリガーを送信します。
相手のクライアントは"move
on"を受信したら、自身のクライアントにいるプレイヤーAをアクションで前進させます。
双方のクライアントで反映させたいイベントはすべてトリガーで送信します。
逆に、自身のクライアントのみで反映させたいイベントはトリガーする必要はありません。
(相手に見えては不都合なものなどは自身のクライアントのみで表示させます。)
5.オンラインデモ
デモをプレイする場合は2台のスマホ、デスクトップの場合はふたつのブラウザ、あるいはブラウザのふたつのタブで、ゲームをふたつ開らかないと検証できません。
PCの場合はそのままクライアントIDをコピペで貼り付けます。
モバイルの場合は画面の左側に「シンプルQRコードメーカー」が表示されます。
生成したQRコードをもう一方の端末で読み込むことでクライアントIDを簡単に共有できます。
こちらのゲームは協力プレイが必要で、一人ではクリアできない設計となっています。
一人でプレイする場合は、両方のプレイヤーを交互に操作するなど工夫してみてください。
こちらのQRコードからでもプレイできます。
6.プロジェクトファイル
おわりに
P2Pは手軽で便利ですが、チート行為の検出が難しいなどいくつか難点がありますので、不特定多数との接続で使用するのではなく、友人同士などIDを共有できる間柄でのみ接続することを推奨します。
追記(2024年6月20日)
v5.4.203にてさらにマルチプレイ導入を簡単にする機能が実装されました。
Release 5.4.203 · 4ian/GDevelop
🎮 Introducing support for Multiplayer games ("GDevelop Multiplayer"
- experimental) ℹ️ This is an experimental feature, which is still
in a very early stage and will be improved fast in the short ...
オープンソースの2D/3Dゲームエンジン「GDevelop」がバージョン「5.4」にアップデート。オンラインマルチプレイゲームをノーコードで制作可能|ゲームメーカーズ
ゲームエンジン「GDevelop」がバージョン5.4をリリース
オープンソースの2D/3Dゲームエンジンで、ノーコードで制作できる
バージョン5.4では、オンラインマルチプレイへ実験的に対応
0 件のコメント:
コメントを投稿