レプリケーション を覚えて、PIEの2窓で2人プレイが動いた。次に思うのは当然、「これ、友達の家のPCと繋ぐにはどうするの?」です。ところが、いざ調べると、Session・NAT・オンラインサブシステムといった聞き慣れない壁が次々に出てきて、手が止まります。
オンラインマルチは、 「ノードを数個つなげば繋がる」ものではありません 。PIEの2窓と本物のオンラインの間には、いくつもの現実の壁があります。この記事では、まずその 見取り図 を示して挫折とスコープ膨張を防ぎ、そのうえで、手を動かせる範囲(LAN内のロビー)を実際に作ります。
この記事でわかること
- PIEの2窓と本物のオンラインの間にある 2つの壁(発見とNAT越え)
- Sessionは「部屋」: Create / Find / Join の3ノード
- 標準のNull Subsystemは LAN内でしか見つからない 現実
- Steamを足すと何が変わるか(発見・NAT越え)
- EOS という無料の選択肢
- 実践: LAN内で部屋を立てる→探す→入るロビー
PIEの2窓と本物のオンラインの間にあるもの
PIEの2窓は、1台のPCの中で2つのゲームを動かして、直接つないでいるだけです。本物のオンラインには、そこに 2つの壁 が立ちはだかります。

- 壁1:発見(見つける) — 世界中で動いている無数のゲームの中から、 どうやって「友達の部屋」を見つける のか。この「同じアプリの部屋を探す仕組み」が Session です
- 壁2:NAT越え(つなぐ) — 見つけたとして、家庭用ルーター(NAT)の内側にいるPC同士を、 どうやって直接つなぐ のか。これが NAT越え の問題で、多くの場合オンラインサブシステムの助けが要ります
この2つを自前で全部作るのは、個人開発の射程を超えます。だからこそ、SteamやEOSといった オンラインサブシステム が、この壁を肩代わりしてくれるのです。まずは「発見=Session」「つなぐ=NAT越え」という2つの壁がある、と押さえてください。
Sessionは「部屋」
Session(セッション) は、オンラインマルチの「部屋」にあたる概念です。ホストが部屋を立て、参加者がそれを探して入ります。Blueprintには、この操作のための非同期ノードが用意されています。

- Create Session: 部屋を立てる(ホスト側)。公開設定や最大人数を指定する
- Find Sessions: 部屋を探す(参加側)。見つかった部屋のリストが返ってくる
- Join Session: 見つけた部屋に入る(参加側)
流れはシンプルです。ホストが Create Session で部屋を作り、Open Level をlistenオプション付きで開いてゲームを始めます。参加者は Find Sessions で部屋の一覧を取得し、選んだ部屋に Join Session で入ります。この3つが、オンラインロビーの背骨です。
Null Subsystemの現実:LAN内だけ
ここが最初の関門です。何もプラグインを足さない標準状態のUEは、 Online Subsystem Null というサブシステムで動いています。そしてNullのSessionには、大き な制約があります。

Null SubsystemのSessionは、同一LAN内(同じルーターの下)でしか見つかりません。 インターネット越しに、別の家のPCの部屋を探すことはできません。Create Session の際に Use LAN = true にして、同じネットワーク内でだけ発見できる、というのがNullの世界です。
これは制約であると同時に、 最初のテストには十分 です。同じWi-Fiに繋いだ2台のPCなら、Nullのままでも「部屋を立てる→探す→入る」が動きます。まずはここまでを完成させ、インターネット公開はその先の課題として切り分けるのが、挫折しないコツです。
なお、ホストが部屋を立てて自分もプレイする構図(Listen Server)では、 ホストの回線とNATが全員のボトルネック になります。この構図は レプリケーションの記事 で扱ったとおりです。
Steamを足すと何が変わるか
「別の家の友達と繋ぎたい」となったら 、 Online Subsystem Steam を足すのが定番です。Steamは、Nullにはできなかったことを肩代わりしてくれます。

- フレンド経由の発見: Steamのフレンドリストから、友達の部屋を見つけられる
- NAT越えの助け: Steamのネットワークが、家庭用ルーターの内側同士を繋ぐ手助けをする
- 導入: Online Subsystem Steam プラグインを有効化し、
DefaultEngine.iniにSteamを既定のサービスとして設定する(テスト用のAppIDを使う)
手順の細部はバージョンやSteam側の事情で変わりやすいので、この記事では 見取り図に留めます 。大事なのは「Steamを足すと、発見とNAT越えという2つの壁を越えられる」という全体像です。Advanced Sessionsのようなサードパーティ製プラグインが、Session周りのBlueprintノードを拡充してくれることも、名前だけ知っておくと後で役立ちます。
EOSという無料の選択肢
Steam以外に、 EOS(Epic Online Services) という選択肢もあります。Epicが提供する、 無料 のオンラインサービス群です。
- 何が提供されるか: ロビー・マッチメイキング・フレンド・NAT越えなど、オンラインに必要な機能が一式
- どんな人向けか: Steam以外のストアでも配りたい、あるいは複数プラットフォームをまたぎたい場合の土台になる
- 位置づけ: Steamが「Steamで売るゲーム」の定番なら、EOSは「プラットフォームを問わない」土台
どちらを選ぶにせよ、 自前でNAT越えサーバーを立てる必要がなくなる のが、オンラインサブシステムを使う最大の利点です。ちなみに、専用サーバー(Dedicated Server)を常時稼働させる世界もありますが、運用コストと専門知識が要るため、 個人開発の最初の一歩からは外して 考えるのが現実的です。
実践:LAN内でロビーを作る
協力アクションのルーム制、対戦パズルの部屋探し、サークル内のテストプレイ。 「部屋を立てる→探す→入る」 は、あらゆるオンラインゲームの入り口です。ここではその一周を、Null Subsystem(LAN)の範囲で、実際に動くロビーとして作ります。
作るのは、 タイトルに「ホストする」「参加する」の2ボタンを置き、片方が立てた部屋がもう片方のリストに現れ、参加すると同じ世界で一緒に遊べる ロビーです。
動かすとこうなります。同じWi-Fiに繋いだ2台のPCでパッケージ版を起動する。1台目で「ホストする」を押すと部屋が立ち、ゲームレベルへ移る。2台目で「参加する」を押すと、 1台目の部屋がリストに 現れ 、選んで入ると、レプリケーションの記事 で作った「2人で押せるボタン」が同じ世界で動きます。

