UE4/5 マルチプレイヤー ゲームの詳細説明 (2. OnlineSubsystem と OnlineSubsystemSteam を介して Steam に接続する。Steam ゲームで Steam のポップアップ ウィンドウを開くためのShift+Tab の実現など)

目次

IPアドレス

オンラインサブシステム

プラグインが開いています

モジュールのロード

構成の変更

CPP

テスト:


前回の記事では、同じ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が表示されるウィンドウなど

おすすめ

転載: blog.csdn.net/q244645787/article/details/130114773