概要
この記事では、ゲームエンジン Godot Engine を用いて、オンラインマルチプレイを実装する方法を解説します。
Godot Engine単体の機能で実現できるローカルマルチプレイ(同一Wi-Fi上での通信)とは異なり、Epic Gamesが提供する EOS (Epic Online Services) と連携することで、世界中のプレイヤーと通信可能な本格的なオンラインマルチプレイを実現します。
基本的な機能は無料で利用でき、例えば友人同士で遊ぶだけであれば、費用はかかりません。環境構築も1〜2時間ほどで完了するため、比較的気軽に導入できるのが特徴です。
※ 本記事は、本校で作成されたテキストを許可のもとで一部公開したものです。都合により、予告なく非公開とする可能性があります。
※ ゲームを全世界に一般公開(有償配布など)する場合、年間3000〜5000円程度のドメイン費用などが別途必要になる場合があります。
必要物
「必須」
・PC(windows11推奨、多少スペックが低くても動きます)
・自身のメールアドレス
・自身のメールを受信できるデバイス
「オンライン通信を試す場合」
・2つ目のメールアドレス
・もう1台のPC
・別のネットワーク環境(スマートフォンのテザリングでも可)
※ 未成年の方が作業する場合、保護者の同意が必要になることがあります。本記事では、作業者が成年であることを前提として進めます。
想定読者
・Godot Engineで簡単なゲームを制作した経験がある方
・Godot Engineのローカルマルチプレイ機能を試したことがある方
・オンラインマルチプレイに挑戦したいが、情報収集に手間取っている方
A.Epic Gamesアカウントの作成
まず、EOSを利用するために必要なEpic Gamesの開発者アカウントを作成します。
①Epic Developer Community にアクセスします。
②画面右上の「サインイン」をクリックします。
③表示された画面下部の「アカウント作成」をクリックします。
④「これらのゲームをプレイしたことがありますか?」という質問に対し、今回は新規作成のため「X」を選択します。
⑤生年月日を入力します。
⑥メールアドレスを入力し、「続ける」をクリックします。名前、パスワード、ディスプレイネームの入力が求められます。
・名前: ご自身の名前を入力します。
・パスワード: 任意のパスワードを設定します(忘れないように必ずメモしてください)。
・ディスプレイネーム: 文字化けを防ぐため、半角英数字で入力してください。
⑦利用規約のチェックボックスにチェックを入れ、「続ける」をクリックします。
⑧登録したメールアドレスにセキュリティコードが届きます。画面に入力し、「続ける」をクリックしてください。
⑨外部アカウントとのリンク画面が表示されますが、今回は使用しないため、そのままスキップして完了します。
これでアカウント作成は完了です。
B.Epic Developer Portalの設定
次に、開発の拠点となる「組織」と、ゲームプロジェクトにあたる「製品」を作成し、各種設定を行います。
①画面右上の「Dev Portal」をクリックして、デベロッパーポータルに移動します。
②「組織を作成」ページで任意の組織名を入力し、「組織を作成」ボタンを押します。
③組織名は日本語も可能ですが、将来的にグローバルに活動する可能性を考慮し、英数字での命名をおすすめします。
④組織が作成されると、デベロッパーポータルに入れます。
⑤最初にチュートリアルが表示されるかもしれませんが、スキップして構いません。
⑥左側メニューの下にある「+ 製品を作成」ボタンをクリックします。
⑦任意の製品名(ゲーム名)を記入し、「作成」ボタンを押します。こちらも組織名と同様、英数字での命名を推奨します。
⑧製品作成後、左側メニューの「組織」をクリックします。
⑨中央のメニューから「契約」を選択します。
⑩表示されている複数の契約に同意していきます。各契約の「確認して同意」を押し、契約書を最後までスクロールします。
⑪すると承諾ボタンが押せるようになります。表示されている全ての契約に同意してください。
⑫現状ある契約すべてに同意できていたらOKです。
⑬契約同意後、左側メニューから先ほど作成した自身の製品をクリックします。
⑭製品画面の左側メニューから「製品設定」を開きます。
⑮中央のメニューから「クライアント」を選択します。
⑯「新規クライアントを追加」ボタンを押します。
⑰「クライアント名」には「(ゲーム名)+ Client」のように分かりやすい名前を入力します。
⑱「新規クライアントポリシーを追加」ボタンを押します。
⑲ポリシー名は、「Game名+Policy」のように入力します。
⑳ポリシーの種類は、Peer to Peerを選択します。
㉑ポリシーを追加し、その後クライアントを追加します。
㉒クライアント追加後、左側のメニューから、自身の作成した製品をクリックします。
㉓左側メニューから「Epicアカウントサービス」をクリックします。
㉔「+アプリケーションを追加」ボタンを押します。
㉕上部のタブから「アクセス許可」を選択し、「Online Presence」と「Friends」を有効にして、変更を保存します。
㉖「リンク済みのクライアント」タブを選択し、先ほど作成したクライアントにチェックを入れて、変更を保存します。
㉗中央と右の項目に ✅ が付いていることを確認し、前のページに戻ります。
㉘製品画面の左側メニューから「Epic Games Store」をクリックします。
㉙組織設定の更新を求められるので、「組織を更新して続行」を押します。
㉚組織の画面に戻り、左側メニューから「組織」→ 中央メニューから「契約」を選択します。
㉛同意すべき契約項目が増えているので、手順⑩と同様に、すべてに同意してください。
C.各種ダウンロードなど
次に、Godot Engine本体とEOS連携用のアドオンなどをダウンロードし、プロジェクトフォルダを準備します。
①今後の作業でダウンロードするファイルをまとめるためのフォルダをPC内に作成します。
②例えば「Game名+フォルダ」などの名前にしたフォルダを作成し、ドキュメントなどに置いておき、これらダウンロードするものはそこにまとめて入れていきましょう。以降、このフォルダを「作業フォルダ」と呼びます。
③Epic Developer Portalのダッシュボード画面にある「ダウンロード」から、「C SDK」のバージョン 1.17.0 を選択してダウンロードします。
④ダウンロードしたZIPファイルを、作業フォルダ内に展開(解凍)します。
⑤Godot Engineの公式サイト から、バージョン 4.1.1 Stable をダウンロードします。
⑥ダウンロードしたZIPファイルを、作業フォルダ内に展開します。
⑦EOS Godot Pluginのリリースページ にアクセスし、バージョン 2.2.2 の Source code (zip)
をクリックしてダウンロードします。
⑧ダウンロードしたZIPファイルを、作業フォルダ内に展開します。
⑨再度 EOS Godot Pluginのリリースページ にアクセスし、バージョン 2.2.2 の epic-online-services-godot-windows.zip
をダウンロードします(ファイル名に windows
が含まれていることを確認してください)。
⑩ダウンロードしたZIPファイルを、作業フォルダ内に展開します。
⑪作業フォルダを開き、今後の作業がしやすいようにファイル整理と名称変更を行います。
・Samples
フォルダと ThirdPartyNotices.txt
ファイルは不要なため削除します。
・epic-online-services-godot-2.2.2
→ 2.2.2
に変更
・epic-online-services-godot
→ godot-windows
に変更

