4.7 Several project templates not fully working on Linux

After cloning and building the 4.7 branch on Linux Mint, I created a new project using the First Person Shooter template in the UE4Editor. The project was created successfully. I then played the project in the editor and noticed two problems. The boxes did not move when shot. Perhaps the physics is not working? IDK. And there was no sound. I was able to move around, collide with the boxes, and fire the weapon.

Next I tried creating a new project from the Rolling ball template. Again the project was created successfully. On this one, I wasn’t able to make the ball move. I tried debugging the blueprint and it acted as though it wasn’t getting the axis inputs. I checked the project settings and the Axis mappings looked correct.

I also tried both of these projects in my 4.6 branch and they worked correctly there.

branch 4.7 revision 6e54413ca6b71b541a3a8702e6cf1da87549ca52

The audio problem in this case was caused by a bug that prevented the platform specific ini file from being processed. And without the LinuxEngine.ini being processed, the [Audio] section controlling the audio initialization was never processed. Thus the audio didn’t work.

According to the documentation, the configuration hierarchy should be processed in the following order:

  1. Engine/Config/Base.ini
  2. Base.ini is usually empty.
  3. Engine/Config/BaseEngine.ini
  4. Engine/Config/[Platform]/[Platform]Engine.ini
  5. [ProjectDirectory]/Config/DefaultEngine.ini
  6. [ProjectDirectory]/Config/[Platform]/[Platform]Engine.ini
  7. [ProjectDirectory]/Saved/Config/[Platform]/Engine.ini

In my debugging, the Engine/Config/[Platform]/[Platform]Engine.ini was not being processed because the
wrong variable was being tested in making that ini hierarchy addition. During initialization the InPlatformName
argument to the GetSourceIniHierarchyFilenames function is passed as a null ptr and the FString instance “PlatformName” is created with the following line:

const FString PlatformName(InPlatformName ? InPlatformName : ANSI_TO_TCHAR(FPlatformProperties::IniPlatformName()));

This in turn constructs the PlatformName variable with the result of the FPlatformProperties::IniPlatformName() call since InPlatformName is null. Later in the code, the function incorrectly test the validity of the InPlatformName variable instead of the PlatformName variable.

This problem exist on the 4.7 branch and the master branch.

I have attached a diff of the change I made to fix the audio part(LinuxEngine.ini) of this bug.

diff

I see that a similar change was made on master branch a few hours ago.
Removed bad NULL platform check [UE-8875]

The developer chose to use
if (PlatformName.Len() > 0)
instead of
if (!PlatformName.IsEmpty())
for the fix.

I assume this will be merged to 4.7 soon.

After updating my 4.7 branch today, the physics problems have disappeared. Still waiting for the changes[UE-8875] mentioned above to be merged to the 4.7 branch.

The fix has been merged into the 4.7 branch.

Removed bad NULL platform check [UE-8875]

Both problems mentioned in this bug appear to be solved.