Our deployment strategy evolved naturally with the project. In the Pre-Alpha, we deliberately avoided rigid pipelines to keep our proof-of-concept flexible.
By the Alpha, we had split our environments into Dev, Staging, and Production to isolate each environment with stable testing builds at each stage. During the Beta, we had created the full CI/CD pipeline to automate our deployment and testing workflows, ensuring that all code changes could be safely verified and pushed across our isolated environments without disrupting the live game.
To achieve this seamless delivery, we optimized both our deployment pipeline and asset infrastructure:
● GitHub Actions: We integrated automated testing into our repository. Code is now automatically verified before any deployment, catching bugs early before they can reach a live environment.
● Isolated Environments on AWS EC2: We deployed dedicated virtual servers for each phase of the project. This structural separation ensures that heavy development work or testing spikes never interfere with production gameplay.
● Unity Addressables: Instead of forcing players to download a massive game file, we broke the assets down into versioned bundles. Now, updating a specific asset bundle only forces a download for that exact piece, drastically reducing patch sizes.
● S3 & CloudFront: We hosted our asset bundles on AWS S3 and paired it with the CloudFront CDN, ensuring incredibly low asset loading latency for players connecting from anywhere in the world.
● We Coordinated Client-Side Caching: We aligned the browser cache and the CDN to allow the game to download just once and run locally. When a new build goes live, automated invalidation rules trigger, updating only the files that actually changed.