Alpine Skies: a browser flight sim, shipped and live
A free flight simulator over the Swiss Alps that anyone can play in seconds, with no install and no sign-up wall. Every early decision optimised for time to first flight.
Casual plane fans choose between heavy sims that take hours to learn and web games that feel cheap. Nothing good starts in a browser tab in under a minute.
What I did
Built and shipped a browser flight sim with guest play, a difficulty ladder and a retention loop, using AI coding tools for the build.
Result
Live at alpine-skies.vercel.app. A performance pass cut cold load from 8.4 s to about 4.6 s (Intel Iris Xe laptop). Player numbers are not published yet; the first-mission funnel comes next.
Role
Solo: product, design, build with AI coding tools
Platform
Web browser (WebGL), no install
Status
Live, version 1.23 (Oct 2026)
Skills
Execution, engagement design, metrics, AI-assisted building
Problem
No middle ground for casual pilots
Casual players who like planes have two bad options.
Serious sims (e.g. Microsoft Flight Simulator) need a strong PC, a big download and hours to learn.
Quick web games load fast but feel cheap and give no reason to come back.
There was no middle ground: a good-looking flight you can start in a browser tab in under a minute.
Users
Two needs, one return loop
Scroll sideways for the full diagram →
One journey, two needs. Each need is met at a different step, every step has a funnel metric, and the Daily Challenge brings players of both kinds back into missions.
Need
Who has it
How the product serves it
A quick, good-looking flight (primary)
Casual aviation fans on a laptop, no setup
Guest start, missions sorted by length
Learning to fly without feeling lost
People curious about flying, new to sims
Flight School and the difficulty ladder
Returning is a stage, not a third kind of player: a beginner can also be a returning player. So return is measured as a funnel step for both needs, and the Daily Challenge, leaderboard and stars serve both.
Key insight
Key insight
The first 60 seconds decide everything.
A browser game competes with every other tab. If a player hits a sign-up form or a confusing cockpit, they close the tab. So every early decision optimised for time to first flight. Depth comes later, once the player cares.
Goals and metrics
What success means
North StarMissions completed per weekly playerNorth Star. It captures both engagement and progress.
First flight startedShare of visitors in the air within a minute
First mission completedShare of new players who finish a mission in session 1
Return within 7 daysShare of new players who come back
Health: frame rate on low-end laptops, and load time.
Decisions and trade-offs
Four calls, one I would undo
01Guest start
What I chose Chosen
Play instantly as a guest; save codes move progress across devices
What I gave up
Early email capture for growth
Why. Sign-up friction kills first sessions.
02Visual quality vs speed
What I chose Chosen
Balanced visuals against frame rate on average laptops
What I gave up
Peak graphics
Why. A beautiful game that stutters loses players anyway. This is the call behind the 8.4 s to 4.6 s load cut.
03Retention loop
What I chose Chosen
Daily Challenge, achievements, leaderboard, stars and coins
What I gave up
Build time on new aircraft and maps
Why. New content is expensive to build; reasons to return are cheap. A bet, not yet measured: the 7-day return rate will test it.
Why. Each mode served a different need. But it broke my own rule about the first 60 seconds: play-testing found the menus confusing. For new players this was a mistake, and the onboarding test below checks whether skipping the mode menu fixes it.
Solution
From tab to cockpit in seconds
alpine-skies.vercel.app
In flight: the objective, the next ring and the keys, on screen.
What shipped
Live, with logins, missions and a leaderboard
Home: the next mission first, then the other modes and the flying style.
Missions on a map, sorted by length, with clear star goals.
Execution
Ship, play-test, fix, repeat
Rebuild on real terrainThe Bernese Oberland from swisstopo open data, tuned to run on laptop graphics.
Play-test feedbackMenus and levels were confusing, there was not enough to do, and progress was not saved.
Revamp, versions 1.15 to 1.23Missions sorted by length, Flight School, a daily challenge, guest saves, a leaderboard and clearer in-flight guidance.
MeasureProduct analytics added on the web build, and accounts, progress saves and the leaderboard in Supabase, so the next round is judged on what players do.
Experiment
A/B test on onboardingPlanned
Hypothesis: dropping players straight into a 60-second guided flight (vs the mode menu) raises first-mission completion.
Primary metric: share of new players who complete a mission in session 1.
Guardrail: 7-day return rate must not fall.
Decision rule: ship the guided start if completion rises with no drop in return rate; otherwise keep the menu and test a shorter Flight School.
Traffic check first: if there are too few new players each week for an A/B test to detect a real change, compare the funnel before and after the change and run moderated play sessions instead. The result will say which method was used.
Scroll sideways for the full diagram →
The variant removes one step, the mode menu, and replaces it with a 60-second guided flight. Both arms are measured at the same point: a mission completed in session 1.
Results
Live and faster; player numbers next
Measure
Result
Status
Live with logins, missions, a leaderboard and a cloud backend
Cold load, Intel Iris Xe laptop
8.4 s to about 4.6 s after a performance pass (version 1.15)
Feedback that changed the product
"Menus and levels are confusing; not enough to do." Led to missions by length, Flight School and the daily challenge
Player funnel
Not published yet: visitors, first flight, first mission, 7-day return
What I learned
The tools built it; the calls stayed mine
AI coding tools speed up the build. The product decisions, scope and quality bar stayed mine.
My own first-60-seconds rule was right, and I broke it with five modes. Writing the rule down is what made the mistake visible.
Roadmap
Now, next, later
Now
Publish the player funnel: visitors, first flight, first mission, 7-day return
Run the onboarding test (A/B if traffic allows) and publish the result here
Next
Fake-door test for cosmetic aircraft before building any