ARK: Survival Evolved

My first experience of console game development and wow was it an unforgettable one. Just the idea of porting a game like ARK to the Nintendo Switch was and is crazy. The codebase is Unreal Engine 4.5.1 and the first version with reasonable Switch support was 4.18.0, the amount of custom engine modifications made the prospect of upgrading almost impossible. As such the company, with very limited resources, attempted to backport major features, extend the engine where necessary and in some cases rewrite entire fundamental systems.

I joined the project after a small group of extremely talented programmers had already got the game somewhat working on the Switch. Initially I spent time getting the game certification-ready while the more experienced programmers were trying to get performance and visual quality to at least a reasonable level. This involved extensive work on fixing localisation issues, text rendering issues, implementing parental controls in online modes and at points extending the Switch build pipeline to create packages that we could actually submit for certification.

The longer I was on the team the more my responsibilities grew. I ended up handling the creation and maintenance of our test servers, overhauling our documentation so other programmers could be on-boarded quickly and eventually I became the primary maintainer as we approached release. Often I found myself diving deeply into the engine, fixing the online subsystem, dealing with object serialisation, attempting to fix issues with our custom multi-threaded garbage collector as well as making other deep engine fixes.

The project became abandoned for a while until we had more firm plans on improving the port. Due to my knowledge of the project I went on to take our dual Git+SVN repository and combine it into a single Git LFS repository whilst maintaining the full history. This allowed us to significantly improve our workflows which led to me producing lots of documentation to help teach my colleagues, even to the extent of helping other teams make the transition to Git LFS and the new branching/merging policies we had introduced.

Sadly for reasons I can’t divulge I consider the Switch port of ARK to be the worst project I’ve ever worked on and I feel incredibly badly for the fans who bought it. Many mistakes were made from many different parties and unfortunately it was the fans who suffered the most because of that.

Personally I learned a lot during this project, it was an extreme trial-by-fire which I managed to survive. Unfortunately the fate of the project was sealed early on so as much as I tried to push for a higher quality release there was not much that could be done at the time.

  • One day the size of the game patches ballooned in size. Nothing had changed and yet it was consistent for all future builds. This was such a deep-rooted bug that I had to use WinMerge to diff two Unreal PAK files and analyse the binary data to figure out what was wrong. Eventually using some debugging wizardry I discovered that a struct was being created on the stack and written to disk with 3 bytes of uninitialised padding. It had changed from 0x00 to 0xCD values and my only option was to manually set the padding values or else our patches would be rejected by Nintendo

  • Nintendo Switch

  • 6 months

  • 4-6 people

  • DevOps, Engine Programming, Tools Programming, UI Programming

  • C++, C#, Powershell, Unreal Engine 4, Git LFS, SVN, Bitbucket, Visual Studio, Jira, FASTBuild

Previous
Previous

PixARK (Nintendo Switch, Playstation 4, Xbox One)

Next
Next

ARK: Aberration (Windows)