Upgrade Guide
For SDK versions that do not require special instructions, download the latest version of the SDK and replace the old SDK files with the new ones while keeping all configurations from the old versions.
For SDK versions that require additional actions, follow the upgrade guide for each version.
To upgrade SDK versions earlier than Player Network SDK V1.17, please reach out to the Player Network representative.
After upgrading the SDK, make sure you go through the checklist stated in this article.
Check Configurations
It is recommended to use comparison tools (such as "Beyond Compare") to compare and update the new version with existing ones.
SDK configurations
The paths of the INTLConfig.ini
file in a project are:
- Unity
- Unreal Engine
1.17.00 and later | 1.16.05 and earlier |
---|---|
INTLSDK/Scripts/INTLConfig/Editor/Resources/INTLConfig.ini | Android: /Plugins/Android/assets/INTLConfig.ini iOS: /Plugins/iOS/INTLSDK/INTLCore/INTLSDK.bundle/INTLConfig.ini Windows, PS5: /Plugins/x86_64/INTLConfig.ini Nintendo: /Plugins/Switch/INTLConfig.ini |
1.17.00 and later | 1.16.05 and earlier |
---|---|
INTLSDK/Source/INTLConfig/Configs/Resources/INTLConfig.ini | Android: INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/Android/assets/INTLConfig.ini iOS: INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/iOS/INTLCore/INTLSDK.bundle/INTLConfig.ini Windows, PS5: INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/resources/INTLConfig.ini Nintendo: INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/Switch/INTLConfig.ini |
It is recommended to compare each field so that every configuration in the INTLConfig.ini
file is correctly updated.
Firebase configurations
The path of the Firebase configuration file in a project is:
Android: Assets/Plugins/Android/google-services.json
iOS: Assets/Plugins/iOS/INTLSDK/INTLFirebase/ThirdSDK/GoogleService-Info.plist
Ensure that the Firebase configuration file for the platform the game is releasing on has not been deleted and is correctly configured in your project.
Gradle confiugrations
The paths of the Gradle files in a project are:
- Unity
- Unreal Engine
Unity 2018.x and earlier: \Plugins\Android\mainTemplate.gradle
Unity 2018.x and later:
\Plugins\Android\baseProjectTemplate.gradle
launcherTemplate.gradle
mainTemplate.gradle
/Plugins/INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/Android/INTLCore_UPL.xml
Ensure that the ID and other values in the configuration file have not been overwritten.
Info.plist
- Unity
- Unreal Engine
INTL{Plugin}Kit.projmods
is the Info.plist
configuration file for Player Network SDK. Player Network SDK reads the INTL{Plugin}Kit.projmods
file in the INTLSDK/Editor/XUPorter/Mods
directory and adds the imported bundle, framework, and other dependency packages in Xcode.
As each INTL{Plugin}Kit.projmods
file corresponds to a plugin, check and update the placeholders in all the .projmods
files before packaging.
For Player Network SDK V1.18 and later versions, check that all .plist
files in the INTLSDK/Source/INTLConfig/Configs/iOS/Plist/
directory are correctly configured.
For earlier versions of Player Network SDK, check that the Unreal Engine > Settings > Project Settings > Platforms > iOS > Extra PList Data is correctly configured.
For exact configurations required for each channel, see the tutorials for setting up the authentication service.
Swift conigurations
If the SDK plugin is in Swift, you'll encounter the mixed editing issue between iOS Swift and Objective-C. As a result, an iOS project that includes both Swift and Objective-C code will require a bridge layer in Xcode to align the class names of the two programming languages.
The Facebook and LINE plugins are in Swift, pay extra attention to this configuration when packaging in Xcode.
- Unity
- Unreal Engine
For Unity 2019.x, skip step 1 to step 4.
Create a new file of the Swift File type.
Specify the file name with an
.swift
extension, and click Create.Click Create Bridging Header.
noteMake sure to click Create Bridging Header. Otherwise, Xcode will not create a bridging header.
Check that two files are created in the Xcode project (one is the
.swift
file created in step 2, and the other is the automatically createdproject_name-Bridging-Header.h
file).infoDo not modify the file content.
In Xcode, go to UnityFramework and enter Library Search Paths in the search box on the upper right corner of the page.
Add the following configurations to Library Search Paths on the search results page.
(Keep the order consistent)
$(SDKROOT)/usr/lib/swift
$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)
$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME}Enter Other Linker Flags in the search box on the upper right corner of the page.
Add
-lswiftCompatibility51
to Other Linker Flags on the search results page.
Create a new file of the Swift File type.
Specify the file name with an
.swift
extension, and click Create.Click Create Bridging Header.
noteMake sure to click Create Bridging Header. Otherwise, Xcode will not create a bridging header.
Check that two files are created in the Xcode project (one is the
.swift
file created in step 2, and the other is the automatically createdproject_name-Bridging-Header.h
file).infoDo not modify the file content.
When using Xcode 12 or a later version, add the following code in
/Plugins/INTLSDK/Source/INTLCore/INTLCore.Build.cs
.PublicSystemLibraryPaths.Add("/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos");
PublicSystemLibraryPaths.Add("/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos");notePlayer Network SDK has already included the necessary code. However, the following error occurs when compiling Unreal Engine with the Swift library from Xcode 12 or later. For versions earlier than Xcode 12, you can skip this step.
Since the iOS Swift module cannot be directly added to Unreal Engine, you must modify the local Unreal Engine source code.
Add the following code in the
private void AppendProjectBuildConfiguration(StringBuilder Content, string ConfigName, string ConfigGuid)
function of/Your_UE_Installation_Path/Engine/Source/Programs/UnrealBuildTool/ProjectFiles/Xcode/XcodeProject.cs
.// Enable Swift
Content.Append("\t\t\t\tCLANG_ENABLE_MODULES = YES;" + ProjectFileGenerator.NewLine);
Content.Append("\t\t\t\tSWIFT_VERSION = 5.0;" + ProjectFileGenerator.NewLine);
Content.Append("\t\t\t\tLIBRARY_SEARCH_PATHS = \"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\";" + ProjectFileGenerator.NewLine);
if (ConfigName == "Debug")
{
Content.Append("\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";" + ProjectFileGenerator.NewLine);
}
Content.Append("\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;" + ProjectFileGenerator.NewLine);
Content.Append("\t\t\t\tEMBEDDED_CONTENT_CONTAINS_SWIFT = YES;" + ProjectFileGenerator.NewLine);Add the following code in the
string GetLinkArguments_Global(LinkEnvironment LinkEnvironment)
function of/Your_UE_Installation_Path/Engine/Source/Programs/UnrealBuildTool/Platform/IOS/IOSToolChain.cs
.// enable swift support
Result += " -rpath \"/usr/lib/swift\"";
Result += " -rpath \"@executable_path/Frameworks\"";
// /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/swift/
String swiftLibPath = String.Format(" -L {0}Platforms/{1}.platform/Developer/SDKs/{1}{2}.sdk/usr/lib/swift",
Settings.Value.XcodeDeveloperDir, bIsDevice? Settings.Value.DevicePlatformName : Settings.Value.SimulatorPlatformName, Settings.Value.IOSSDKVersion);
Result += swiftLibPath;
Log.TraceInformation("Add swift lib path : {0}", swiftLibPath);
///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
swiftLibPath = String.Format(" -L {0}Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/{1}",
Settings.Value.XcodeDeveloperDir, bIsDevice? Settings.Value.DevicePlatformName.ToLower() : Settings.Value.SimulatorPlatformName.ToLower());
Result += swiftLibPath;
Log.TraceInformation("Add swift lib path : {0}", swiftLibPath);
///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos
swiftLibPath = String.Format(" -L {0}Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/{1}",
Settings.Value.XcodeDeveloperDir, bIsDevice? Settings.Value.DevicePlatformName.ToLower() : Settings.Value.SimulatorPlatformName.ToLower());
Result += swiftLibPath;// This line of code must be prepended (see the sample image below for the position of the prepended code)
// enable swift support, make sure '/usr/lib/swift' goes before '@executable_path/Frameworks'
Result += " -rpath \"/usr/lib/swift\"";// enable swift support
Result += " -rpath \"@executable_path/Frameworks\"";
// /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/swift/
String swiftLibPath = String.Format(" -L {0}Platforms/{1}.platform/Developer/SDKs/{1}{2}.sdk/usr/lib/swift",
Settings.Value.XcodeDeveloperDir, bIsDevice? Settings.Value.DevicePlatformName : Settings.Value.SimulatorPlatformName, Settings.Value.IOSSDKVersion);
Result += swiftLibPath;
Log.TraceInformation("Add swift lib path : {0}", swiftLibPath);
///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
swiftLibPath = String.Format(" -L {0}Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/{1}",
Settings.Value.XcodeDeveloperDir, bIsDevice? Settings.Value.DevicePlatformName.ToLower() : Settings.Value.SimulatorPlatformName.ToLower());
Result += swiftLibPath;
Log.TraceInformation("Add swift lib path : {0}", swiftLibPath);
///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos
swiftLibPath = String.Format(" -L {0}Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/{1}",
Settings.Value.XcodeDeveloperDir, bIsDevice? Settings.Value.DevicePlatformName.ToLower() : Settings.Value.SimulatorPlatformName.ToLower());
Result += swiftLibPath;
// Xcode 12 adds the swiftCompatibility51 library, so you need to add the following code
if (Settings.Value.IOSSDKVersionFloat >= 14.0f)
{
Result += String.Format(" -lswiftCompatibility51");
}
Open the solutions and recompile
/Users/intl/UE4/UE_4.25/Engine/Source/Programs/UnrealBuildTool/UnrealBuildTool.sln
.
Channel specific configurations
For exact configurations required for each channel, see the tutorials for setting up the authentication service.