SwarmAgent for linux?

I have built the engine from source, am I missing something?

I can see the SwarmAgent.exe in DotNet, but there is no native Linux version of it?

Thanks!

So after digging in to this for another night it turns out that the SwamAgent is ran via Mono on Linux.
In “Engine/Binaries/DotNET” do “mono SwarmAgent.exe”

That’s all good but the one that comes with the engine is not compatible with Mono and building the engine does not rebuild the SwarmAgent.exe.

I figured out how to build it thou…

Install Mono here (Including mono-complete & mono-devel)

http://www.mono-project.com/docs/getting-started/install/linux/#debian-ubuntu-and-derivatives

Then from the “Engine/Source/Programs/UnrealSwarm/” folder run…

MONO_IOMAP=case xbuild /property:TargetFrameworkVersion=v4.0 /verbosity:quiet /nologo UnrealSwarm.sln

The only couple of issues you will have when you run the SwarmAgent now is that you will not be able to see it since there is no icon when running it via mono. In order to get it to show I had to edit the source.

Line 618 in “Engine/Source/Programs/UnrealSwarm/Agent/Display.cs”

From…
public static bool ShowWindow = false;

To…
public static bool ShowWindow = true;

(You could just edit the “SwarmAgent.exe.config” to change the binding IP)

Now the remaining issue I have is after all that it looks like, and it would be great if somebody can confirm, in order for the SwarmAgent.exe to make any network connections it needs the System.Deployment lib’s that are not supported by Mono and all references to them are commented out by #defines if building with Mono.

If anybody does make progress with this I would be glad to hear it!

Have you had any progress on this since posting the original message? I am also trying to get SwarmAgent working on Linux, but have hit a number of road blocks.

Hi JonS,

I never managed to get it working and have not revisited the issue since. Maybe Mono now supports the missing libs, but I have not tried since.

I revised this and after spending a day trying to get it working I gave up.

I turned my focus from using mono and instead focused on using Wine since I could not get around the missing dependency of the System.Deployment in mono.

I did manage to get a bespoke build of Swarm running and after removing all of the ping related code, that was checking for an alive connection but always failed, I got my windows machine to send jobs to the linux client.

Unfortunately the thread based proxy systems were taking far to long for me to debug and so I left it there.

If anybody wants to pick this up then you just need to get Wine running with .NET 4 (4.5 does not work), build Swarm using VS on windows and systematically disable the ping checks (Not much to this). Once you have that done you should see jobs being sent to the client running via Wine, but they will immediately fail since the thread that checks the connection dies within seconds.