Packaging for cross-platform network play (4.5.1) / package mismatch errors

As is consistent with a compliment sandwich (I think open faced in this case), I would first like to express my gratitude for UE4. It’s totally great. I love working with it, and I’m still jazzed every day that I get replicated vehicle physics out of the box, and improvements like C++ hotreload have made working with the engine on a daily basis even more pleasant. Making the source available on top of all of that is just fantastic.

I am super excited (and impressed) that UE4 supports cross platform network play. In 4.4.3, I was able to create Win64 and Mac client builds for my game and connect both to a Linux dedicated server. Since then, I’ve upgraded my project to 4.5.1 (specifically, SHA: ad6f983, tags/4.5.1-release) and can no longer package a compatible Mac build. I can’t connect a Mac client to a Windows or Linux server, but the Win64 client can connect to both. The servers are built using the same packaged content as the Win64 client, so the latter compatibility is no surprise. I’ve detailed as much as I can and what little progress I’ve made digging into this problem on my own here: Package mismatch: Mac client cannot connect to server - Programming & Scripting - Unreal Engine Forums.

My question is most likely a duplicate of this one: Can't initiate network game between mac and windows builds - Multiplayer & Networking - Unreal Engine Forums

I would like to give two pieces of feedback:

  1. Please address the packaging issues introduced with 4.5.1, they are release-blocking
  2. Please consider introducing automated regression protection for features like packaging

Rolling back to 4.4.3 isn’t a great option for my current release as I’m taking advantage of several of the changes introduced in 4.5.1. I’m going to continue digging through the engine source in an effort to solve this issue myself, but the packaging/GUID code is completely unfamiliar to me so I suspect it will take me a while. I admit, it is also not what I want to be working on. My drive to fix it myself is a direct result of wanting to ship the next iteration of my game.

I’m most interested in ensuring that this functionality won’t break in future releases, as it is an integral part of shipping software with the engine. Would Epic consider introducing an automated test for cross platform packaging compatibility?

As always, thanks for your hard work and fantastic product. Your engine is allowing me to be a game developer, and I love that.

+1000 for your exceptionally pleasant yet extremely important constructive feedback

:heart:

Rama

Thanks, Rama!

Hello Epic, I just wanted to follow up and make sure you guys were aware of this issue. I’m currently blocked from releasing the next iteration of my game (many of my testers are Mac users). If it’s possible to just disable the GUID check I would be happy take that route.

Thanks!

We will try to repro this locally and then will follow up on the issue. Meanwhile you can set net.IgnorePackageMismatch=1 in DefaultEngine.ini (in [ConsoleVariables] section).

Thanks RCL, packaging now to give it a try. I’m super excited!

I was digging through engine source looking for a setting like this. Even now, when I do something like ag IgnorePackagMismatch (ag is like grep and ack but faster), nothing turns up. I’m going to look through all of the ConsoleVariables references to see if I could have deduced it from there. If you have a minute, could you explain how these work or point me to the right place? Searching google for net.IgnorePackageMismatch results in 1 hit - this thread. :smiley: I feel like a dummy for not finding this setting!

Update: Nevermind that question, I see that it’s only in the 4.6 branch. I should have checked there initially. I applied the changes in the 4.6 PackageMapClient.cpp related to the console var and I can successfully connect Mac and Win64 builds to a Linux server now. I am now very jazzed. Thanks!

Renamed to net.IgnoreNetworkChecksumMismatch now.