4.13 Transition Guide

Thank you! And that’s strange because my code compile fine with 4.10 :confused:

They say this:

I guess what you got in 4.10 was “unexpected behavior” and now you get “an error.”

In 4.10 it will compile but the delegate will never execute. I got that issue in 4.13 IIRC.

Great to have a central forum thread for this again, thanks Rama!

SplineComponent curve data has changed

You can get this hint from the comments in USplineComponent as well, but posting it to make it easier for you guys. USplineComponent’s member variables SplineInfo, SplineRotInfo and SplineScaleInfo have been moved into one struct “SplineCurves”. Call USplineComponent::GetSplinePointsPosition(), GetSplinePointsRotation() and GetSplinePointsScale() to fetch them now. The curves are returned by reference so at places where you previously accessed SplineInfo you should only need to add one line. There is now also a const version of the Getter functions, for those who just want to read the data.

For example in a USplineComponent subclass:



SplineInfo.Points.Reset(10);


becomes



FInterpCurveVector& SplineInfo = GetSplinePointsPosition();
SplineInfo.Points.Reset(10);


4.13 Packaging Error

I managed to get my project compiling. I had to remove 'UPROPERTY’s inside ‘#if PLATFORM_WINDOWS’ statements, as well as remove the old SteamOSS from my Build.cs file and add the SteamOnlineSubsystem plugin instead.

However I can not package my game for Android and I get the following error:


UATHelper: Packaging (Android (ATC)): UnrealBuildTool: C:/Program Files (x86)/Epic Games/4.13/Engine/Binaries/Android/UE4-Icmp-armv7-es2.a(Module.Icmp.cpp-armv7-es2.o):function UDPEchoImpl(ISocketSubsystem*, FString const&, float): error: undefined reference to 'HtoNS(unsigned short)'
UATHelper: Packaging (Android (ATC)): UnrealBuildTool: C:/Program Files (x86)/Epic Games/4.13/Engine/Binaries/Android/UE4-Icmp-armv7-es2.a(Module.Icmp.cpp-armv7-es2.o):function UDPEchoImpl(ISocketSubsystem*, FString const&, float): error: undefined reference to 'HtoNS(unsigned short)'
UATHelper: Packaging (Android (ATC)): UnrealBuildTool: C:/Program Files (x86)/Epic Games/4.13/Engine/Binaries/Android/UE4-Icmp-armv7-es2.a(Module.Icmp.cpp-armv7-es2.o):function UDPEchoImpl(ISocketSubsystem*, FString const&, float): error: undefined reference to 'HtoNL(unsigned int)'
UATHelper: Packaging (Android (ATC)): UnrealBuildTool: C:/Program Files (x86)/Epic Games/4.13/Engine/Binaries/Android/UE4-Icmp-armv7-es2.a(Module.Icmp.cpp-armv7-es2.o):function UDPEchoImpl(ISocketSubsystem*, FString const&, float): error: undefined reference to 'HtoNL(unsigned int)'
UATHelper: Packaging (Android (ATC)): UnrealBuildTool: C:/Program Files (x86)/Epic Games/4.13/Engine/Binaries/Android/UE4-Icmp-armv7-es2.a(Module.Icmp.cpp-armv7-es2.o):function UDPEchoImpl(ISocketSubsystem*, FString const&, float): error: undefined reference to 'NtoHS(unsigned short)'
UATHelper: Packaging (Android (ATC)): UnrealBuildTool: C:/Program Files (x86)/Epic Games/4.13/Engine/Binaries/Android/UE4-Icmp-armv7-es2.a(Module.Icmp.cpp-armv7-es2.o):function UDPEchoImpl(ISocketSubsystem*, FString const&, float): error: undefined reference to 'NtoHS(unsigned short)'
UATHelper: Packaging (Android (ATC)): UnrealBuildTool: clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
UATHelper: Packaging (Android (ATC)): UnrealBuildTool: ERROR: UBT ERROR: Failed to produce item: C:\...\RobotDefenseCPP\Binaries\Android\RobotDefenseCPP-armv7-es2.so

The game packages just fine for Android with 4.12. And packaging for Windows still works just fine in 4.13. Any ideas what is going on?

Edit: The issue can be reproduced. Here’s the bug report. I am able to package for Android by disabling the “OnlineFramework” plugin, but that is obviously not a good solution, as the plugin is needed for Online Features.

Am getting link errors for: “FHttpModule::Get().GetHttpManager().Flush(true)”

