Week 4 — Ship It and Get Hired · w4d1 · 4h 14m

W4D1: Workflow, building and publishing

Week 4 opener on real-world Unity workflow: GDD to roadmap, task tracking, launch prep, then live builds for Mac, WebGL, Android and iOS.

Lucian Lazar · 29 Jul 2024

The last week of the course starts with the unglamorous half of game development: planning a project, tracking it, getting it onto a store, and keeping it alive after launch. Lucian spends the first half on process and the second half actually building and shipping the Duck Invaders project to four platforms, including a real Google Play internal testing release and an Apple Developer enrollment done live. If you can write gameplay code but have never turned a Unity project into something a stranger can play, this is the session that closes that gap.

What’s covered

Course admin and the certificate

  • How the final test works: roughly 100 mostly multiple-choice questions drawn from all twenty days, weighted toward MonoBehaviour event order, prefabs and prefab variants, and basic C#.
  • The second half of the certificate is a project assignment — a small 2D platformer or similar, a few days of work, graded subjectively.
  • Lucian’s blunt view on why he built it this way: he doesn’t want to encourage a world where people collect diplomas, and he’s openly running the free course as an experiment to see whether free motivates people to actually do the work.

Starting a project properly

  • Time horizon first. Whatever you estimate, double it. The longer the horizon, the more the game design document has to carry.
  • A GDD for a real commercial game is three to five pages: overview, story and progression, target platforms and their order, sub-games, graphics and sound direction, monetisation. For the course assignment, one or two pages.
  • Why deciding “mobile or not” early is a Pareto decision — costs nothing today, saves weeks six months in.
  • Milestones as energy, not motivation. Ship something visible every week so the reward compounds.
  • Alpha, beta, release mean whatever you decide they mean. Beta is more finished than alpha. Don’t let anyone tell you otherwise.

Tools and process

  • Trello for small projects, Jira for medium and large, Notion as a possible replacement for all of it. Confluence as the project wiki that ties into Jira.
  • The trap of doing work to feel like you’re progressing. If your GDD says you’re at 46% and you were at 46% last week, the tracking board isn’t the problem.
  • Kanban versus Scrum, story points as perceived complexity rather than hours, and why a stable velocity lets you predict the future.
  • canny.io as a lazy but effective feedback board — users post, users upvote, prioritisation happens for free.

Launch and promotion

  • Build in the open. Lucian reckons out of the 80% of developers who won’t show their game, maybe one in ten is actually right to hide it.
  • Instagram skews friendlier to visual and art posts, Twitter needs Blue for reach as of 2024, post under your own name if you can.
  • itch.io as the free, low-friction alternative to Steam for a first release. Kickstarter as a validation and funding path worth trying.
  • Store dashboards eat far more time than you expect: privacy policy, terms, content ratings, screenshots, feature graphics, per-country targeting. Start as an individual account, upgrade to a company later.
  • LiveOps: events, holiday bonuses, changing the main menu background — cheap ways to make a game feel alive. The Counter-Strike 1.6 message of the day as the original example.

Building for real

  • Write once, build everywhere, with the caveat that Mac and iOS builds need a Mac (or a rented one via MacInCloud at around $25/month).
  • Android: creating a keystore from the Unity keystore manager, switching from Mono to IL2CPP for release, enabling both ARM architectures, producing an AAB.
  • WebGL: building, disabling compression and data caching for GitHub Pages compatibility, pushing the build artifact to a public repo and deploying via Pages.
  • Google Play internal testing versus closed testing versus open testing, and why bundle version code must increment every upload.
  • Apple: enrolling as an individual, the $99 fee, exporting an Xcode project and running on the iOS simulator.

Timestamps

  • 00:00:00 — Week 4 intro, what the final test covers and how the certificate scoring works
  • 00:12:00 — The project assignment, why you shouldn’t expect 100% of the instructions, and Google being part of the job
  • 00:20:00 — Where a project starts: time horizon, doubling your estimate, and the game design document
  • 00:28:00 — Milestones, small tasks and the snowball effect of finishing things
  • 00:36:00 — Alpha, beta, release, and how Steam boosts a first launch
  • 00:44:00 — Writing a three-to-five page GDD, walked through with a slot machine example
  • 00:55:00 — Project wiki, Confluence, Jira, Notion, and the “what happens if I skip this step” filter
  • 01:05:00 — Building in public: Instagram versus Twitter, hashtag limits, posting under your own name
  • 01:16:00 — Kickstarter and crowdfunding as validation
  • 01:22:00 — Six-month roadmap for the slots game, prototype to PR to LiveOps
  • 01:36:00 — LiveOps in depth: events, message-of-the-day, making a game feel alive
  • 01:46:00 — Kanban versus Scrum, story points, velocity, and feature creep
  • 01:54:00 — Feedback loops, GitHub Actions for CI builds, canny.io for user-driven tasks
  • 02:05:00 — Store dashboards, Apple’s $99 and review strictness, individual versus company accounts, privacy policy generators
  • 02:20:00 — Build targets and restrictions, why Mac and iOS need a Mac, MacInCloud
  • 02:30:00 — Android build settings: keystore creation, IL2CPP, architectures, AAB output
  • 02:45:00 — Player settings, icons, bundle identifiers, and fixing the Mac aspect ratio problem
  • 02:58:00 — WebGL build, disabling compression, deploying to GitHub Pages so anyone can play in a browser
  • 03:15:00 — Google Play Console: creating the app, internal testing track, uploading the AAB, adding testers
  • 03:30:00 — Closed testing, store listing assets, tracks and the forms you have to fill in
  • 03:45:00 — Apple Developer enrollment live, then exporting an Xcode project and running on the iOS simulator
  • 04:05:00 — Playing the finished build on mobile, wrap-up and what the rest of week 4 covers

What you build

By the end of the session Duck Invaders exists as four separate builds. A signed Android app bundle sitting in the Google Play internal testing track, with a store listing, icon, feature graphic and screenshots attached. A WebGL build hosted for free on GitHub Pages that anyone with the URL can play in a browser. A Mac desktop build, complete with the aspect-ratio bug found and fixed on the spot. And an iOS build exported to Xcode and running in the simulator.

You also come away with a keystore of your own, a working understanding of the IL2CPP-versus-Mono trade-off (Mono for iteration speed, IL2CPP for anything you ship), and the trick of generating your Android bundle version code from a Unix timestamp via an editor menu item so you never hit the “version code already used” wall.

The planning half gives you a template for the next project: a GDD you write before you write code, a roadmap with three named milestones, a Kanban board with enough small tasks that you finish something every week, and a public feedback channel.

Who should watch this

Anyone who has a Unity project on their hard drive that nobody else has ever played. The build and publish walkthrough is the practical core — keystores, IL2CPP, WebGL on GitHub Pages, and the Play Console testing tracks — and it’s the difference between a folder of scripts and a link you can send to someone. The first half is more opinion than instruction, but it’s opinion from someone who has shipped a multiplayer game across six platforms over seven years, and it’s worth sitting through even if planning bores you.

Part of the full curriculum. Course overview.