GameLift not support in Unreal 4.17

Gamelift plugin is currently not support for unreal 4.17 and up.

Will this issue be addressed any time soon?

Are you getting boost compile error? If so, check this thread: https://forums.awsgametech.com/t/compiling-gamelift-for-visual-studio-2017/4013/1

Hello @KillerPenguin -

Yes, we are aware of the GameLift plugin not supporting UE4 4.17 released a few months ago. The good news is that we are looking at updating that compatibility in the near future.

As a temporary workaround, you could attempt to integrate the GameLift C++ Server SDK directly. The GameLift plugin for Unreal Engine is just a lightweight wrapper around the GameLift C++ Server SDK that translates types and parameters into Unreal-friendly formats.

I apologize that we have to offer you a workaround here and will report back once we have 4.17 properly supported.

Dear MisterGameLift,

Can you provide some more in-depth info about how we should do it? There’s many folder/libs in GameLift C++ Server SDK and I’m not sure which one to use for Unreal. (Your SDK is huge too, and the output is so small… are those files really necessary?)

I think it’s easier if you tell us how to do it ourselves, so you don’t have to do it every updates+ we also don’t have to wait. But you have to give us some guidance about it, rather than having us digging through your SDK ourselves.

ps. Yeah I agree, having to download the whole SDK just to make two small files is way overkill.

I think there should be a solid one were us users don’t have to download make files and the whole nine yard

Hey @KillerPenguin - we have come across a workaround that might correct the issue with the GameLift Unreal plugin. We have not tested it yet but since it seems like a lot of folks are blocked here, we wanted to get it out as fast as possible. It involves changing 2 lines in GameLift_EXPORTS.h

  1. remove the check for WIN32 defined
  2. define AWS_GAMELIFT_API as #define AWS_GAMELIFT_API __declspec(dllimport)
    After making these changes, another GameLift customer was able to get the plugin compiling without issues and working under UE4 4.19.

Can you give this a try and let us know if it works for you too?

Well I tried, don’t know if I get this right, but nothing is generated after I rebuild the plug in…

  #pragma once
#include <string>
#include <vector>
#if defined (_MSC_VER)
#pragma warning(disable : 4251)
#ifdef USE_IMPORT_EXPORT
#ifdef AWS_GAMELIFT_EXPORTS
#define AWS_GAMELIFT_API __declspec(dllexport)
#else
#define AWS_GAMELIFT_API __declspec(dllimport)
#endif /* AWS_GAMELIFT_EXPORTS */
#else
#define AWS_GAMELIFT_API __declspec(dllimport)
#endif //
#else /* defined (_WIN32) */
#define AWS_GAMELIFT_API __declspec(dllimport)

#endif

So… been almost a week. Any update?

Can you try using this code as a starting point?


#pragma once
#ifdef _MSC_VER
//disable windows complaining about max template size.
#pragma warning (disable : 4503)
#endif // _MSC_VER
#if defined (USE_WINDOWS_DLL_SEMANTICS) /* || defined (WIN32) */
#ifdef _MSC_VER
#pragma warning(disable : 4251)
#endif // _MSC_VER
#ifdef USE_IMPORT_EXPORT
#ifdef AWS_GAMELIFT_EXPORTS
#define AWS_GAMELIFT_API __declspec(dllexport)
#else
#define AWS_GAMELIFT_API __declspec(dllimport)
#endif /* AWS_GAMELIFT_EXPORTS */
#else
#define AWS_GAMELIFT_API
#endif // USE_IMPORT_EXPORT
#else // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32)
#define AWS_GAMELIFT_API __declspec(dllimport)
#endif // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32)

Is this for aws-cpp-sdk-gamelift-server.dll and aws-cpp-sdk-gamelift-server.lib build?

Can you just build it and put a link up for us to download?

Hi @KillerPenguin, what specific issue are you running into? If you haven’t already can you try following the instructions here?

I hope this helps, let me know where you’re getting stuck and we’ll dig in deeper.

Ben

No, not just editor. When I add gamelift in .uproject, the game refuse to open with the message saying 4.17 is not supported for this plug in, and I need to shut it down.

And yes, I followed every step on your guideline.

Basically you guys never update it so it’s just not support in UE4.17 period. Believe me, I would do anything to make it work without going around asking you guy to update it.

SO BACK TO ORIGINAL QUESTION: WHEN ARE YOU GOING TO FIX THIS? Almost a month going round and round now, getting really frustrated. Will this be a problem every update in the future?

Is this the popup you’re seeing in 4.17?

5848-unrealnotcompatablewarning.png

