【Unreal Engine】オンラインマルチの現実:Sessionの仕組みとSteam連携の見取り図

作成: 2026-07-23

PIEの2窓から、友達のPCと繋ぐ本物のオンラインへ進むための見取り図。同じアプリを見つける仕組み(Session)とNAT越えの壁、Create/Find/Join Sessionの3ノード、標準のNull SubsystemはLAN内でしか見つからない現実、Steamを足すと何が変わるか、EOSという無料の選択肢まで。LAN内で部屋を立てる→探す→入るロビーを作ります。

レプリケーション を覚えて、PIEの2窓で2人プレイが動いた。次に思うのは当然、「これ、友達の家のPCと繋ぐにはどうするの?」です。ところが、いざ調べると、Session・NAT・オンラインサブシステムといった聞き慣れない壁が次々に出てきて、手が止まります。

オンラインマルチは、 「ノードを数個つなげば繋がる」ものではありません 。PIEの2窓と本物のオンラインの間には、いくつもの現実の壁があります。この記事では、まずその 見取り図 を示して挫折とスコープ膨張を防ぎ、そのうえで、手を動かせる範囲(LAN内のロビー)を実際に作ります。

PIEの2窓から、部屋を立てて探して入るオンラインのロビーへ進む見取り図とソフトブルーのクレイ人形

この記事でわかること

  • PIEの2窓と本物のオンラインの間にある 2つの壁(発見とNAT越え)
  • Sessionは「部屋」: Create / Find / Join の3ノード
  • 標準のNull Subsystemは LAN内でしか見つからない 現実
  • Steamを足すと何が変わるか(発見・NAT越え)
  • EOS という無料の選択肢
  • 実践: LAN内で部屋を立てる→探す→入るロビー

Sponsored

PIEの2窓と本物のオンラインの間にあるもの

PIEの2窓は、1台のPCの中で2つのゲームを動かして、直接つないでいるだけです。本物のオンラインには、そこに 2つの壁 が立ちはだかります。

PIEの2窓は同じPC内で直結、本物のオンラインは「発見(同じアプリを見つける)」と「NAT越え(経路をつなぐ)」の2つの壁があることを示した図
  • 壁1:発見(見つける) — 世界中で動いている無数のゲームの中から、 どうやって「友達の部屋」を見つける のか。この「同じアプリの部屋を探す仕組み」が Session です
  • 壁2:NAT越え(つなぐ) — 見つけたとして、家庭用ルーター(NAT)の内側にいるPC同士を、 どうやって直接つなぐ のか。これが NAT越え の問題で、多くの場合オンラインサブシステムの助けが要ります

この2つを自前で全部作るのは、個人開発の射程を超えます。だからこそ、SteamやEOSといった オンラインサブシステム が、この壁を肩代わりしてくれるのです。まずは「発見=Session」「つなぐ=NAT越え」という2つの壁がある、と押さえてください。

Sessionは「部屋」

Session(セッション) は、オンラインマルチの「部屋」にあたる概念です。ホストが部屋を立て、参加者がそれを探して入ります。Blueprintには、この操作のための非同期ノードが用意されています。

Create Sessionで部屋を立て、Find Sessionsで部屋を探し、Join Sessionで部屋に入る、という3つのノードの流れの図
  • 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には、大きな制約があります。

Online Subsystem NullのSessionは同一LAN(同じルーター)の中でしか見つからず、インターネット越しには届かないことを示した図

Null SubsystemのSessionは、同一LAN内(同じルーターの下)でしか見つかりません。 インターネット越しに、別の家のPCの部屋を探すことはできません。Create Session の際に Use LAN = true にして、同じネットワーク内でだけ発見できる、というのがNullの世界です。

これは制約であると同時に、 最初のテストには十分 です。同じWi-Fiに繋いだ2台のPCなら、Nullのままでも「部屋を立てる→探す→入る」が動きます。まずはここまでを完成させ、インターネット公開はその先の課題として切り分けるのが、挫折しないコツです。

なお、ホストが部屋を立てて自分もプレイする構図(Listen Server)では、 ホストの回線とNATが全員のボトルネック になります。この構図は レプリケーションの記事 で扱ったとおりです。

Sponsored

Steamを足すと何が変わるか

「別の家の友達と繋ぎたい」となったら、 Online Subsystem Steam を足すのが定番です。Steamは、Nullにはできなかったことを肩代わりしてくれます。

Online Subsystem Steamを足すと、フレンド経由の発見とNAT越えの助けが得られ、インターネット越しに繋がるようになることを示した図
  • フレンド経由の発見: 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)を常時稼働させる世界もありますが、運用コストと専門知識が要るため、 個人開発の最初の一歩からは外して 考えるのが現実的です。

Sponsored

実践:LAN内でロビーを作る

協力アクションのルーム制、対戦パズルの部屋探し、サークル内のテストプレイ。 「部屋を立てる→探す→入る」 は、あらゆるオンラインゲームの入り口です。ここではその一周を、Null Subsystem(LAN)の範囲で、実際に動くロビーとして作ります。

作るのは、 タイトルに「ホストする」「参加する」の2ボタンを置き、片方が立てた部屋がもう片方のリストに現れ、参加すると同じ世界で一緒に遊べる ロビーです。

動かすとこうなります。同じWi-Fiに繋いだ2台のPCでパッケージ版を起動する。1台目で「ホストする」を押すと部屋が立ち、ゲームレベルへ移る。2台目で「参加する」を押すと、 1台目の部屋がリストに現れ 、選んで入ると、レプリケーションの記事 で作った「2人で押せるボタン」が同じ世界で動きます。

タイトルのホスト/参加ボタンから、Create Session→Open Level(listen)、Find Sessions→リスト表示→Join Sessionへとつながる完成ノードグラフ

再現条件

項目設定
タイトル WBP_Title「ホストする」「参加する」の2ボタン
ホスト処理Create Session(Public, Max Players = 2, Use LAN = true )→ 成功で Open Level(GameLevel, オプション ?listen
参加処理Find SessionsUse 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台で足りますか。その答えが、進む道を決めてくれます。

さらに学ぶために