目次
前回の記事では、同じWiFi下でプロダクション同士が接続していることを説明しました。
しかし、私たちが望んでいるのは、同じローカル接続上にいることだけではなく、異なる WiFi で一緒にゲームをプレイすることです。
それでは、まず IP アドレスについて説明しましょう。
IPアドレス
同じ WiFi の下で、3 台のコンピューターの IP アドレスが順番に異なります。
このようにして、プレーヤー A のコンピューターのみが、 IP アドレスを介してプレーヤー Bとプレーヤー C のコンピューターに接続できます。
次に、WiFi がインターネットに接続できるように、WiFi に外部からアドレスを与えます [このように考えることができます]
外部情報は外部から WiFi に流れ、その後プレーヤーに流れます。
図に示すように:
したがって、ローカル接続は非常に簡単です。
では、他のプレイヤーが世界の反対側にいる場合、どのようにして一緒にゲームをプレイすればよいのでしょうか?
必要なプラットフォームは多数あり、さまざまなプラットフォームで公開する場合は、steam、Xbox など、さまざまなプラットフォームのコードを学習する必要があります。
Unreal Engine はオンライン サブシステムを提供します。決定する必要があるのは、次のことだけです。
彼には抽象化レイヤーがあり、この抽象化レイヤーは他のプラットフォームの特定のコードを抽象化するので、それについて心配する必要はありません。
このシステムはOnlineSubsystemと呼ばれます。
オンラインサブシステム
プラグインが開いています
蒸気を例に挙げてみましょう。
プロジェクトを開いてプラグインを開いて、以下を検索します。
ここには多くのプラットフォームが表示されますが、ここでは Steam のプラットフォームを使用しています。
モジュールのロード
このプラグインが開かれているので、VS に入って次を確認します。
このモジュールは、OnlineSubsystemSteam と OnlineSubsystem を追加する必要があります。知らない場合は、次を参照してください。
すると、次のようになります。
このようにして、関連するモジュールにアクセスできます。
構成の変更
プロジェクト ファイルを見つけて、config を開きます。
次に開くのは、DefaultEngine.iniファイルです。
Steam を使用するようにプロジェクトを設定するには、このファイルに何かを追加する必要があります。詳細については、次を参照してください。
Unreal Engine オンライン サブシステム Steam インターフェイス | Unreal Engine 5.1 ドキュメント (unrealengine.com)
この中に次のものがあります。
1 つ目は、ネットワーク ドライバーを steam のネットワーク ドライバーとして定義し、steam に接続できるようにすることです。
2 つ目は、オンライン サブシステムを steam として定義し、steam のネットワーク構成を使用できるようにすることです。
3 番目はデフォルトのアプリケーション開発 ID で、デフォルトでは 480 です。ID をお持ちでない場合は、480 を使用してください。
次に、これをDefaultEngine.iniにコピーします。
ここで vs とエディタを閉じ、プロジェクト ファイルを開いて不要なものを削除し、vs を再生成します。
次に、Unreal ロゴを右クリックし、Visual Studio プロジェクト ファイルを生成します。
ダブルクリックすると、ファイルが見つからないというメッセージが表示されますが、バイナリ ファイルが再生成されるため、心配する必要はなく、[はい] をクリックしてください。
CPP
ヘッダー ファイルに次のものを作成します。
TSharedPtr は非 UObject へのスマート ポインタです
//向前声明的接口类
//typedef TSharedPtr<IOnlineSession, ESPMode::ThreadSafe> IOnlineSessionPtr
//class IOnlineSessionPtr myOnlineSessionInterface;因为是多线程的,所以我们并不能这样使用,当然,如果你将#include "Interfaces/OnlineSessionInterface.h"的头文件放在头文件中,也可以使用这个【class要去除】
TSharedPtr<class IOnlineSession, ESPMode::ThreadSafe> myOnlineSessionInterface;
次に、プレーヤーの cpp ファイルを入力します。
#include "OnlineSubsystem.h"
//你也可以将这个放在头文件中,然后用这个IOnlineSessionPtr myOnlineSessionInterface
#include "Interfaces/OnlineSessionInterface.h"
次に、コンストラクターでポインターを作成します。
そして印刷します:
ここでコンパイル時にエラーが発生する可能性があります
これについては心配する必要はありません。以前と同様に、終了し、バイナリ、保存、中間を削除してから再更新するのが正常です。
テスト:
ここを実行すると、ポインタNULLがここでわかっていることがわかります。実際、これは空の NULLが見つかったという意味ではなく、Unreal Engine に NULL という名前の OnlineSubsystem があるためです(これは接続のテストに使用できます) LAN内)。
次に、エディターでどのように設定しても、 steamではなく常にNULLであることがわかります。
次に、梱包して開けると、左上隅が蒸気に接続されていることがわかります。
ここでは、いくつかのSteam操作を行うことができます(邪悪なShift+Tabが表示されるウィンドウなど)