Starfold is a small browser game about doing observational astronomy. You point a real instrument at a real object, make one simple measurement, and read off a real result with a citation to where the number comes from. It is an edutainment tool, not a big game: the point is to show how we actually know things about the universe by letting you re-derive the measurement yourself, on real data, one instrument at a time.
It runs in the browser, needs no account, and works fully offline (more on that below).
In your browser, no install: https://play.unity.com/en/games/76c832af-587f-4fe5-b1d4-1ca7ef4c15b2/starfold
You land in the Observatory, a chronological timeline of instruments. Pick one, make the measurement, read the cited finding, and use "Observatory" (top right) to come back. There is no fail state and nothing to install.
Everything in observational astronomy is one of a few readings: a brightness over time, a shift in position, a stretch in a spectrum, a timing, a bending of light. Each instrument turns one of those into a "watch, then make one measurement" beat. You measure the quantity, the game converts it through real physics, and the reveal shows the real value with a link to the source (NASA, ESA, the Nobel committee, LIGO, STScI, or the discovery paper).
| Year | Instrument | You measure | You discover |
|---|---|---|---|
| 270 BC | Distance to the Sun | a half lit Moon | how far and how big the Sun is |
| 240 BC | Earth's Circumference | two shadows | the size of the world |
| 1838 | Parallax | a star's seasonal shift | the true distance scale |
| 1908 | Cepheid Variables | the pulse period | a galaxy's distance (Leavitt) |
| 1929 | Redshift / Hubble's Law | galaxy line shifts | the expanding universe, H0 |
| 1965 | Cosmic Microwave Background | the spot size | the age and recipe of the cosmos |
| 1970s | Dark Matter | a flat rotation curve | the invisible mass |
| 1995 | Radial Velocity | the stellar wobble | a planet's mass |
| 1998 | Type Ia Supernovae | brightness vs redshift | dark energy (acceleration) |
| 1999 | Transit Photometry | the brightness dip | a planet's size |
| 2015 | Gravitational Waves | the chirp | merging black holes, seen without light |
| 2018 | Gaia | a star's colour vs brightness | the main sequence, where the Sun lives |
| 2022 | JWST Atmospheres | molecular bumps | what an exoplanet's air is made of |
| now | Citizen Hunt | a dip in a real candidate | whether it is a planet, and how to help confirm it |
| capstone | The Hubble Tension | H0 measured two ways | an open problem the professionals are stuck on |
Alongside the ladder there are a few viewers: a Deep Field browser of real JWST, Hubble, and Event Horizon Telescope images, a live ISS tracker, an asteroid watch, a black hole viewer, a telescope bay, and a logbook of what you have found.
![]() |
![]() |
![]() |
![]() |
Starfold never hosts "all" the data. It generates each signal from real published parameters, so
the measurement you make genuinely recovers the real value, and it streams a few specifics live
when it can. Every outbound request goes through one gate (LiveNet.cs) that keeps the game a
polite guest on public archives:
- HTTPS only, with a short host allowlist. It will ever contact three hosts:
exoplanetarchive.ipac.caltech.edu(NASA Exoplanet Archive TAP, the live TESS candidate table)gea.esac.esa.int(ESA Gaia / ESAC TAP)api.wheretheiss.at(the live ISS position)
- Rate limiting and back off, per host spacing plus a concurrency cap, and it honours a
Retry-Afterheader so it never hammers a source. - A TTL cache in PlayerPrefs (IndexedDB in the browser): catalogue rows for a day, the candidate table for 30 minutes, the ISS feed for 5 seconds.
Why it still works with no connection, or in a browser: the ISS feed sends an open CORS header and works directly in WebGL. NASA's and ESA's TAP services send no CORS header, so a browser blocks a direct fetch. That is fine and needs no server: live data works on the desktop and in the editor, and every live rung (Citizen Hunt, Gaia, the live verify step) ships a real baked snapshot that it shows instantly when a live pull is blocked or unavailable. The baked catalogues (real exoplanets, galaxies with measured distances and velocities, real asteroid parameters) and the cached snapshots mean the game is fully playable on real numbers offline. The Citizen Hunt is honest about this: it hands you the real first pass test the professionals use and links out to NASA Exoplanet Watch and Planet Hunters TESS, but it never claims you confirmed a world.
Unity 6 with the Universal Render Pipeline. The whole game is built at runtime from a single
TransitGame component, with no prefab wiring: one Observatory hub owns shared services and swaps
in self contained instrument modules, so each rung is one Instrument subclass. Signals are
generated from real published parameters, so each measurement genuinely recovers the real value.
This repo holds the landing page and screenshots only; the Unity project itself is not included.
Measurements and imagery come from public archives and missions: the NASA Exoplanet Archive, ESA Gaia, NASA / ESA / CSA / STScI (JWST and Hubble), the Event Horizon Telescope, LIGO / GWOSC, Planck, and the original discovery papers. Each finding in the game links to its own authoritative source. Real images are public domain or used under their stated credit.
Some 3D models, the starfield skybox, and the interface sounds are stock packages from the Unity Asset Store.
Starfold is an educational project and is not affiliated with NASA, ESA, or Unity.
The screenshots above are from a development build (the "Development Build" watermark is Unity's, not part of the game).





