Unreal Engine
すべてのC++ベースのPhoton SDKは、既製のUnreal Engineと互換性があります。
Unreal Engine SDKと組み合わせて使用できるマルチプレイヤーSDKの詳細は、以下のとおりです。
- Android (NDK)
- Emscripten (HTML5)
- iOS
- Linux
- Mac OS X
- Nintendo Switch)
- PS4
- PS5
- tvOS
- UWP
- Windows Desktop
- Xbox One / Xbox Series S/X GDK
- Xbox One XDK
PhotonSDKはすべて、ダウンロードページから入手可能です。
はじめよう
Unreal Engine SDKと互換性のあるPhotonマルチプレイヤーゲームSDKを統合するには、以下のステップにしたがってください。
Unreal 'C++' プロジェクトのみがサポートされています。
Unrealプロジェクトの「Source」フォルダの「Photon」フォルダに、任意のPhoton SDK(Windows、Android、またはiOS)を解凍します。
ヘッダーファイルと、事前にビルドされたライブラリのみが必要です。複数の異なるプラットフォーム用にライブラリを追加することもできます。
フォルダレイアウトの例:text
\---Source +---Photon | +---Common-cpp | | \---inc | | (*.h) | +---LoadBalancing-cpp | | \---inc | | (*.h) | |---Photon-cpp | | \---inc | | (*.h) | +---lib | | +---Android | | (*.a) | | +---iOS | | (*.a) | | \---Windows | | (*.lib)
Unrealヘッダーとの非互換性に対応するため、Photonヘッダーを修正します。
FLOAT
をEG_FLOAT
に名称変更するか、
または参照プロジェクトからSource\Photon\photon.patch
を適用します。C++
Photon/Common-cpp/inc/Enums/TypeCode.h @@ -18,7 +18,7 @@ - static const nByte FLOAT = 'f'; /**<float*/ + static const nByte EG_FLOAT = 'f'; /**<float*/ // Photon/Common-cpp/inc/Helpers/ConfirmAllowed.h @@ -76,7 +76,7 @@ - static const nByte typeName = TypeCode::FLOAT; + static const nByte typeName = TypeCode::EG_FLOAT; // Photon/Common-cpp/inc/Helpers/ConfirmAllowedKey.h @@ -43,7 +43,7 @@ - static const nByte typeName = TypeCode::FLOAT; + static const nByte typeName = TypeCode::EG_FLOAT;
Unrealでコンパイルした場合に現れる、RTTI検出問題を修正するためにPhotonヘッダーを修正します:
C++
Photon/Common-cpp/inc/Helpers/TypeName.h @@ -14,7 +14,7 @@ -#if defined _CPPRTTI || defined __GXX_RTTI || !defined __clang__ && !defined _EG_PS4_PLATFORM && !defined _EG_PSVITA_PLATFORM && defined __GNUC__ && (__GNUC__ < 4 || __GNUC__ == 4 && (__GNUC_MINOR__ < 3 || __GNUC_MINOR__ == 3 && __GNUC_PATCHLEVEL__ < 2)) +#if defined _CPPRTTI || defined __GXX_RTTI
Unrealプロジェクトの "*.Build.cs" ファイルを編集して、特定のプラットフォーム用のライブラリを読み込み、Photonプラットフォームを定義します。
Unrealドキュメントと、以下にリンクされているデモ Source/PhotonDemoParticle/PhotonDemoParticle.Build.csを参照してください:C#
private string PhotonPath { get { return Path.GetFullPath(Path.Combine(ModulePath, "..", "Photon")); } } // if ( Target.Platform == UnrealTargetPlatform.Android) { // Set _EG_WINDOWS_PLATFORM for Windows, _EG_IPHONE_PLATFORM for iOS and _EG_IMAC_PLATFORM for OS X Definitions.Add("_EG_ANDROID_PLATFORM"); // PublicAdditionalLibraries.Add(Path.Combine(PhotonPath, "lib", "Android", "libcommon-cpp-static_debug_android_armeabi_no-rtti.a")); PublicAdditionalLibraries.Add(Path.Combine(PhotonPath, "lib", "Android", "libphoton-cpp-static_debug_android_armeabi_no-rtti.a")); PublicAdditionalLibraries.Add(Path.Combine(PhotonPath, "lib", "Android", "libloadbalancing-cpp-static_debug_android_armeabi_no-rtti.a")); }
プロジェクトソース内に、適切なPhoton API ヘッダーと、いくつかの回避策を含めます。 参照プロジェクト内の"source\photon-import.h"を以下に示します。
C++
#ifdef __clang__ #pragma clang diagnostic ignored "-Woverloaded-virtual" #endif #if _EG_WINDOWS_PLATFORM #include "AllowWindowsPlatformTypes.h" #endif #pragma warning (disable: 4263) #pragma warning (disable: 4264) #include "LoadBalancing-cpp/inc/Client.h" #pragma warning (default: 4263) #pragma warning (default: 4264) #if _EG_WINDOWS_PLATFORM #include "HideWindowsPlatformTypes.h" #endif
インポートしたPhoton APIをプロジェクトのソースコードに使用してください。
選択したプラットフォーム用にUnrealプロジェクトをビルドします。
備考
Unreal iOSビルドに関するヒントは、以下で参照できます。
すぐに実行可能なデモ
すぐに実行可能なPOCはこちらからダウンロードしてください。
- 上記のステップ1と2にしたがってください
- ダウンロードしたパッケージを解凍
- 上記のステップ4にしたがってください
- /PhotonDemoParticle.uprojectのコンテキストメニューを開き、「Visual Studioプロジェクトファイルを生成」を選択します
- 複数の異なるバージョンのUnreal Engineを所有している場合には、対象のエンジンバージョンを選択してOKをクリックします。
- UEがプロジェクトファイルを生成します。これには数秒間かかることがあり、UEは「Generating」メッセージボックスを消すことで、完了を示します。
- Visual Studioで「PhotonDemoParticle.sln」を開きます
- ソリューションプラットフォームとして、「Win64」を選択します
- ソリューション構成として「DebugGame_Editor」を選択します
- ソリューションエクスプローラーでGames/PhotonDemoParticleへと進み、そのプロジェクトをビルドします
- そのVSプロジェクトをデバッグまたは実行しますーこの結果、photonDemoParticleがUEプロジェクトとして読み込まれ、UEエディタが起動します
- UEエディタのの「World Outliner」タブから、「PhotonLBClient」 -> 「Demo」 -> 「App ID」へと進みます。
- そのフィールドの内容を、弊社ウェブサイト内のあなたのダッシュボードに表示されているAppIDで置き換えます。
- 再生をクリックします。