再現条件
| 項目 | 設定 |
|---|---|
タイトル WBP_Title | 「ホストする」「参加する」の2ボタン |
| ホスト処理 | Create Session(Public, Max Players = 2, Use LAN = true )→ 成功で Open Level(GameLevel, オプション ?listen ) |
| 参加処理 | Find Sessions(Use LAN = true )→ 結果をUMGリストに表示 → 選んだ項目で Join Session |
| テスト方法 | 同一LANの 別々のPC で、パッケージ版 を起動(PIE多窓や同一PCでは不可) |
ステップ1:ホストする
「ホストする」ボタンで、部屋を立ててからlistenでレベルを開きます。
「ホストする」On Clicked
→ Create Session(Public Connections: 2, Use LAN: ✔)
→ (On Success)Open Level(Level Name: GameLevel, Options: "listen")
ステップ2:探し て入る
「参加する」ボタンで部屋を探し、リストから選んで入ります。
「参加する」On Clicked
→ Find Sessions(Use LAN: ✔, Max Results: 20)
→ (On Success)結果をForEachでUMGリストに追加
リスト項目 On Clicked
→ Join Session(対象の Session Result)
// Join成功後、UEが自動でホストのレベルへ移動する
確かめる
同一Wi-Fiの2台のPCで、パッケージ版を起動してください。うまくいけば、1台目の部屋が 2台目のリストに現れ 、参加すると同じ世界で「2人で押せるボタン」が動きます。
うまくいかないときの切り分けです。
- 相手の部屋がリストに出ない → まず ファイアウォール 。両PCで実行ファイルの通信を許可。次に 同一LANか(同じルーター・同じWi-Fi)を確認
- PIEの多窓では出るのに実機で出ない、または逆 → Null SubsystemのLAN検索は 別々のPCのパッケージ版 が確実。同一PCの多窓では不安定
- 参加後に世界が同期しない → Sessionは繋がっているが、Replication側の問題。レプリケーションの記事 を確認
ポイントは2つです。
- まずLANで「立てる→探す→入る」を完成させる: Null Subsystemの範囲でも、ロビーの背骨は完成できます。ここまで動けば、オンラインの仕組みは理解できています
- 公開はSteam/EOSを足す別フェーズ: インターネット越しは、発見とNAT越えの壁をサブシステムに肩代わりしてもらう次のステップです。LAN完成とネット公開を、はっきり分けて進 めてください
おまけ:先に知っておくと良いこと
2台テストはパッケージ版で。 Sessionの検索は、エディタのPIEよりも パッケージ版 を別々のPCで動かすのが確実です。開発中は「LANで2台テスト」を習慣にすると、オンラインの不具合を早く見つけられます。
ホストと参加者は役割が違う。 部屋を立てたホストと、あとから入った参加者では、権限が異なります。GameModeはサーバー(ホスト)にしか存在しない など、役割の違いを押さえておくと、オンライン特有のバグを避けられます。
オンラインが大変なら、ローカルという逃げ道。 「同じ画面で2人」でよいなら、画面分割のローカルマルチ は、オンラインより遥かに簡単です。Session もNAT越えも要りません。作りたい体験がローカルで足りるなら、そちらが賢い選択です。
まとめ
PIEの2窓から本物のオンラインへは、次の見取り図で進みます。
| 段階 | 何をする | 道具 |
|---|---|---|
| 仕組みを知る | 発見とNAT越えの2つの壁 | Session(部屋)の概念 |
| LANで作る | 立てる→探す→入る | Create / Find / Join Session(Null, Use LAN) |
| 公開する | 発見・NAT越えを肩代わり | Steam / EOS を足す |
| 逃げ道 | 同じ画面で足りるなら | 画面分割のローカルマルチ |
そして貫く原則が、 まずLANで完成させ、公開は別フェーズ ということです。全部を一度にやろうとするとスコープが膨らんで挫折します。
これで、オンラインの全体像が見えました。あなたの作りたいマルチは、本当にインターネット越しが必要ですか、それとも同じ部屋の2台で足りますか。その答えが、進む道を決めてくれます。
さらに学ぶために
- マルチプレイヤーとレプリケーションの基礎 — Replication/RPCの土台
- パッケージ化とビルド — 2台テストはパッケージ版で
- Game Framework(GameMode/GameState/PlayerState) — ホストと参加者の役割
- 画面分割のローカルマルチプレイ — オンラインより遥かに楽な選択肢