Default Alive
How the game is built

One Swift core runs the game on iPhone, Android and Meta Quest.

Default Alive is a startup tycoon game. You start a software company alone in a garage and grow it, one week at a time, toward a Series B. The rules, the numbers and every word a player reads live in one Swift package, and each platform adds only the screens it needs. Because of that, a company plays out the same on every device, down to the last bit of every number.

Drawn to scale: each block is 1 pixel tall for every 400 source lines. The page draws it the way the Android app draws a room: at art size, then scaled by whole pixels.
  1. Shared by all three apps
  2. The simulation 15,480 lines of Swift

    The weekly model of a company: buyers, prices, hiring, money, investors, the board and the endings. It imports no screen or graphics code.

  3. The game 15,459 lines of Swift

    The decision cards, every word a player reads, the analytics events, the pixel art code, and a renderer that draws a room into a picture with no graphics library.

  4. Written for one platform
  5. iPhone 9,812 lines of Swift

    SwiftUI draws the screens. SpriteKit, Apple's 2D game framework, draws the garage and the office.

  6. Android 9,073 Kotlin, 6,933 Swift, 42 C

    Jetpack Compose draws the screens in Kotlin. A Swift layer runs the game on the phone and hands each screen its data through a small C bridge (JNI).

  7. Meta Quest 2,340 lines of Kotlin

    Built on Meta Spatial SDK. It reuses the Android Swift layer and the Android game code. Its own code puts the garage on a table in front of you and lets your hands move it.

Shared code
31klines of Swift
iPhone app
76%shared
Android app
66%shared
Quest app
73%shared
Shared and native

How much of each app is its own

Each column is one app, 100% tall. Teal is the Swift that all three apps share. The rest was written for one platform.

One room, three renderers

The art is code, so the 3D garage needed no new art

Python scripts draw every person, desk and plant from text grids and boxes. Each platform draws the same room from that code in its own way.

Default Alive on iPhone: the Vitalsync seed office with the team at desks, and a card that reads: You were away 24 h. 13 weeks passed.
iPhoneSwiftUI and SpriteKit

SpriteKit draws about 150 sprites in a full office, at 60 frames a second.

Default Alive on Android: the Vitalsync garage at week 11, the cash and runway band, and a card that asks what to build next.
AndroidJetpack Compose and a Swift renderer

Swift draws the room at art size into one small picture, and Compose scales it up by whole pixels. In 18 of 18 test images it matched SpriteKit pixel for pixel.

Default Alive on Meta Quest 2: the 3D garage on a table, a numbers panel, and a price card with the choices $114, Keep and $86.
Meta QuestMeta Spatial SDK and glTF

A Python exporter turns the same art code into a 3D model, a 31 KB glTF file. The headset draws it at 90 frames a second on a Quest 2. Captured on the headset on Oct 27, 2026.

Each person is a paper doll on a 16 by 24 pixel frame: legs, body, head, face, hair and what the hands hold, each drawn from a text grid. Rooms and furniture are boxes on a 2:1 isometric grid, lit from the upper left. One command builds every image, and two builds give the same bytes.

How the model works

One tick is one game week

The clock runs in real time, so your company keeps working while you are away. Each week runs in this order.

  1. 1

    You decide

    The price, who to hire, what to build and how much to spend on ads. Each judgment arrives as a decision card.

  2. 2

    The founder works

    The founder spends the week's hours, 55 by default. Hours past 60 a week count half.

  3. 3

    The team builds

    A shipped feature raises fit. Each week of building also adds tech debt, and debt lowers quality.

  4. 4

    Leads become deals

    Channels bring leads. Leads become sales calls or free trials, depending on how you sell.

  5. 5

    Buyers decide

    A deal closes only if the buyer will pay the price. A customer whose value falls below the price leaves fast.

  6. 6

    The money moves

    Cash comes in and goes out, and a round may close. After the seed round the board meets each quarter, and the game writes the week's news.

The center of the modelTry it
What a buyer will pay = value × fit1.5 × quality × competition

Each buyer also gets a personal multiplier, drawn once and kept for life. A deal closes when that buyer's number beats your price. Price, churn, tech debt and talking to customers all run through this one equation.

The median buyer pays$0
Buyers who would sign0%

The clinics segment ($1,200 a month at full value), with no rival in the market. The multiplier is lognormal with a spread of 0.7, as in the game.

The labRuns on a Mac

A command-line lab plays scripted founders through the same core. If a strategy that breaks a lesson wins, the model is wrong, or the lesson is.

19
startup lessons
30
checks of those lessons
1,000
simulated companies in each check
  • Default alive or default dead
  • Price is the strongest lever
  • Churn beats slow acquisition
  • Tech debt compounds
  • Clear is kind
  • Switching costs, not features
Same seed, same company

The core does its own math, so every phone gets the same numbers

Android's math library returned a different last bit than Apple's on some inputs. One different last bit can flip a chance draw, and then the company takes another path. So the core now computes exp, log, pow and cos itself, from a line-by-line Swift port of fdlibm, the open math library that Java's StrictMath is defined by.

Before the port
175

of 1,200 test companies played out differently on Android than on the Mac.

After the port
0

of 1,200 differ. All 1,200 match the Mac bit for bit, and an Android build ships only after this check passes.

Languages

81% of the shipping code is Swift

59,214 lines ship in the three apps. Each line counts once, even when two or three apps use it.

Swift
47,759

lines in the shared core, the iPhone app and the Android Swift layer.

Kotlin
11,413

lines in the Android screens and the Quest app.

Python, build only
4,808

lines that build the pixel art and the 3D model. None of it ships.

Tests
24,882

lines of tests across the shared core, the iPhone app and the Android app.

Where each platform stands

One app is live, two are on the way

iPhoneiOS 26
Live

On the App Store since Oct 26, 2026. Free, with no ads and nothing to buy. Get it on the App Store

AndroidGoogle Play
Testing

Android runs the same core as the iPhone. Tester sign-up for Google Play is open. Join the test

Meta QuestQuest 2
In development

The garage runs in 3D with hand controls. Playable on a Quest 2 since Oct 27, 2026.