【Unreal Engine】Listenサーバーで簡単マルチプレイ!2人で遊べるローカル通信の始め方

※本サイトはアフィリエイト広告を利用しています。

今回は、Listenサーバーを使った2人用マルチプレイのやり方を解説します!
デスクトップPCをホスト(サーバー)にして、ラップトップ(クライアント)と通信する方法を実際に試してみたので、その手順を詳しく紹介します。


💡 はじめに

注意点

  • この記事はローカルLAN内での通信によるマルチプレイヤーゲームを前提にしています。
  • 本記事ではオリジナルの Game Animation Sample | Fab をほぼそのまま使っています。
    • 私のGASP-ALS改造プロジェクトはいまのところサーバー対応していません。
    • 紹介内容はGameAnimationSampleに限らず、適用可能です。

✅ 手順①:複数画面で動作確認

まずは超簡単な確認から始めましょう。
Unreal Engineで、プレイヤー数を2に設定すると、1台のPC上で2画面に分割して動作確認できます。

実行方法

  1. Unreal Editorで任意のレベルを開きます。
  2. エディタ右上の「プレイ(Play)」の▼を開き、「プレイヤー数(Number of Players)」を 2 にします。
  3. 再生を押すと、2人分の画面が表示されます。

ポイント

この時点では2人がそれぞれ別々に動かせるだけで、通信していません。


✅ 手順②:Listenサーバーに設定

実際に通信するには、ネットワーク設定が必要です。

モード変更手順

  1. 「プレイ」設定から Net Mode を以下いずれかに変えます
    • ホスト側:Listen Server
    • クライアント側:Client に設定
  2. 実行すると、同じレベルに2体のマネキンが表示されます。

この段階で画面上の色変えボタン操作なども同期されていれば、通信成功です!

よっしー
よっしー

といってもこれはUnreal Editor上だけの話で、このままパッケージ化しても2人では遊べません


✅ 手順③:ホスト/クライアント選択UIを作る

ウィジェット作成

  1. 新しいウィジェットブループリント を作成(例:WBP_MultiPlayStart)。
    • 右クリック/ユーザーインターフェース/ウィジェットブループリント
    • ユーザーウィジェットを選びます
  2. キャンバスパネルを配置し、画面全体に広げます。
  3. ボタンを2つ配置します
    • キャンバスパネルのアンカーを中央に設定します
  4. ボタンの中央にテキストブロックを重ねて、それぞれに以下のテキストを設定します。
    • 「ホストとして参加」
    • 「クライアントとして参加」

✅ 手順④:ウィジェットの表示とボタンの機能

レベルブループリントでウィジェット表示

  1. 新しい空のレベルを作成し、保存します。
  2. レベルブループリントを開きます。
  3. BeginPlay で以下を実行:
    • GetPlayerControllerShow Mouse Cursor = True
    • Create Widget(先ほどのWBP)→ Add to Viewport

ボタンイベント設定

  1. ホストボタンを押すと、MapName?listen でOpen Levelします
    • Option欄に「Listen」と書いても、Level Nameに「<レベル名>?Listen」と書いても同じ効果です。
  2. クライアントボタンを押すと、127.0.0.1 でOpen Levelすると接続します。

詳細:

  • listen オプションはホストとして起動するための指定です。
  • 127.0.0.1 は自分自身を示すIPアドレスなので、同一PCでテスト可能。

✅ 手順⑤:IPアドレスを入力可能にする

複数PCで通信するため、IP入力欄を追加します。

テキストボックスの追加

  1. ウィジェットに Text Box を配置。
  2. 初期テキストに 127.0.0.1 を記載(例として)。

クライアントの接続処理

  1. グラフに移動し、TextBoxのOnTextCommitted イベントを作成し、変数に入力値を保存。
  2. 保存したIPアドレスを文字列に変換(ToString)し、OpenLevel のレベル名に接続します
    • ToString後にLevelNameに線をつなぐと、間にStringToNameの変換が挿入されます

✅ 手順⑥:実際のIPアドレスを確認

ローカル通信するには、相手のPCのIPが必要です。

確認方法(Windows)

  1. cmd を開く(スタートメニューで「cmd」と入力)。
  2. 以下のコマンドを入力:
ipconfig
  1. 表示された IPv4 アドレス を探します。
    例:192.168.0.3

このIPアドレスをクライアントの接続先として入力すれば、通信可能になります!

よっしー
よっしー

インターネット上の相手ともこの仕組みで通信できますが、その場合はプライベートIPアドレスではだめです。標準のポート7777の開放などセキュリティーまわりの話はここでは取り扱いません。


🔧 トラブル対策

  • クライアントでキャラチェンジできない
    • GameAnimationSampleのプレイヤーコントローラに実装されている、Nキーによる変更はサーバー同期されていません。
    • 新しくスポーンされたキャラクターが棒立ちになり、もとのキャラを操作し続けます。

直接Possess処理をクライアントで実行してもダメなので、サーバーで実行する設定にしたAddCustomEventを間に挟みましょう

🎉 まとめ

Listenサーバーを使ったマルチプレイは、意外と簡単に実装できます!

  • 1台のPCでも動作確認できる
  • 複数PCで通信するには、IPとネットワーク設定が必要
  • UIを使ってホスト/クライアントの切り替えが可能

これを応用すれば、自作ゲームのオンライン対応も夢じゃない!


この記事が役に立ったら、コメント・シェアをお願いします!
それでは、また次回お会いしましょう!

コメント

タイトルとURLをコピーしました