Unreal Engine

すべてのC++ベースのPhoton SDKは、既製のUnreal Engineと互換性があります。

Unreal Engine SDKと組み合わせて使用できるマルチプレイヤーSDKの詳細は、以下のとおりです。

PhotonSDKはすべて、ダウンロードページから入手可能です。

はじめよう

Unreal Engine SDKと互換性のあるPhotonマルチプレイヤーゲームSDKを統合するには、以下のステップにしたがってください。

  1. UNREAL ENGINE SDK Unreal Engine SDKをダウンロードしてください

  2. 対象のプラットフォームのPhoton SDKをダウンロードしてください

  3. Unreal 'C++' プロジェクトのみがサポートされています。

  4. 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)
    
  5. Unrealヘッダーとの非互換性に対応するため、Photonヘッダーを修正します。FLOATEG_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;
    
  6. 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
    
  7. 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"));
    }
    
  8. プロジェクトソース内に、適切な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
    
  9. インポートしたPhoton APIをプロジェクトのソースコードに使用してください。

  10. 選択したプラットフォーム用に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で置き換えます。
  • 再生をクリックします。
Back to top