Direct Build

Platform(s): PC, macOS, Linux

Technologies: .NET (client), .NET Core (server), C#, fastlane, network programming, Ruby, Unity Editor 2019-2020 customization, Xcode

Team size: 1

Project Description

The original idea of this project was to solve an inefficiency in the development workflow: developers working on Windows machines couldn't build and deploy games for the iOS (and iPadOS) on their machines. For legal reasons, code for iOS can only be built on a Mac. Thus, developer that wanted to test even a little code change, had to go trough a manual, error prone and lengthy process, involving, among other things, to find a free Mac and physically go there to build their games.

With Direct Build, every manual step has been automated and developers can now continue working on their projects while letting a remote Mac machine build and deploy their games on iOS devices.

Various info shown by the Package Manager about the Direct Build package: author, description, version, etc.
Direct Build package information displayed by the Package Manager.

The original concept has been afterwards extended to also support:

  • Remote builds and deployments for the Android platform.
  • Publishing of the built games to Google Play and the Apple App Store.

Main Tasks

  • Developed the original idea and a small proof of concept during my free time. Eventually asked if Staay management was interested in such a product and received the approval to further develop it during my working time.
  • Responsible to write the whole solution, which comprises server and client code, and guaranteed that the server application was always up and running.
  • Extended the Unity Editor to integrate the Direct Build client within the Unity development environment. The client is distributed in form of a Unity package so that it can be easily added to any Unity project.

    Image showing that Direct Build can be added to a Unity project using the Package Manager.
    Direct Build can be added to Unity projects via the Package Manager.
  • Wrote the end user and admin documentations to explain respectively how to use Direct Build and how to configure the infrastructure required by the Direct Build server in order to operate.
  • Ensured that every project could be built with Direct Build and supported other team members with the automation of manual build-related activities. Reason: some projects required additional manual build steps in order to be built, mainly due to the integration of 3rd parties SDKs or libraries. The modification of the info.plist file for iOS games is a common case.