If
so, this is a bug in UE4.17. You can choose ‘No’ and continue. In 4.17 they changed the logic of how plugins are loaded. Take a look at Engine\Source\Runtime\Projects\Private\PluginManager.cpp. You can see at the top of the message it says ‘Missing Plugin’. This is because you have specified the plugin but it hasn’t been compiled yet.

They fixed the verbiage in 4.18.

Here’s the 4.17 message from source:

Message = FText::Format(LOCTEXT("DisablePluginMessage_IncompatibleEngineVersion", "This project requires the '{0}' plugin, which is not compatible with the current engine version.\n\nWould you like to disable it? You will no longer be able to open any assets created using it."), FText::FromString(PluginName));

Here’s the updated message in UE4.18:

Message = FText::Format(LOCTEXT("DisablePluginMessage_MissingOrIncompatibleEngineVersion", "Binaries for the '{0}' plugin are missing or incompatible with the current engine version.\n\nWould you like to disable it? You will no longer be able to open assets that were created with it."), FText::FromString(PluginName));

In the new message they make it clear that it’s the binaries that are missing. Once you build the plug-in it no longer pops up with that message. You can also upgrade to 4.18.

If you are experiencing a different message can you upload it to the forum so I can investigate?

Sorry for the frustration this is causing. I agree that it is confusing.

Ben

@KillerPenguin

Great, we can dig in here. This means that there is some other error keeping you from compiling. Unfortunately the Unreal Editor doesn’t provide an output for why the build is failing. However the following dialog recommends you compile from source.

5862-rebuildfromsource.png

What it’s telling us to do here is to build with Visual Studio. I replicated this dialog by adding an extra comma to my build.cs.

Open your solution with Visual Studio and try to build. The output window at the bottom will let you know what errors you are encountering. In this case for me it’s that extra comma.

Once I fix it I can build and use the GameLiftServer plugin without issue.

Let me know what you find out!

Ben

Okay let’s get specific.

So after we compile aws-cpp-sdk-gamelift-server.dll and aws-cpp-sdk-gamelift-server.lib and add them all along with the GameLift folder+ added plugin to .uproject, we got this:

5859-missing1.jpg

Then after we hit ‘no’ we got this:

5860-missing2.jpg

What do you want us to do? Clicking yes said build fail, clicking no just shut the thing down.

ps. I still have no clue where do you get UE4Editor-GameLiftServerSDK.dll. I tried renaming aws-cpp-sdk-gamelift-server.dll to it and it didn’t work either.

I confirmed GameLift is working with UE4 4.17 and 4.18. I’m testing Flexmatch.

https://www.youtube.com/watch?v=8-pkjgSx2qI

If you add engine version to .uplugin, UE editor won’t warn you.

“EngineVersion”: “4.17.0”,

I tried building from source, but it also gave me the same build error. ->

[1/1] Link UE4Editor-GameLiftServerSDK.dll
2> Creating library D:\XXXXXXX\Plugins\GameLiftServerSDK\ThirdParty\GameLiftServerSDK\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-GameLiftServerSDK.suppressed.lib and object D:\XXXXXXX\Plugins\GameLiftServerSDK\ThirdParty\GameLiftServerSDK\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-GameLiftServerSDK.suppressed.exp
2>Module.GameLiftServerSDK.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl Aws::GameLift::GameLiftError::~GameLiftError(void)" (__imp_??1GameLiftError@GameLift@Aws@@QEAA@XZ) referenced in function "public: __cdecl FGameLiftError::FGameLiftError(class Aws::GameLift::GameLiftError)" (??0FGameLiftError@@QEAA@VGameLiftError@GameLift@Aws@@@Z)
2>D:\XXXXXXX\Plugins\GameLiftServerSDK\ThirdParty\GameLiftServerSDK\Binaries\Win64\UE4Editor-GameLiftServerSDK.dll : fatal error LNK1120: 1 unresolved externals
2>ERROR : UBT error : Failed to produce item: D:\XXXXXXX\Plugins\GameLiftServerSDK\ThirdParty\GameLiftServerSDK\Binaries\Win64\UE4Editor-GameLiftServerSDK.dll

Here’s the plugin folder and the built .dll and .lib

Adding “EngineVersion”: “4.17.0” totally fixed it. Even with editor too. Thx!

This is with 4.17? Are you using the original GameLift_EXPORTS.h that shipped with the plugin?

That error is what you will see if you use the 4.19 fix on an earlier version.

Hey @Shin, I tried adding the EngineVersion field to our .uplugin but the warning still popped until I opened the editor. Could you do me a favor and delete the binary folder from Plugins\GameLiftServerSDK and see if it still warns you? If not, can you post your uplugin file? I’d really like to clear this up as it’s very confusing for end users.

By the way, nice video!

Thanks,

Ben