⑫SDKフォルダ内にある Bin
フォルダをコピー(Ctrl + C
)します。
⑬その後、「2.2.2」→「sample」→「addons」→「epic-online-services-godot」の順に開いていき、そこにある「bin」フォルダを選択し、「Ctrl + V」でペーストします。「bin」の中身が以下のようになっていたら成功です。

⑭作業フォルダに戻り、「godot-windows」→「addons」→「epic-online-services-godot」→「bin」の順に開いていき、「windows」を選択し、「Ctrl + C」でコピーします。
⑮作業フォルダから、「2.2.2」→「sample」→「addons」→「epic-online-services-godot」→「bin」の順に開いていき、その中に「Ctrl + V」で貼り付けを行い、「windows」フォルダを追加します。
⑯binフォルダ内が以下のようになっていれば成功です。

⑰作業フォルダに戻り、「2.2.2」を開きます。そこにあるsampleフォルダを選択し、「Ctrl + C」でコピーします。
⑱作業フォルダのトップにペーストし、フォルダ名を自身のゲーム名(例: TestGodotGame
)に変更します。このフォルダがGodotのプロジェクトフォルダになります。

D.Godotプロジェクトの設定とコード修正
いよいよGodot上でプロジェクトを開き、オンライン接続に必要な情報をコードに書き込んでいきます。
①Cで用いたフォルダから、Godot_v4.4.1-stable_win64.exeを開きます。
②プロジェクトマネージャー画面の左上にある「インポート」を選択します。
③「作業フォルダ」→「自身のゲーム名のフォルダ」→「project.godot」を選び、開く→インポートを押します。
④プロジェクトが開きます。いくつかエラーが表示される場合がありますが、この段階では問題ありません。
⑤メニューバーから「プロジェクト」→「プロジェクト設定」を開き、「一般」タブの「アプリケーション/構成/名前」を自身のゲーム名に変更します。
⑥試しに実行し、「Trying to assign value of type ‘Nil’ to a variable of type ‘String’.」というエラーが出て止まるのであれば、順調です。(違うエラーが出た場合、上手くいってないかもしれません。)
⑦先ほどエラーが出た部分(Main.gdの3-11行目)を修正します。
⑧Epic Developer Community にアクセスし、Dev Portalを開きます。
⑨左側メニューから自身の製品を選択し、再度左側メニューから「製品設定」を開くと、認証情報が表示されます。
⑩以下の対応関係に従って、Main.gd
の該当する文字列をそれぞれコピー&ペーストしてください。
・CLIENT_SECRET
← クライアントシークレット・PRODUCT_ID
← 製品ID・SANDBOX_ID
← サンドボックスID・DEPLOYMENT_ID
← デプロイメントID
・CLIENT_ID
← クライアントID
⑪なお、サンドボックスIDとデプロイメントIDは、複数あるうち「Dev」と記載されているものをコピーしてください。
⑫PRODUCT_NAME
には自身のゲーム名を英語で、PRODUCT_VERSION
には "1.0"
と入力します。
⑬ENCRYPTION_KEY
には64桁のランダムな16進数文字列が必要です。乱数生成サイト などで生成し、文字列として挿入してください。
⑭この状態で実行すると、正しく入力さえできていれば画面が表示されるはずです。
⑮出てきた画面でLoginTypeをAccountPortalに変更し、Loginを押してください。
⑯すると、「LoginError」から始まるエラーが出たと思います。次はこれを修正します。
⑰godotの編集画面に戻り、画面左下のファイルシステムで「hauth.gd」を検索し、出てきた「hauth.gd」をクリックしてスクリプトを開きます。
⑱スクリプトの画面で「Ctrl + F」で検索窓を開き、「opts.login_flags = auth_login_flags」で検索します。4件ヒットするので、そのうち「login_account_portal_asysc」関数内のものを変更します。
⑲該当部分の右辺を以下のように「EOS.Auth.LoginFlags.None」と変更します。
# 変更前
opts.login_flags = auth_login_flags
# 変更後
opts.login_flags = EOS.Auth.LoginFlags.None
⑳再度プロジェクトを実行し、LoginType
を AccountPortal
にして「Login」ボタンを押します。今度はエラーではなく、Epic Gamesのログイン画面がブラウザで開くはずです。
㉑最初に作成したアカウントのメールアドレスとパスワードでログインします。認証コードの入力やアクセス許可の確認画面が表示されたら、指示に従って進めてください(Confirm, Continue to app, Allowなど)。
㉒Login Success!の表示が出たら、ひとまずオンライン接続完了です。
㉓(補足)もしゲームの動作が重い場合は、ファイルシステムから test_manual_audio_output.gd
を検索して開き、_process
関数全体をコメントアウトすると軽量化できます。
複数行をコメントアウトするには、対象範囲を '
で囲みます。
E.オンライン接続の確認
最後に、実際に2つのアカウントを使ってオンラインで接続できるかを確認します。
①まず、テスト用にもう一つ別のEpicアカウントを作成します(手順A と同様)。
②ゲームを作成した方(1つ目)のアカウントで Dev Portal に入ります。
③左側メニューから「組織」を選び、中央右側にある「新規招待」ボタンを押します。
④先ほど作成した2つ目のアカウントのメールアドレスを入力し、製品に自分のゲームを追加して招待を送信します。
⑤招待された側のアカウントにメールが届くので、「JOIN ORGANIZATION」をクリックします。
⑥ログインを求められたら、2つ目のアカウントでログインします。Dev Portalを更新し、組織のメンバーが2人になっていれば成功です。
PC1台で確認する
①Godotエディタのメニューバーから「デバッグ」→「実行インスタンスのカスタマイズ」をクリックします。
②表示されたウィンドウで、「複数インスタンスを有効」にチェックを入れ、その下の数値を 2 にします。
③この状態でプロジェクトを実行すると、ゲーム画面が2つ起動します。それぞれ別々のアカウントでログインしてください。
④片方の画面で「Lobbies」→「Create lobby」→「Create」を選択してロビーを作成します。
⑤もう片方の画面で「Lobbies」→「Search」→表示されたロビーを選択し「JOIN」を押します。
⑥ロビーのメンバーリストに2人の名前が表示されれば成功です。チャットを送信すると、両方の画面に反映されるはずです。
⑦ホスト(Owner)側で「START」を押すと、簡単なオンラインゲームで遊ぶことができます。
※ 初回起動時にうまく接続できないことがあります。その場合は、一度ゲームを終了して再実行してみてください。
PC2台で別のwifiで確認する
より実践的なオンライン環境でテストするには、別のPCとネットワークを使います。
①Godotの編集画面を開き、「プロジェクト」→「エクスポート」を押します。
②「追加…」から「Windows Desktop」を選択してプリセットを追加します。
③オプションからアプリケーションを選択し、リソースの変更をオフにします。
④画面下部の「プロジェクトのエクスポート」を押すと、保存するフォルダの選択画面になります。
⑤右クリックでそれ用のフォルダを作成し、その後保存することで、作成したフォルダにエクスポートできます。
(↓のようなエラーが出た場合、テンプレートをダウンロードしてください。)

⑥エクスポートした実行可能ファイルと関連ファイル一式を、USBメモリやファイル共有サービスなどを使って、別のネットワークに接続されたもう1台のPCに送ります。
⑦それぞれのPCでゲームのexeファイルを実行し、「PC1台で確認する場合」と同様の操作を行うことで、実際のオンライン接続をテストできます。
終わりに
以上が、Godot EngineとEOSを使ったオンラインマルチプレイ実装の基本的な手順です。
このサンプルプロジェクトを改造したり、スクリプトの内容を詳しく読み解いたりすることで、オリジナルのオンラインゲーム制作に応用することができます。
次回は「生成AIと教育の今」を解説します。
(教材制作・文責 本多)