Repository navigation
Releases
Orrery 0.7.1
0.7.1
This release adds nothing new to play and doesn't change how the game behaves. It adds test coverage for the code that reads planetary position data, so updating from 0.7.0 is optional.
Changes
Reliability
- Added automated tests for reading planetary position data files, including how the game handles damaged or unsupported files. No pull request is recorded for this change.
Version
0.7.0 → 0.7.1 — PATCH. Mechanical floor from the save format, the released save fixtures, the command-line flags, the save code and new files: PATCH.
Judgment: Session: Chebyshev. The only changes are a new test file, tests/test_spk.cpp, and its registration in the CMake test list, so the code players run, their saves and their controls are unchanged. The tests exercise the existing SPK reader using kernels built by the test itself, and they add no gameplay, content or data written into saves. Nothing justifies raising the mechanical floor of patch.
- no save, flag or new-file difference observed
Verification
Verified before publication; this tag points at the exact commit that was verified, and the downloads below were built from it.
- Saves: every save fixture
0.7.0shipped with is unchanged, every save format has one, and the game's save tests load each of them. - CI checks on this exact commit, all green: Data, ephemeris tests, render smoke test, Web build and smoke test (headless Chromium).
- Packaging dry run: every download was built from this commit and checked before the tag was made.
drafted by Claude on behalf of Daniel Stephenson
What's Changed
- Test the SPK reader on kernels built by the test by @dmccoystephenson in #44
- chore: release 0.7.1 by @dmccoystephenson in #46
Full Changelog: 0.7.0...0.7.1
Orrery 0.7.0
0.7.0
Your ship now runs on fuel. Every drive tier burns through a tank, landing refuels you in seconds, and running dry means gliding down through air or calling a tow. The browser version also gets a new loading screen, and the axial tilts shown for Venus and Uranus are now correct.
Changes
Fuel and towing
- The ship now has a fuel tank that drains in proportion to throttle, including reverse. A full tank lasts about 17 minutes at full throttle on thrusters and about 2 minutes at warp 3.
- Coasting, gliding and sitting on a surface burn nothing, and a landed ship refills from empty in 5 seconds.
- An empty tank cuts the drive and autopilot, but you can still glide down through an atmosphere.
- When the tank is empty, press R or the new Tow button in the browser to return to the body you last landed on, or the nearest body if you have not landed, with a full tank. A tow abandons any mission in progress.
- New
--fueland--altitudeoptions start the ship with a chosen amount of fuel or a chosen height above the target's surface.
Flight display
- The flight HUD now shows fuel, changes colour as it runs low and warns when the tank is empty.
- On narrow screens such as phones, the speed and throttle line uses a compact layout.
- The off-screen target marker no longer drops into the flight HUD.
- The help screen now lists the
-key for starting a mission.
Accuracy
- Axial tilt is now measured from the spin pole, so Venus and Uranus read about 177° and 98° (#41).
Browser version
- The page now loads behind a new loading screen with progress for the engine and JPL data (#36, #38).
- If the live view can't run, for example without WebGL 2, the page shows a recorded clip or still and explains why. Very slow devices are offered the clip without losing the live view (#36, #38).
- Opening the page with
?benchruns a scripted frame-rate test and shows results you can copy.
Version
0.6.0 → 0.7.0 — MINOR. Mechanical floor from the save format, the released save fixtures, the command-line flags, the save code and new files: MINOR.
Judgment: Fuel, the tow, gliding on an empty tank and the --altitude and --fuel flags are new gameplay, so minor applies, and nothing a 0.6.0 player has is lost: records.txt keeps its location and format because the save-code change only adds a comment and a version constant, and the new fixtures pin the existing format. Fuel can now end a flight, and a tow ends the running mission, but existing controls keep their meaning and existing best times still load, so this does not reach major. The patches for web/strata-kit/update.sh and web/strata_page.cmake were truncated and the Strata v0.7.0 engine diff is not shown, so their effects are unknown; the first two look like web build tooling, and keeping the floor rests on that assumption. The fuel, HUD layout and ?bench changes match no listed PR, so those bullets carry no PR number rather than a guessed one.
- minor: command-line flag added: --altitude
- minor: command-line flag added: --fuel
- minor: save code changed: src/orrery/missions.hpp
Verification
Verified before publication; this tag points at the exact commit that was verified, and the downloads below were built from it.
- Saves: every save fixture
0.6.0shipped with is unchanged, every save format has one, and the game's save tests load each of them. - CI checks on this exact commit, all green: Data, ephemeris tests, render smoke test, Web build and smoke test (headless Chromium).
- Packaging dry run: every download was built from this commit and checked before the tag was made.
drafted by Claude on behalf of Daniel Stephenson
What's Changed
- Show a glide: --altitude KM, the glide image, and the target arrow kept above the HUD by @dmccoystephenson in #31
- Add a release workflow that builds Windows and Linux downloads by @dmccoystephenson in #30
- Number the mission records format; freeze two records files 0.6.0 wrote by @dmccoystephenson in #32
- Fuel: a tank the drive burns, refuelling on landing, and a tow when it runs dry by @dmccoystephenson in #33
- Add a ?bench mode to the browser page: a scripted frame-rate run by @dmccoystephenson in #34
- README: eleven missions in test_missions, and describe test_records by @dmccoystephenson in #35
- Load the browser page behind Strata's loading shell by @dmccoystephenson in #36
- RELEASING: the browser deploy is gated on ARCADE_ENABLED by @dmccoystephenson in #37
- Move Strata to v0.7.0 (web kit 1.1 loader) by @dmccoystephenson in #38
- Test the catalogue's queries: find, date range, osculating orbits, poles and frames by @dmccoystephenson in #39
- HUD axial tilt: measure from the spin pole so Venus and Uranus read 177° and 98° by @dmccoystephenson in #41
- chore: release 0.7.0 by @dmccoystephenson in #42
Full Changelog: 0.6.0...0.7.0
0.6.0
In this release, the ship can glide, Pluto and Triton get their thin air, and a new race runs through Earth's air.
What's new
- Gliding (#28): in air at zero throttle and off autopilot, the ship glides down instead of stopping, and the HUD says GLIDING.
- It flies at the speed at which its wings hold its weight, and sinks at a fifth of that speed. Steer it to where you want to land.
- Near Earth's ground that is about 80 m/s, sinking at 16 m/s: a soft landing.
- Mars's thin air gives a fast glide (still a soft landing), and Pluto's gives a hard landing. Venus's and Titan's thick air give a slow drift. Throttle up to fly again.
- Pluto and Triton (#28): thin nitrogen air, derived from New Horizons' and Voyager 2's measurements. It is about a hundred-thousandth of Earth's: it barely heats or slows the ship, and their skies stay nearly black.
- Hot entry (#28): an eleventh mission, a race from the Moon to Earth's surface (
-in the list). The landing autopilot keeps cool and takes 32.5 s; par is 30.0. Ride the heat higher by hand to beat it, but at 95% of the burn speed the ship burns up. - Strata v0.6.0 (#27): the engine is pinned to its v0.6.0 tag.
Known gaps
- Air is a single exponential layer, with no winds or weather. Lift exists only as gliding.
- Mission best times stay on the device that set them.
Playing it
The browser build is live at https://orrery.play.danielstephenson.dev. For the desktop build, see the README's Building and running section.
Full changelog: 0.5.0...0.6.0
drafted by Claude on behalf of Daniel Stephenson
0.5.0
In this release, Venus, Earth, Mars and Titan get air: it slows the ship, heats it, and colours the sky.
| Landed under four skies: Venus, Earth, Mars and Titan | Coming down into Earth's air: 57 km up, 10 km/s, 27% heat |
|---|---|
![]() |
![]() |
What's new
- Air (#23): each air thickens toward the ground, from the real surface density and scale height of each body (NASA fact sheets; Titan's are derived from its measured pressure, temperature and composition).
- Drag: Venus's air is so thick that full thrusters make well under 1 km/s near the ground.
- Heat: speed in air heats the ship toward a burn speed, which is higher where the air is thinner: in Earth's air about 5 km/s at sea level, 16 km/s at 60 km and 50 km/s at the top. The HUD shows HEAT and warns HOT above 75%. At 100% the ship burns up and is put back above the air. Diving into Earth under mass lock alone burns up in under a second.
- Autopilots: both keep to a cool speed in air and slow down before reaching it. The landing autopilot reaches the ground in about 30 s on Earth, 20 s on Mars, 60 s on Titan and 90 s on Venus.
- Sky: inside the air, the sky takes the air's colour on the day side, and a glow of hot air grows over the ship's leading end.
- Game choices: the burn speed, the drag's ballistic coefficient, the single-layer air and the sky colours.
DATA_SOURCES.mdlists them.
- Daytime skies (#25): a bright sky now washes out the orbit lines, small bodies, the markers of distant bodies and the labels. The Sun, the target and nearby bodies stay.
- Driven play (#24): a test harness can play the game through the engine, with a stepped clock that repeats frame for frame. A driven run never reads or writes the mission records.
Known gaps
- Air is a single exponential layer, with no winds, weather or lift.
- Pluto's and Triton's thin air is left out.
- Mission best times stay on the device that set them.
Playing it
The browser build is live at https://orrery.play.danielstephenson.dev. For the desktop build, see the README's Building and running section.
Full changelog: 0.4.0...0.5.0
drafted by Claude on behalf of Daniel Stephenson
0.4.0
In this release, the ship gets missions: ten timed goals, with best times kept per device.
The mission list (I) |
The Moon run, finished on the landing autopilot |
|---|---|
![]() |
![]() |
What's new
- Missions (#18): press
I, or the browser's Missions button, and pick one. There are four kinds:- Landing tours: the Galilean moons, Mars and its moons, and the inner planets, in any order.
- Races: from Earth to a landing on the Moon (par 0:24.0) or on Pluto (par 0:45.0).
- Precision landings: the far side of the Moon, and Mars's north pole (80° N or more).
- Sightseeing flybys: within 20,000 km of Saturn's cloud tops, and within 10,000 km of Halley's comet and of Voyager 1.
- A mission sets its own date, TRUE scale and bodies at their real size, so every time is fair. Changing any of those abandons it.
- The best time is kept on the device: in
localStoragein the browser, and in a records file on the desktop.--mission IDruns one headless.
- No landing on the Sun or the giant planets (#17): they have no solid surface. Flying into one loses the ship, which is put back outside it, and the landing autopilot stops at a standoff from them instead. This closes the known gap in 0.3.0.
- Docs and tests: a source comment for the dwarf planets' data was corrected (#19). A flaky step in the browser smoke test now lands on Titan instead of Saturn (#22, which closes #20).
Known gap
Best times stay on the device that set them. There is no shared leaderboard.
Playing it
The browser build is live at https://orrery.play.danielstephenson.dev. For the desktop build, see the README's Building and running section.
Full changelog: 0.3.0...0.4.0
drafted by Claude on behalf of Daniel Stephenson
0.3.0
In this release, the ship can land on planets and moons.
What's new
- Landing (#14): the speed into a surface grades the touchdown. Up to 120 m/s is a landing, up to 600 m/s a hard landing, and anything faster a crash. These are game thresholds, not physics.
- A landed ship sits level on the surface and turns with its body as it rotates.
- The throttle alone does not move it; pitching the nose up and throttling lifts it off.
- A crash puts the ship back a quarter of a radius above the surface, at rest and pointing up.
- Gentler mass lock: under any drive above thrusters, the mass lock now slows the ship to 50 m/s, so flying into a body at cruise or warp ends in a soft landing. Thrusters are not locked, so a landing on thrusters is up to the pilot.
- Landing autopilot:
G, the browser's new Land button, or--land. It flies to the target and sets down at about 30 m/s, climbing straight up first when it starts from another surface.Tfrom a surface also climbs out first. - HUD: LANDING on, LANDED on, HARD LANDING on and CRASHED into, with the touchdown speed. It also shows the climb or descent rate near a surface, and a lift-off hint while landed.
- Tests: new tests cover the ship's controls (#13) and the element tables used for the moons, dwarf planets and comets (#15).
Known gap
In this release, the Sun and the giant planets are still treated as solid, so the ship can "land" on them. #17, which is open, fixes this for the next release.
Playing it
The browser build is live at https://orrery.play.danielstephenson.dev. For the desktop build, see the README's Building and running section.
Full changelog: 0.2.0...0.3.0
drafted by Claude on behalf of Daniel Stephenson
orrery 0.2.0
In this release, the ship can be flown in a browser on a phone or tablet.
What's new
- Touch flight controls (#9): in the browser build, the Ship toolbar button boards the ship. On a touch screen, these controls are shown over the canvas:
- Thumb stick (bottom left): pitch and yaw. It turns gently near the centre and springs back when it is let go.
- Throttle lever (bottom right): runs from 25% reverse to full, with a detent at zero, and stays where it is left. Moving it takes control back from the autopilot.
- Buttons above the lever: drive tier up and down, autopilot, roll left and right, stop, the cockpit view and exit.
- Desktop browsers: the on-screen controls are hidden by default. The Joystick toolbar toggle shows them, and the browser remembers the choice. In the ship, the mouse wheel steps the drive tier.
- Smoke test: the browser smoke test boards the ship on both the desktop and the iPhone 13 profile. It checks that the lever opens the throttle and stays put, that the stick steers and recentres, and that a drive button steps the drive.
Playing it
The browser build is live at https://orrery.play.danielstephenson.dev. The desktop build is unchanged from 0.1.0; see the README's Building and running section.
The touch controls were tested in headless Chromium with the iPhone 13 profile; they have not yet been tested on a physical phone.
Full changelog: 0.1.0...0.2.0
drafted by Claude on behalf of Daniel Stephenson
orrery 0.1.0
The first release of orrery: the whole solar system from real JPL data, drawn with Strata.
What's in it
- Bodies: the Sun, the 8 planets, 5 dwarf planets, 25 moons, Saturn's rings, 12,584 small bodies, three comets and three spacecraft. They are placed from JPL DE440s, Horizons and SBDB at any instant from 1850 to 2149.
- Scale modes: TRUE distances, with an adjustable body enlargement, and a COMPRESSED log mode that shows the Kuiper belt and Mercury in one picture.
- Planets: planet maps, axial tilt and sidereal rotation from the IAU elements (#2).
- Ship mode (new, #8): press
Vto fly a ship through the solar system in the spirit of Rodina.- Drive tiers: thrusters (2 km/s), cruise (200 km/s) and warp 1, 2 and 3 (1 c, 50 c and 2,000 c).
- Mass lock: the ship slows down by itself near planets and moons, and stops at their surfaces.
- Moving with a body: near a planet or moon, the ship moves with it as time runs.
- Autopilot:
Tflies to the target (Tab,0–9). - Cameras: a chase camera and a cockpit camera (
C).
- Browser build: the orrery runs in a browser through Emscripten and Strata's WebGL 2 device (#3).
- Headless rendering: screenshots, frame sequences and an OpenUSD layer export.
Running it
The JPL data is not in the repository or in this release. It is downloaded from JPL at build time; see the README's Building and running section.
uv run --python 3.12 tools/fetch_data.py all && uv run --python 3.12 tools/build_catalog.py
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j4
./build/orrery --focus Earth --enlarge 1 --ship --target Mars --autopilotTested on Linux (CI, llvmpipe), in headless Chromium (CI), and on Windows 10 with MSVC (Intel UHD 630, OpenGL 4.5).
drafted by Claude on behalf of Daniel Stephenson





