SDG Blog

"Remember to put a witty tagline here!" – 2022 edition.

Unturned II Devlog #011

Beware all ye' who enter: mostly technical focused post ahead!

Earlier this week saw the release of Update Notes

Aside from that I got quite a bit done on 4 as well! My focus this week was on setting up Continuous Integration. To recap: this means that any time I make a change (e.g. adjusting some code), my laptop will pick up the change a run a series of tasks on it.

Continuous Integration (CI)

Right now this includes running tests to make sure that nothing was broken, exporting the game for Windows + Linux, and if I include "+SteamDeploy" in the change details it will automatically upload the new version to a beta branch on steam. I'm pretty excited that this will allow for much faster turnaround and stability, and I expect this beta branch will be open as an option once the Unturned II beta is released.

To catch any issues the CI server finds early I also built some tools for the Unreal Editor which keep an eye out and pop up a notification when an error occurs:

I'm pretty happy with the level of polish I put into all these features, and I really think it will benefit the game in the long term. I was also able to protect against issues that 3.x had in the past from happening for Unturned II, like automatically downloading steamcmd and the steamclient libraries so that the dedicated server will always be using the latest API. Maybe once Unturned II is actually available I'll buy a proper server to run these rather than my laptop. 🙂

Next Up

Still have a bunch of stuff to do for 3.x, but for Unturned II I think next I'll either work on some of the server administration features like Rcon and permissions, or return to the character model improvements I was working on before I burned out. Hopefully more info soon!

UAT Implementation Details

(for other Unreal Engine devs)

I haven't seen this talked about much online, but you can create a .Automation.csproj for your game to call directly into other UAT BuildCommands. This avoids getting tangled up in pages of command-line arguments, instead allowing you to create your own switches as needed. For example rather than using BuildCookRun I have Jenkins call RunUAT.bat U4_BuildCookGame -WinClient -WinServer -LinuxServer.