Have the http module in my build requests (and made the onlinesubsystem plugin changes mentioned earlier. Http request from my App are working.

I (think I) need the flush to avoid crashes in callbacks hooked into my game objects.

Been getting a few “declaration of ‘X’ hides class member” warnings, anyone know what that’s about?

Just a stricter compilation setting. It means you’ve created a parameter/local variable with the same name as a class member variable. Won’t break anything but generally it’s a good idea to avoid doing this.

Huh? What am I suppose to do now? I couldn’t find anything related to “EPathFollowingResultDetails” in the 4.13 doc…

Also we can no longer access FAudioDevice::SoundClasses since it has become a private member.

Oh boy, I’m getting incorrect port number returned by OnlineSubsystemNull from 4.13 as well. (0 is returned instead of 7777.)
This only happen when the game is already connected to another server via a different port. (I have my game connect to a separated lobby server via ISocketSubsystem over port 3000.)

Could this be somewhat relate to this? ->Incorrect port number returned by OnlineSubsystemNull when server launched from editor - Community & Industry Discussion - Unreal Engine Forums.

I can replace the port number for now but I really hope Epic get this fix though…

;/

It becomes something like:


void OnMoveCompleted(FAIRequestID RequestID, const FPathFollowingResult& Result)
{
    result = Result.Code; // this will be the result you used earlier.
}


There are a number of other things bugging me about this though. The ‘Skipped’ result type has been omitted (and, seemingly replaced with an ‘Abort’ result accompanied by a ‘NewRequest’ flag, which isn’t actually exposed to blueprint). Since 4.13 I’ve also had troubles with ‘MoveToLocation’ requests terminating earlier than they should. I’m assuming I’m doing something wrong but even implementing a BT nearly identical to the one listed here A new, community-hosted Unreal Engine Wiki - Announcements - Epic Developer Community Forums has been giving me grief. A lot of the actors using the behavior tree just get their move requests cancelled after a couple of frames, which breaks them out of their ‘Move To’ task and assigns a new point to wander to; leading to super erratic behaviour. Has anyone else experienced a similar issue with 4.13 that can provide some tips?

Ah thanks snarfk. :slight_smile:

Well my advice is to really get down and debuging what’s going on with your AI line by line.
From the look of it your code might have called something repeatedly. Can’t say much without looking at the code, but good luck though.

Skeletal mesh components not getting AActor::NotifyHit

Attached is a simple 4.12.5 C++ project. All it does is just having a physics-enabled cube drop on the floor and display a single on-screen message when AActor::NotifyHit is called. The cube can be either static or skeletal (see comment in MyProjectBall.cpp).

I can see messages for both static and skeletal mesh in version 4.12.5, but I only see messages for static mesh in 4.13. Does anyone have the same problem?

A little hard to avoid when UE Project generated code creates it (example: InputComponent for PlayerCharacter in First-Person Shooter hiding Actor::InputComponent).

4.13 C++ Actor Component Changes - Compilation Error

Anyone having issues compiling in 4.13 after fixing the actor component changes? I can’t get 4.13 to recognize that I’ve already fixed the errors it was referring to in the code. This is my particular issue (too many lines for a screenshot): http://pastebin.com/PgxBTQQN - Any contributions that lead to a resolution will be rewarded. Thanks.

Seems like this is the only real issue:


UATHelper: Cooking (Windows): UE4Editor-Cmd: [2016.09.16-21.20.07:506]  0]LogOutputDevice:Error: Ensure condition failed: AttachmentRules.LocationRule == EAttachmentRule::KeepRelative && AttachmentRules.RotationRule == EAttachmentRule::KeepRelative && AttachmentRules.ScaleRule == EAtt
UATHelper: Cooking (Windows): UE4Editor-Cmd: [2016.09.16-21.20.07:506]  0]LogOutputDevice:Error: AttachToComponent when called from a constructor is only setting up attachment and will always be treated as KeepRelative. Consider calling SetupAttachment directly instead.

So I would suggest you check all your uses of AttachToComponent within construtors and make sure their attachment rule is EAttachmentRule::KeepRelative or use SetupAttachment as suggested by the error message.

You’re welcome Zhi!

And I would like to personally thank everyone who has contributed in this thread so far, combining our understandings and sharing our research has clearly already helped all of us and it is re-assuring to know that when questions arise there are community members willing to assist.

Together we are Victorious!

Rama

in general I’m very happy with 4.13, the stricter compiler can now reveal a lot of possible bugs by messages like “declaration of … hides class member” and “declaration if … hides previous local declaration”

Has anyone tried upgrading a project from 4.11 (or earlier) directly to 4.13?

I need to upgrade a project that is currently on 4.11. It has quite a few engine changes making it time consuming to upgrade, doubly so if I have to upgrade to 4.12 before upgrading to 4.13.

So if any of ya’ll have tried to upgrade 4.11 (or earlier) to 4.13 I would love to hear about the process and any pitfalls that occurred. Or if what I’m asking is completely crazy and I definitely need to upgrade every piece in order I’d like to know so I don’t spin my wheels attempting the impossible.

When I implement the following code to my Build.cs file:

if (UEBuildConfiguration.bCompileSteamOSS == true)
{
DynamicallyLoadedModuleNames.Add(“OnlineSubsystemSteam”);
}

I get the error: “error CS0619: ‘UnrealBuildTool.UEBuildConfiguration.bCompileSteamOSS’ is obsolete: ‘To use OnlineSubsystemSteam, include the OnlineSubsystemSteam uplugin in your uproject’”