今回は、Listenサーバーを使った2人用マルチプレイのやり方を解説します!
デスクトップPCをホスト(サーバー)にして、ラップトップ(クライアント)と通信する方法を実際に試してみたので、その手順を詳しく紹介します。
💡 はじめに
注意点
- この記事はローカルLAN内での通信によるマルチプレイヤーゲームを前提にしています。
- 本記事ではオリジナルの Game Animation Sample | Fab をほぼそのまま使っています。
- 私のGASP-ALS改造プロジェクトはいまのところサーバー対応していません。
- 紹介内容はGameAnimationSampleに限らず、適用可能です。
✅ 手順①:複数画面で動作確認
まずは超簡単な確認から始めましょう。
Unreal Engineで、プレイヤー数を2に設定すると、1台のPC上で2画面に分割して動作確認できます。
実行方法
- Unreal Editorで任意のレベルを開きます。
- エディタ右上の「プレイ(Play)」の▼を開き、「プレイヤー数(Number of Players)」を
2
にします。 - 再生を押すと、2人分の画面が表示されます。

ポイント
この時点では2人がそれぞれ別々に動かせるだけで、通信していません。
✅ 手順②:Listenサーバーに設定
実際に通信するには、ネットワーク設定が必要です。
モード変更手順
- 「プレイ」設定から Net Mode を以下いずれかに変えます
- ホスト側:
Listen Server
- クライアント側:
Client
に設定
- ホスト側:
- 実行すると、同じレベルに2体のマネキンが表示されます。

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

よっしー
といってもこれはUnreal Editor上だけの話で、このままパッケージ化しても2人では遊べません
✅ 手順③:ホスト/クライアント選択UIを作る
ウィジェット作成
- 新しいウィジェットブループリント を作成(例:
WBP_MultiPlayStart
)。- 右クリック/ユーザーインターフェース/ウィジェットブループリント
- ユーザーウィジェットを選びます
- キャンバスパネルを配置し、画面全体に広げます。
- ボタンを2つ配置します
- キャンバスパネルのアンカーを中央に設定します
- ボタンの中央にテキストブロックを重ねて、それぞれに以下のテキストを設定します。
- 「ホストとして参加」
- 「クライアントとして参加」

✅ 手順④:ウィジェットの表示とボタンの機能
レベルブループリントでウィジェット表示
- 新しい空のレベルを作成し、保存します。
- レベルブループリントを開きます。
BeginPlay
で以下を実行:GetPlayerController
→Show Mouse Cursor
= TrueCreate Widget
(先ほどのWBP)→Add to Viewport

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

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


✅ 手順⑤:IPアドレスを入力可能にする
複数PCで通信するため、IP入力欄を追加します。
テキストボックスの追加
- ウィジェットに
Text Box
を配置。 - 初期テキストに
127.0.0.1
を記載(例として)。

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

✅ 手順⑥:実際のIPアドレスを確認
ローカル通信するには、相手のPCのIPが必要です。
確認方法(Windows)
cmd
を開く(スタートメニューで「cmd」と入力)。- 以下のコマンドを入力:
ipconfig
- 表示された
IPv4 アドレス
を探します。
例:192.168.0.3

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

よっしー
インターネット上の相手ともこの仕組みで通信できますが、その場合はプライベートIPアドレスではだめです。標準のポート7777の開放などセキュリティーまわりの話はここでは取り扱いません。
🔧 トラブル対策
- クライアントでキャラチェンジできない
- GameAnimationSampleのプレイヤーコントローラに実装されている、Nキーによる変更はサーバー同期されていません。
- 新しくスポーンされたキャラクターが棒立ちになり、もとのキャラを操作し続けます。
直接Possess処理をクライアントで実行してもダメなので、サーバーで実行する設定にしたAddCustomEventを間に挟みましょう

🎉 まとめ
Listenサーバーを使ったマルチプレイは、意外と簡単に実装できます!
- 1台のPCでも動作確認できる
- 複数PCで通信するには、IPとネットワーク設定が必要
- UIを使ってホスト/クライアントの切り替えが可能
これを応用すれば、自作ゲームのオンライン対応も夢じゃない!
この記事が役に立ったら、コメント・シェアをお願いします!
それでは、また次回お会いしましょう!
コメント