Cooking and packaging on a separate server - possible?

We’re currently trying to get things set up so our college’s Games Development course can do Unreal Engine development for Meta Quest VR headsets. Unfortunately, we’re currently at a showstopper position, because the packaging process for Android in Unreal Engine calls Command Prompt, which is blocked for our student users for cyber security and safeguarding reasons.

I was wondering if there is a way that students could submit their Unreal projects to some kind of server for cooking and packaging, and then receive the cooked/packaged versions back, allowing them to then deploy to a target device? If such a server software exists, is there a guide on what the requirements would be and how we could set it up?

1 Like

I used to live in Cambridge, and had mates that went to LRSFC, so very strange to be replying to this from Amsterdam :smiley:

I don’t know much about remote services with the engine, to be fair, but couldn’t find anything that looked like this.

I’m thinking if it’s possible to have student project folders mounted from a network share residing on the central server, then I would say it’s pretty straightforward to build on that server, as all the student projects would be local to it.

As long as the students have some sort of ‘build’ button, that triggers the correct shell command on the server.

Just an idea…

@ClockworkOcean yes, the student home folders are mounted from a network share.

The specific issue is that the Android build process calls cmd.exe /c to run the “rungradle.bat” for Gradle to create the .apk, and unfortunately cmd.exe is disallowed on student accounts, so I was thinking if there was a way they could submit or send a cook/package job to a dedicated server which would run under a service account that didn’t have that restriction, then that would be a way around it.

I’m unsure how to implement this or whether we’d need any special kind of server for it though (e.g. would it need to have a GPU, how much RAM/cpu cores etc) hence my post here.

1 Like

I might be missing the point, but what I mean is, run the cmd.exe from the server. So the student has some sort of utility to signal the server to initiate it’s own build. Does it make sense?

The server would need a GPU, yes.

@ClockworkOcean no this call to cmd.exe is not within our control, it is something that Unreal Engine does automatically during the Android build process.

We only know how to do the build process through the GUI, we are looking to find out whether there is a command line way to do the equivalent of Platforms → Android → Cook Content and Platforms → Android → Package Project, and also what is the minimum software installation we would need to be able to do those two commands on a server, and what the hardware requirements would be.

1 Like

So they don’t use the usual build command. They need to use a utility you have written, to signal the server that their project needs building. How you do that is up to you.

The server will need the full UE5 install and to have a GPU. It should also have access to the student files, so can build it them with a command line, just like it is it’s own project.

All the server does is something like

D:\Epic Games\UE_5.4/Engine/Build/BatchFiles/RunUAT.bat" BuildCookRun -noP4 -platform=Win64 -cook -build -stage -pak -archiveddirectory=D:\ -project=D:\soar-packaging\Soar.uproject -clientconfig=Shipping

This is a random build command I just found on the net, but it’s the principle of the thing :slight_smile:

I think ( not at a machine rn ) that if you use runUAT without params, it will give a usage message. Also, you can see in the log what command is being used by a standalone system ( when you do a build on a machine that can do this normally ).

1 Like

@ClockworkOcean that’s really helpful, thank you! I think we’ll try to do some kind of proof of concept using a spare machine or something, as we don’t know how much demand there will be and so the powers that be will be reluctant to spend money on it.

1 Like

Sounds good :slight_smile:

Getting the scheduling right ( the comms between clients and the server ) might be a bit of fiddle, but worth it.

Another option, is the server is watching an inbox for messages, and a student can just send a basic message with a subject like ‘Studentname:Projectname’ and the server picks these up and adds them to the list to build. It would still take a bit of pyton / DOS script knowhow, but not much.

1 Like