Rocket Workshop — Build Your Rocket, Reach Orbit
Combine engines, fuel tanks, and payloads to design a rocket, then control the throttle in real-time to reach orbit — a 1D physics simulator
The Spark — Why Do Rockets Look Like That?
I still remember the first time I watched a rocket launch. A massive cylinder rising on a pillar of white smoke, defying everything I thought I knew about how heavy things behave. "How does that even fly?" — a question that never really went away.
While building Starship Mission, I discovered that just three forces — gravity, thrust, and drag — can produce surprisingly realistic flight. So I pushed the idea further: what if the player designs the rocket itself? Pick an engine, choose a fuel tank, load a payload, and test whether that combination can actually make it to orbit. Rocket Workshop grew from that curiosity.
Paper Engineering — The Assembly Screen
The first screen looks like an engineer's notebook. Yellow paper texture, binder holes on the left, and a pencil-sketch rocket preview that updates in real time as you select parts.
There are four part categories:
| Category | Options | Trade-off |
|---|---|---|
| Engine | Kestrel → Raptor (5) | More thrust = more cost & mass |
| Fuel Tank | Micro → Super (5) | More fuel = more drag & mass |
| Payload | CubeSat → Station (4) | Higher science bonus = more mass |
| Booster | Solid / Liquid / Heavy (3) | Extra first-stage thrust, jettisoned after burnout |
Every part has a cost, and each mission has a budget cap. LEO allows $600; Mars allows $1,300. Top-tier engines with the largest tank will exceed the budget. Reaching orbit on a shoestring boosts your economy score. That tension is the heart of the assembly phase.
Three Forces at War — The Physics Engine
The physics are simplified to 1D (vertical only), but the core principles match real rocketry.
Gravity decreases with altitude. Surface gravity of 9.8 m/s² drops to about 9.2 m/s² at 200 km.
const g = G0 * (EARTH_RADIUS / (EARTH_RADIUS + altM)) ** 2;
Thrust varies with altitude through specific impulse (ISP). In atmosphere, exhaust gases are pushed back by ambient air, reducing efficiency. In vacuum, engines reach peak performance. Raptor's ISP climbs from 330 s at sea level to 360 s in vacuum.
Drag scales with the square of velocity. As altitude rises and air thins, drag vanishes — but at low altitude and high speed, dynamic pressure (Max-Q) can reach dangerous levels.
The sum of these three forces determines acceleration each frame, integrated via Euler's method. Time runs at 4x real speed — a 10-minute real flight takes about two and a half minutes in-game.
Max-Q — The Most Dangerous Moment
The most nerve-wracking part of any launch is the first one to two minutes, around 10–15 km altitude. Speed is climbing fast, but the atmosphere is still thick enough to produce extreme dynamic pressure: q = ½ρv². Even in real SpaceX launches, "Max-Q" is called out as a milestone.
The game reproduces this. Exceeding the safe limit (35,000 Pa) triggers a yellow HUD warning and accumulates score penalties. Breaking the critical threshold (50,000 Pa) causes instant structural failure. Below 5 km, though, only warnings appear — no instant destruction. This gives newcomers a chance to learn instead of exploding immediately after liftoff.
The optimal strategy: full throttle off the pad, reduce to 60–70% through Max-Q, then back to 100% above 20 km where the air thins. It's the same "throttle bucket" technique used in real launches.
Boosters — A First-Stage Companion
Attaching boosters dramatically increases liftoff thrust. Two mount symmetrically on the sides. When their fuel runs out, they separate automatically — mass drops sharply, and the rocket accelerates.
Booster physics run independently from the main engine. A separate fuel fraction (boosterFuelFrac) is tracked, consumed each frame based on booster thrust. After separation, total mass and thrust are recalculated minus the booster dry weight and remaining propellant.
The Tsiolkovsky rocket equation computes ΔV beforehand. With boosters, Stage 1 (boosters + main) and Stage 2 (main only) ΔV are calculated separately and summed.
// Two-stage ΔV — before and after booster separation
const Ve1 = (boosterThrust * boosterVe + mainThrust * mainVe) / totalThrust;
const dV1 = Ve1 * Math.log(m0_stage1 / mf_stage1);
const dV2 = mainVe * Math.log(m0_stage2 / mf_stage2);
const totalDeltaV = dV1 + dV2;
Orbit Insertion — Beyond 1D Limits
In reality, reaching orbit requires horizontal velocity — enough speed sideways to keep falling around Earth. But this is a 1D simulator with only vertical motion.
The workaround is ORBIT_VEL_FACTOR = 0.35. Reaching 35% of the real orbital velocity counts as "we've turned horizontal." For LEO, that means hitting roughly 2,724 m/s instead of the full 7,784 m/s.
The HUD radar shows the rocket's position relative to Earth's center and a target orbit ring. When both altitude and velocity conditions are met, the ring glows green to signal success.
Scoring — What Makes a Good Flight
Four criteria determine your score after orbit insertion:
| Category | Weight | Criterion |
|---|---|---|
| Fuel Efficiency | 35% | More remaining fuel = higher score |
| Economy | 25% | Cheaper builds score better |
| Speed | 20% | Bonus for reaching orbit near 120 seconds |
| Structural Stress | 20% | Less Max-Q exposure = higher score |
Multiplied by the payload's science bonus (1.0–2.0x) and mission difficulty (LEO 1x, Mars 3x). Grades range from S (85%+) to D (below 30%). Getting an S requires a cheap build with efficient fuel use and a clean pass through Max-Q.
Engine Flames — A Small Detail
Each engine has distinct flame colors. Kestrel burns blue-white, Merlin glows orange, and Raptor produces the characteristic teal of methane combustion. These reflect real differences in rocket fuel — RP-1, methane, and hydrogen each burn differently.
The particle system renders up to 800 individual flame particles. Each carries its own RGB values, size, lifetime, and gravity, giving every engine a unique visual personality.
Closing Thoughts
The most interesting lesson from building Rocket Workshop was viscerally understanding why rockets are so expensive. Reaching orbit demands enormous fuel. Carrying that fuel adds mass. More mass demands a bigger engine. A bigger engine needs more fuel. This vicious cycle — the Tsiolkovsky curse — showed up directly in the game's balancing.
The time spent staring at TWR and ΔV numbers on the assembly screen, the tension of easing the throttle through Max-Q, the satisfaction when the orbit ring finally glows green — all of it traces back to a simple curiosity about rockets.