Skip to content
learn

Playable observatory

Play in the browser, on any system, computer or phone, or install the RTX version: Windows, a GeForce RTX card, 135 MB. Or download it for Linux (x86_64, 81 MB) or macOS (119 MB), rasterized. With JavaScript on, this block reads your system and the name your browser gives your graphics card, offers first the version for them, then the other platforms, and lists everything the card can do here; nothing is sent anywhere.

  • Open the web version: in any recent browser with WebGL 2, on a computer or a phone; about 55 MB the first time, then as much again in the background for the copy the browser keeps. It installs as an app and updates itself.
  • Download the RTX version (135 MB, a Windows installer): the same scene path traced, with DLSS. It needs Windows and a GeForce RTX card, and was run on an RTX 5080 only. What is new in 0.2.5.
  • Linux (81 MB, x86_64) and macOS (119 MB, Apple silicon and Intel), version 0.2.1: the same scene and buttons, rasterized, without DLSS or path tracing. See Linux and macOS below.
  • Watch the cinematic: eighty seconds filmed in the scene.
  • BRUTAL: the Colossus: another engine tried for the Observatory. A C# and Vulkan prototype swarms ten thousand bodies into a face, path traced; a video and three stills, no download.
  1. Download the installer and double-click it. It installs for your Windows account only, without administrator rights, into %LOCALAPPDATA%\Programs\Observatory-RTX, and adds Observatory RTX to the Start menu. Windows may say it protected your PC, because the installer is not signed: More info, then Run anyway.
  2. Start Observatory RTX from the Start menu.
  3. The first time, a window asks whether to fetch NVIDIA’s DLSS files (276 MB, once): press Enter.

To remove it: Settings → Apps → Installed apps; NVIDIA’s files go with it. A later version is meant to install over it and keep them: tested from 0.1.0 to a test package, not yet from one release to the next (to verify). Over 0.2.1, version 0.2.2 asks once more, because it needs Streamline 2.14.1’s files in place of 2.10.0’s: Enter replaces them, N removes them and starts without DLSS (tested from the zip). Versions 0.2.3 to 0.2.5 use the same files as 0.2.2: nothing new to fetch.

It starts path traced. A column of buttons on the left, each with a line that says what it does, switches path tracing (F9), the DLSS setting (F7), frame generation (F8) and the light’s bounces, one to four (F5). Max out (F6) puts every setting at its best for the picture, without holding 60 frames a second; pressed again, it goes back to the start. Three more buttons switch what moves: glyphs falling down the green beams of light, drawn by a shader from strokes of its own (no font, no image), the departments’ banners as cloth in a draught, and a little dust in the lamps’ light. Since 0.2.3, three pieces of blown glass stand left of the way in, two of them knots computed by IX’s knot library: path traced, the rays go through them and bend; rasterized, they show the picture behind them, shifted. Since 0.2.4, the gardens are path traced too: their 612 lamps and lanterns are lights in the rays, the four seasons stand along the canal, gilded dolphins in the basin, and on the walks people drawn by Z-Image-Turbo and modelled by TRELLIS.2 (Built with DINOv3). Since 0.2.5, the 32 people nearest the eye walk on bones that the rays follow, and step round each other and round you. 0.2.5 also brings the Place du Capitole of Toulouse at the end of the avenue at 60 degrees, an electric scooter (G), a second library wing, a tower clock in the palace’s rose window, hedges in volume, a city whose windows and columns of light change, dice and dominoes on Jolt physics (the duck on the curio wheel, then Shift), the drone flown by hand, and a Lens setting (F4). README.txt, beside the program, has the rest in English, French and Spanish.

What a GeForce RTX 5080 allows, measured on the author’s machine in a window of 3840 × 2054:

  • path tracing with DLSS Ray Reconstruction at DLSS Quality, 2562 × 1371 rendered: 60 frames a second, 15.2 ms of GPU a frame at the start view with everything that moves (version 0.1.0: 14.6 to 15.6 ms in the hall and the wing, 8 to 10 ms outdoors);
  • the same at DLSS Performance, 9.8 ms, and at DLSS Ultra Performance, 1279 × 684 rendered, 5.9 ms (version 0.2.2);
  • DLSS Frame Generation, which adds frames between the rendered ones, up to 6x: on the author’s 60 Hz screen, the program picks 3x at 27 frames rendered a second and 2x above 30; 4x to 6x need a faster screen (to verify);
  • rasterized, DLAA (DLSS as anti-aliasing alone, at the full resolution): 60 frames a second, 10.0 ms;
  • without NVIDIA’s files, MSAA 4x with TAA: 60 frames a second, 8.2 ms. Measured while the eye turns, MSAA alone flickers about ten times more, even at 8x.
  • version 0.2.5, timed the same way: path traced at DLSS Quality, 60 frames a second and 15.9 ms in the hall, 10.6 to 12.0 ms in the gardens, 7.8 ms on the Place du Capitole; among the people on the lamps’ walk 17.8 ms, where the program steps down to DLSS Balanced; rasterized, DLAA, 12.9 ms (0.2.4 the same evening: 11.0 ms); without NVIDIA’s files, 10.0 ms. The glass of 0.2.3 costs 0.2 ms path traced (the scene’s own probe, 1920 × 1080).

What it does not allow at 60 frames a second:

  • path tracing at the full resolution (DLAA): 34 frames a second, 29.6 ms (version 0.1.0);
  • a third bounce of light at DLSS Quality: 55 frames a second, 18.3 ms (version 0.1.0). The program starts at two;
  • Max out, path traced at DLSS Quality with three bounces and frame generation: 53 frames rendered a second, 60 shown, 18.9 ms; at DLAA (F7), 27 rendered, 60 shown with 3x frame generation, 37.9 ms (version 0.2.2).

The program aims at 60 frames a second by itself: when a frame takes more than 16 ms of GPU time, or under 56 frames a second, it lowers the DLSS setting, down to Ultra Performance; under 20 at the lowest setting, it switches path tracing off and says so. Any other card, any other machine, Windows 10, and an installer downloaded by a browser, which Windows marks as coming from the internet, are to verify.

Linux and macOS. The RTX version is a Windows program: Streamline, through which NVIDIA’s fork brings DLSS, asks for Windows 10 RS3 (64-bit) or newer, and a Mac has no NVIDIA card. For them, release 0.2.1 has native packages, which 0.2.2 to 0.2.5 leave as they are: the same scene and column of buttons, rasterized, on the official 4.6.1 build of the Godot Engine, with Vulkan on Linux and Metal on macOS. On Linux (x86_64), extract the archive and start Observatory.x86_64. It has run under WSL2 only, on a renderer without a graphics card: on a Linux computer with its own, it is to verify. On a Mac, the app is signed ad hoc but not notarized by Apple, which takes a paid developer account: the first time, open System Settings → Privacy & Security and click Open Anyway. It has not yet run on a Mac (to verify). The web version also installs as an app from Chrome or Edge, with the button at the right of the address bar, or from Safari on macOS 14 or later, with File → Add to Dock (Apple’s guide). Installing it that way on Linux or macOS is to verify.

The installer holds the scene and a build of NVIDIA’s fork of Godot with path tracing and DLSS, under the MIT licence, and none of NVIDIA’s DLSS files. The setup fetches those on your machine from NVIDIA’s Streamline 2.14.1 release, checks the download’s SHA-256 and NVIDIA’s signature on each file, and keeps NVIDIA’s licences beside them: they are NVIDIA’s software, under NVIDIA’s licences. Frame generation needs Windows 10 version 2004 or later with hardware-accelerated GPU scheduling on, by Streamline’s documentation. NVIDIA, GeForce, RTX and DLSS are trademarks of NVIDIA Corporation, which neither sponsors nor endorses this page or the package.

What the names on this page and in the program’s buttons mean.

  • GPU (graphics processing unit): the graphics card’s processor. the ms of GPU a frame on this page are the time it takes to draw one picture; at 60 frames a second, each frame has 16.7 ms.
  • RTX: NVIDIA’s name for its GeForce cards with cores for ray tracing and Tensor cores, the units that run neural networks, since the RTX 20 series. The RTX version of the Observatory needs one.
  • Path tracing and rasterization: path tracing computes the light by following rays as they bounce through the scene, as film renderers do; rasterization draws each triangle and approximates the light. The RTX version can do either, the web version only rasterizes.
  • DLSS (Deep Learning Super Sampling): NVIDIA’s technique that renders fewer pixels and has a neural network, on the Tensor cores, rebuild the full picture from them and from the frames before. Its settings: Quality, Balanced, Performance render 67, 58 and 50 % of each side of the picture; Ultra Performance, 33 %, since version 0.2.2 (until then it found no DLSS mode in this program).
  • DLAA (Deep Learning Anti-Aliasing): DLSS at the full resolution. It saves no pixel and only smooths the edges, for more GPU time than the other settings.
  • DLSS Ray Reconstruction: DLSS’s denoiser for path tracing. With a few rays a pixel the picture is grainy; Ray Reconstruction rebuilds it, in place of hand-written denoisers.
  • DLSS Frame Generation (DLSS-G): frames made by the network between the rendered ones. 2x shows one generated frame for each rendered one (RTX 40 and 50 cards); Multi Frame Generation shows more on RTX 50 cards: up to five (6x), in this program since version 0.2.2. It smooths the motion, not the response to the mouse, and adds a little latency.
  • NVIDIA Reflex: lowers the latency by keeping the processor from queuing frames ahead of the graphics card. NVIDIA requires it with frame generation.
  • Streamline: NVIDIA’s open-source kit through which a program calls DLSS and Reflex. The RTX version is built on its version 2.14.1 since 0.2.2 (2.10.0 before), which runs on Windows only. Its Dynamic Multi Frame Generation and its VSync with frame generation run on Direct3D 12 only, and the fork’s path tracer on Vulkan: the program has neither.
  • Anti-aliasing: smoothing the stair steps along edges (Godot’s page compares the methods). MSAA (multisample anti-aliasing) takes several samples a pixel where triangles meet: 4x takes four. TAA (temporal anti-aliasing) blends each frame with the ones before, which also calms the shimmer inside surfaces, at the cost of a little blur. SMAA (subpixel morphological anti-aliasing) looks for edges in the finished picture and blends them. Without NVIDIA’s files the RTX version uses MSAA 4x with TAA: measured while the eye turns, MSAA alone flickers about ten times more.
  • fps (frames per second): pictures drawn each second; the program’s line counts the frames rendered and, with frame generation, the frames shown.
  • WebGL 2: the 3D interface of browsers, which the web version uses through Godot’s Compatibility renderer.
  • WebGPU: the newer interface of browsers, closer to Vulkan, Metal and Direct3D 12. Godot cannot use it yet (its web export page), so the Observatory does not.
  • MSI: a Windows Installer package, the RTX version’s installer.
  • SHA-256: a fingerprint of a file, 64 hexadecimal digits; the release lists each file’s, to check a download.
  • x86_64 and ARM: the two families of processors. The Linux package is built for x86_64; on Linux on ARM, play the web version.

Open the 3D observatory in a browser with WebGL 2. The first load downloads about 55 MB of engine and scene data, and then as much again for the copy the browser keeps (below). On a phone or tablet, touch controls appear; they were tested in iPhone and iPad emulations. On an Android phone, the author found the lift hard to use without buttons of its own; it now has them, tested in phone-sized windows, not yet on a real device (to verify).

Click the scene to look around. Move with WASD (or ZQSD); hold Shift to sprint, press Space to jump and Ctrl or C to crouch (while sprinting, a slide); Caps Lock switches to a walk. Hold Q or E (A or E on an AZERTY keyboard), as in Return to Castle Wolfenstein, or Alt with A/D (or Q/D), to lean round a corner; Alt with W/S (or Z/S) rises on your toes or ducks. Near the lift, E is the lift’s. Aimed at a course book, lean the way its title reads (right; in French, left) and you tilt your head to read the spine: the view turns to it and closes in until the title runs level across the screen. Reading, the mouse takes you along the shelf from spine to spine, the head still tilted: it moves your gaze the way it moves on the tilted screen; A/D (or Q/D) and the wheel step one spine at a time, and a click opens the one you read. Ctrl+W closes the tab in most browsers, so C is the safer crouch. The steel box, the piers, the statue’s pedestal, the shelves and the galleries’ rail stop you. Esc releases the mouse. If your browser does not grant pointer lock, hold the right mouse button and drag to look. Press 1–9 for camera viewpoints: the camera flies there in 1.4 to 2.4 seconds, rising and turning on the way. 8 climbs to the stained glass in the drum; 9 cuts to the roof, outside, on the drum’s rim; walk, and you step down onto the terrace, where the lift’s kiosk is a walk away. 1–8 or Back inside bring you in again. Press F for free flight, then E/Space to rise and C to descend. If your system asks for reduced motion, the viewpoints change at once, and the view no longer widens, tilts or dips when you sprint, slide or land; reading a spine, which you hold, still tilts and closes in. Mouse capture was verified in the native build, but its behavior in ordinary Chrome, Edge and Firefox windows still needs testing; please report browser-specific problems.

Press 0 for the cinematic: about eighty seconds filmed in the scene as it runs, between cinema bars. Trantor from above under the galactic core, down through the oculus round the drum, the hall from the floor, a fresco gathering on the frieze, Seldon’s recording and the IX hologram over his statue, three small TARS, the drone flying into a gallery, and up to the sky. Any key, click or tap ends it, and you are back where you stood. On a touch screen, or to begin with it, open the observatory with the cinematic. A phone held upright gets no bars and a wider view. It was tested with simulated keys and touches under both renderers, on a computer’s screen and an upright phone’s, and played in the browser build in headless Chrome; by eye on a real phone it is to verify.

A lift climbs to the two galleries. It stands behind you when you arrive, in the bay facing the steel box’s door: a brass cage panelled in walnut under a gilt-crested dome, with a ring of green light under its roof, between columns of dark bronze. Over every landing, a dial’s needle follows the cage, and the sheave at the top turns as it rides. Its gates fold like an accordion; the motor hums while the cage rides, and a bell rings at every arrival. Walk in, then press Space to go up a floor, Ctrl or C to go down, or E (up, or back down from the top); on a touch screen, ▲ and ▼. At a landing, E calls the cage, and so does walking against its closed gate. Walk out onto a gallery and round it, along the shelves; a rail edges it on the hall’s side. At the rail, facing the hall, Space vaults it: you drop to the hall and land unhurt, even from the upper gallery. The lift also goes on to the roof. Past the upper gallery, the cage rises through the ceiling, where the view dips to black, into a small kiosk of bronze and glass on the lead roof. Its door faces the drum: walk out onto the roof, between the drum and a balustrade at the eave, under the galactic core, and come back down by the cage, which E (on a touch screen, Call) calls from beside the kiosk. The roof was tested with simulated keys in both renderers, also at 10 frames a second and with a stalled frame, not yet in a browser (to verify). The lift, the lean and the new keys were tested with simulated keys in both renderers, not yet by hand in a browser, where Alt may also reach the browser’s menu (to verify).

On a touch screen, the stick at the bottom left walks, and sprints past its rim; a drag anywhere else looks around. ▲ jumps and ▼ crouches, and in the lift they go up and down; Fly switches to free flight, where they rise and descend; Views steps through the nine viewpoints; Courses opens the catalogue. Near the lift, Call brings the cage to your landing; in the cage, a button for each landing sends it there. Tap a book for its card, and again to open the course. At a tapped book, two leaning figures appear next to the arrows: hold the one that leans the way its title reads to read the spine. While you hold it, a drag goes along the shelf from spine to spine, and a tap on another spine reads that one. The help at the top goes a few seconds after your first touch, and while a book’s card shows; ? brings it back, and a tap on it puts it away. The lean and the reading were tested with simulated keys and touches, also at 10 frames a second, and the help with simulated touches on a phone-sized screen, not yet in a browser (to verify). On a phone held upright the view is widened: on an iPhone, 50 degrees across instead of 32.

Hold Tab for the curio wheel, a library’s pastiche of the weapon wheels in shooters such as Wolfenstein: time slows to a quarter, the pointer picks a curio round the screen’s centre, and letting go of Tab puts it in your hand; a click uses it. A quick tap of Tab leaves the wheel open instead, until you pick a curio or press Tab or Esc again; on a computer, the round button at the bottom left, which shows the curio in your hand, opens it with a click. Bare hands open books as before. The Index, a white glove, points at things and names them in gilt: rude, but informative. The monocle, held, brings everything two and a half times closer inside its brass rim. The banker’s lamp, its cord plugged into nothing, lights the way. The wooden wand knows one spell: out of a puff of gilt where it lands steps a small TARS, four slabs of brushed steel on a hinge after the robot of the film Interstellar, and walks off as the film’s does, two slabs planted while the other two swing round them; eight at most. The rubber duck is there to hear your code explained, and to be thrown when it disagrees: it bounces, squeaks and stays where it lands. The ankh brings the ducks back to life, and they waddle home to your feet; the TARS walk back to you. On a touch screen, the Curios button above the stick, which shows the curio in your hand, opens the wheel; a tap on a slot takes that curio, and a tap on the scene uses it there; the monocle and the lamp stay on until a second tap. Every model is made by the scene’s own code; its sounds are local takes the author chose by ear (below). The wheel was tested with simulated keys and touches in both renderers, also at 10 frames a second, and in headless Chrome, where holding or tapping Tab opens it and the focus stays on the scene; other browsers are to verify.

The eighth curio is a pocket drone, nine centimetres across on four rotors. Use it, and it rises from your hand, then the view cuts to it as it tours the observatory on its own, lap after lap, in about four minutes: low round the steel box, up to Seldon’s face, through a bay into each gallery along the books, up round the drum past the stained glass, out through the oculus, wide over the domes of Trantor and along the drum’s lit windows, then back in and down across the hall. It flies as a camera drone does: it slows before each bend to a speed it can hold there, leans into it, never more than 25 degrees, and turns its nose at a bounded rate; outside, the air stirs it a little more. The view follows it from behind; V or On board puts you on board, on a gimbal that keeps the horizon level. Esc or Land brings it back to your hand, where you stood: while it flies, you stay put. In the multiverse corridor it stays in your hand, since there is no sky there. Its route was checked against every surface of the hall and the roof: it keeps 35 cm from all of them, and the craft, over a simulated lap, 12 cm. The drone was tested with simulated keys and touches in both renderers, and in headless Chrome on an emulated phone; a real browser on a computer, and real phones, are to verify.

The ninth curio is a whistle, a nickel pea whistle on a red lanyard. Blow it at the floor, and seven small TARS step out of a puff of gilt where it points, 3 to 6 m ahead, and dance for seventeen seconds under a cabaret spot before they bow out. The first time, they dance the first number: the lead moonwalks into its place, then unison, a canon, call and response, and an arrowhead opening into a V. The next time, a jig in 6/8 in one straight line, made of the common vocabulary of Irish step dance (sevens, threes, trebles, leaps) and of no show’s routine; then the first number again, and so on. There is no music: each landing knocks on the floor. Where the whole dance does not fit, they come nearer and smaller; where it fits nowhere, a grey puff says so; the ankh sends them off. As they come, the view turns and tilts to show the whole dance, above a phone’s buttons; look around yourself and it stops. While they dance, the whistle in your hand goes down out of sight a moment after each blow, so that it hides none of them. Their steps were choreographed and simulated beforehand in Blender, checked for collisions, for feet sliding and for feet in the air, and are played back as they were checked. The troupe was tested in both renderers, also at 10 frames a second, and in headless Chrome on an emulated phone; real phones are to verify.

Every course of this site is shelved in the library, among the other books. On the ground floor each area of the site has its bay, marked by a banner in its colour hanging under the gallery, with the area’s name in gilt. At eye level, under a lacquered sign that names the area and counts its courses, a brass lamp lights them: a series in one binding between two brass bookends, whose spines carry the real titles. Streeling University has a book for each of its courses, ranged by department: each department in its own cloth, a brass bookend between two departments, and a card under its books with its code (AUD, MAT…); a course’s card names its department and its number. Aim at a spine, with the crosshair while the mouse is captured or with the pointer: the book slides out and its card appears. Click it or press Enter to open the course in a new tab. Press L for a catalogue of every course. The scene reads the course list from the site when it starts, so a new course reaches the shelves without a new build. The EN / FR / ES selector at the top right, or T, switches the titles, signs, cards, catalogue and course links. Under it, the scene shows its version, when it was built, and its age in days:hours:minutes. English is the default unless you came from a French or Spanish page, and the page’s address keeps your choice. The keyboard help stays in English.

In the hall, in front of the Streeling University bay, a marble statue of Hari Seldon faces the centre from a dark pedestal lettered in gilt with his dates in the Galactic Era; the sphere in his hands glows faintly. Hold your look on it for a second, or press H, click it or tap it: a hologram of one of IX’s pipelines unfolds in a spiral round the statue and replays, step by step in its run order, a real run on the author’s machine, each panel charting its step’s result. Each opening plays the next of five pipelines, and H closes it. It was tested with a simulated look in both renderers and with H in headless Chrome; a tap on a real phone is to verify. It is heard too: a glide as it opens and closes, and a note at each step, from takes the author chose by ear (below). The first time you come within six metres of the statue with the sphere in view, the hologram opens by itself, once, so that it is not found only by chance, and the keyboard help’s third line names H, R and the wand’s TARS; both were tested with a simulated approach in Godot and in headless Chrome, and whether a first visitor finds the TARS from that line is to verify. Hold your look on the gilt inscription of his pedestal, or press R, click it or tap it, and his recording plays, as in Asimov’s Foundation, where his recorded image appears at the appointed hour: dust gathers beside the pedestal and climbs into a life-size Seldon made of points of light, one for each vertex of the statue’s own figure, so that no actor’s face enters the scene. He turns to you, three lines written for this scene show over his head, and he lifts away as dust; R sends him away sooner. It was tested with a simulated look, keys and taps in both renderers and at the lowest quality level; its sound, and a tap on a real phone, are to verify. The capitals, the bases of the piers, the arches, the entablature and the ribs of the ceiling are picked out in gilt, and the floor is paved in rings of pale and dark marble around a compass rose whose points reach out from under the steel box. The light of the galactic core, high over the oculus, casts the shadows of the box, the piers and the statue across the paving, and the marble darkens where they meet the floor. Over each bay, on the entablature, a mosaic panel gathers itself out of drifting gold dust when you hold your look on it for a second, click it or tap it, and goes back to dust half a minute after you look away: the author asked for frescoes of nanoparticles like those of the Foundation TV series. The sixteen panels, galaxies, books and instruments in the manner of a Byzantine gold mosaic, were drawn locally by Z-Image-Turbo and contain no figure, lettering or image from the series. On a weak GPU the idle dust goes and fewer particles fly. The frieze was tested with a simulated look, clicks and taps in both renderers and at the lowest quality level, and with a click in headless Chrome; a tap on a real phone is to verify. Once a panel is whole, it comes alive while it stays: a few seconds of video, made locally by Wan 2.2 from the panel’s own image, play forwards and backwards, one point of colour per tessera, so that the drawn mosaic stays where nothing moves; with the system’s reduced-motion setting on, the panels keep still. This was tested with a simulated look in both renderers and in headless Chrome, on the RTX and with SwiftShader standing in for a weak GPU; whether the motion reads as life rather than flicker from the floor is to verify. The scene’s sounds, those of the wheel’s curios, the TARS’s steps, the lift, the hologram, the frieze, Seldon’s recording and the drone, are takes the author chose by ear, most from two, made locally by Stable Audio 3 Small SFX from a short written description of each sound; the drone’s hum is the exception: the author found it too loud and heard its loop, so it is now a steady synthesis, far quieter, written to loop without a seam; each of the others keeps the sound the scene synthesised before as its fallback. In headless Chrome, sound starts at the first tap or key as before, eight walking TARS sound about as loud as before, and no sample went over full scale; on a real phone, by ear, they are to verify. In the web version, the drone’s and the lift’s hums still break off for a moment where their loop ends, as the synthesised hums did; that is to fix. Under the version line, a second line now says which version is running: on this page it is always the web version (WebGL 2), at the quality level the scene chose for the device; the native version for RTX graphics cards is a separate download, described at the top of this page.

The sky over the oculus is Trantor’s, not Earth’s. Trantor lies near the centre of the Galaxy, so its core stands high and large, and stars crowd towards it. Around the core, the Galaxy’s bulge and dust lanes are an image drawn locally by Z-Image-Turbo; beyond it, the Milky Way is ESO’s panorama by Serge Brunier, re-projected as if seen from nearer the centre. Both are an interpretation, not a simulation: the panorama’s stars and dust lanes are still those seen from Earth. Under it, the orrery is brass and ivory. From the roof (9), the palace gardens of Trantor and the city’s towers round them lie under the core’s light, and the drum is dressed limestone banded with brushed steel: Blender modelled the courses, chamfers, joints, bolted bands and slotted plates, and SDXL 1.0 drew the grain of the stone and of the steel. Its cost on a phone is not measured yet (to verify).

Two bays of the ground-level shelves, either side of the lift, are glazed, and their lower lights are French doors: walk towards one, and its two leaves swing out over the terrace; walk on through, and you are in the gardens on foot. Through them lie the palace gardens of Trantor, in Prelude to Foundation the one place on the planet under open sky: a terrace with a balustrade, lanterns and orange trees in Versailles boxes, ten metres below it a parterre de broderie, scrolls of clipped box on crushed brick between gravel walks, round a basin whose fountain has two bowls, then a canal 160 metres long, a hedge maze whose lanterns light its path to the temple and the hedges beside them, an orchard, avenues of lamps, woods, the Imperial Palace at the far end, and round the horizon the city at night. Coloured light falls through the bays’ fanlights onto the floor. Press G (on a touch screen, Ride) to ride a self-balancing scooter in the gardens, from the terrace down a ramp to the parterre: W/S (or Z/S) forward and back, A/D (or Q/D) to turn, Shift to go faster; the mouse looks round, and a moving scooter steers where you look. Hedges, trees, lamp posts, the water and the walls stop it. Hands off for three seconds, the scooter rides a tour of the gardens by itself: down the ramp, round the parterre, beside the canal to its far end and back, slowing behind the strollers; away from the tour, it finds its way back, retracing your path when it must. A key or the stick takes over. G again (or Get off) gets you off beside the scooter, to walk in the gardens as in the hall; G beside it (or Ride) gets you back on, and a view (1 to 9, or Views) brings you back inside. The leaves, the bark, the stone’s grain and the ground’s gravel, crushed brick and lawn are images drawn locally by Z-Image-Turbo, the leaves cut out with BiRefNet; Blender modelled the trees, the clipped hedges, the parterre’s box and yews, the basin and its fountain, the orange trees’ boxes, the scooter, the balusters and the lanterns, and rendered the trees seen from afar. The gardens and the ride were tested in both renderers, with keys, with a touch screen’s button and stick, and at 10 frames a second, then in headless Chrome on a computer, a phone and a tablet, on an RTX 5080 and on Chrome’s CPU renderer standing in for a weak GPU; a real phone is to verify.

A sparse crowd strolls in the gardens now, about a hundred people: courtiers in long robes, ladies in flared gowns, walkers in tunics and gardeners in wide hats, faceless and in the gardens’ own colours. They keep to the right on the terrace, the ramp, the parterre’s walks, the canal’s banks, the avenues, the orchard and the maze’s way to its temple, slow behind someone slower, step aside for whoever comes the other way, pause at the end of a walk before turning back, and stop when the scooter comes at them; others stand at the balustrade, by the basin, among the orchard’s beds and in the temple. Blender modelled the four figures from a script written for the scene, and a shader walks them, one foot planted on the ground while the other swings. A slower device shows fewer of them. The crowd was tested in both renderers, on a phone’s screen and at 10 frames a second with a one-second stall, for walks clear of the hedges, water and walls, for nobody walking through anybody, and for stopping before the scooter, then in headless Chrome on a computer, a phone and a tablet, on an RTX 5080 and on Chrome’s CPU renderer; a real phone is to verify.

The palace at the canal’s far end is a model now, where a painted card stood: a podium and a stair, a rotunda of three colonnaded tiers with flying buttresses, a pointed dome of blue glass on gilt ribs under a spire and a beam of light, a Gothic gate tower with a rose window, galleries, and two pylons with obelisks, all picked out in lines of cyan light. The design is the scene’s own, built in Blender by a script; Blender’s Cycles baked its light into a map, so that the browser only has to draw it, and the canal, kept still, mirrors it. Round the grounds lies Trantor at night, in blue and cyan, in place of the painted towers: a street plan laid out by a script, in which IX groups the districts (k-means) and traces the boulevards (shortest paths through the districts’ graph), night facades drawn locally by Z-Image-Turbo, and, 2 km out, a downtown of six landmark towers modelled in Blender; the sky glows over the city, and low cloud is lit from below.

On the canal, a fountain show plays in a loop of two minutes: 288 jets in two rows, a line of tall shooters, three rings and a fan at each end, lit from under in changing colours, through ten scenes: a veil, a wave running down the canal, sways, a vault closing over the water, a double helix, baskets, a braid, a chase, a fan, and a finale that climbs to 60 metres. Nothing in it is simulated: a shader draws each jet where the water that left its nozzle a moment earlier has flown since, so a nozzle that sways throws a whip that lags behind it, and a valve that shuts leaves its last water rising alone. The canal mirrors the show. A slower device gets it without its spray and its reflection, and the slowest without the show.

Bay 10 of the hall, where shelves stood, is the portal of a library wing: a vaulted vestibule with looking glasses, then a nave of eight bays of book alcoves under a giant order of piers that carries a gallery, a bust before each pier, a barrel vault in dark wood, chandeliers, and an end window on the city. Walk in, or fly in (F); the wing is modelled by the scene’s own code. Press O to put your eye to a telescope, wherever you stand: a round eyepiece with a reticle, which opens at 12 times; the wheel, or + and -, sets its power from 6 to 100, and the mouse turns it as much more slowly. O or Esc takes it away.

Version 42 was tested on its own build with Godot 4.6.1, in both renderers: walking out through each of the two doors and back in, one of them also at 10 frames a second, walking and flying the length of the wing, the parterre, the basin, the telescope up to 100 times, the show’s water staying inside the canal over a whole loop, and the earlier versions’ runs, 96 in all. All passed but one, a probe’s known miss since version 31; twelve needed a second run, four of them after the crowd’s walks beside the parterre were made narrower. In headless Chrome, on an RTX 5080, at a computer’s size and at a phone’s screen size, the scene held 60 frames a second at the start, in the gardens, on the scooter, in the wing and at the telescope; it started in about 6 seconds, and in 26 seconds the first time, when the browser compiles its shaders. On Chrome’s CPU renderer, standing in for a weak GPU, it starts and settles at its lightest level, too slow to use (a frame every 1.5 seconds in the hall). Known: past 57 times, the telescope makes the browser’s console print an error at every frame (the canal’s mirror cannot follow so narrow a field); the picture’s pace does not change, and the fix waits for the next version. A real phone is to verify.

Since version 43 the web version keeps a copy of itself in your browser and updates itself: you no longer have to clear the cache to get a new version. Once the scene has run for about fifteen seconds, the page installs a small service worker written for the scene, which downloads the version’s twelve files again, about 55 MB through GitHub Pages’ compression, and from then on starts the scene from that copy, with or without a network. At each visit, and whenever the installed app comes back to the foreground, the browser checks whether a newer version is published; if one is, the worker downloads it in the background, checking each file with the server so that no stale copy from the browser’s cache slips in, and the page then reloads by itself if the scene has not started yet, or else shows a line to tap: Version 44 is ready. Tap here to reload. Either way, the next visit opens the new version. In Chrome and Edge, on a computer or on Android, the observatory can be installed as an app (Install in the address bar or the menu; on Android, Add to home screen), which opens full screen; on an iPhone or an iPad, Safari’s Share, then Add to Home Screen. The first visit downloads the version twice, once to start and once for the copy, because the browser does not lend the worker the files the page has just downloaded (measured); this is to improve. Opening the demo with ?sw=0 removes the worker and its copy.

The version’s number is now written large on the steel box, over its door and on its three other sides, so you can tell which one you have. Over the library wing’s portal, a stone canopy on two stepped consoles closes the dark gap under the walkway, where the walkway’s shelves looked like a bar of books in the air. And Trantor at night stays round the gardens on every device: a phone or a tablet that lowered its quality far enough lost the city along with the far woods.

Version 43 was tested on the build published, in headless Chromium on an RTX 5080 against a server that sends the files as GitHub Pages does: version 42’s eleven web tests all pass and report version 43, with an empty console, the telescope at 100 times included, and frames at 16.7 ms; the installable build’s four steps pass: a first visit keeps the copy, the scene starts from it with the server stopped, an older page offers the new version (about a minute after opening; why a minute is not yet known) and a tap brings it, and a page in French says so in French. Natively, under both of Godot’s renderers, the box reads v43, the canopy closes the gap, and sixteen of version 42’s checks that touch these changes pass. A real phone or tablet, Safari, Firefox and the first update on GitHub Pages itself are to verify.

Version 44 clears the way into the gardens and the library wing. The French doors and the wing’s portal are three bays of the hall’s shelves left open, but the row of this site’s courses came back across them whenever the scene built its shelves again: when the site’s course list, newer than the one the version carries, arrived a moment after the start, and at each change of language. A row of books then hung in the doorway and barred the way. The shelves now leave those three bays open every time.

Version 44 was tested on the build published, in headless Chromium on an RTX 5080 against a server that sends the files as GitHub Pages does: version 43’s eleven web tests all pass and report version 44, with an empty console. Placed in front of the wing’s portal and in front of a French door, with the site’s course list of 2026-10-14, version 43 shows the row of books across both and version 44 neither. Natively, under Godot 4.6.1, a check opens the three bays, changes the language and finds no row in them, and its control, the fix taken away, finds the row back.

Version 48 brings to the web what the native RTX player gained in its versions 45 to 47 and a browser can run. The night city lives: its windows, storeys and photographed facades go dark and light again, each in its own time, a few rooms flicker with a screen, and a third of the columns of light turn as searchlights while the others sway, with pulses rising up them. The ride is now an electric kick scooter: G brings it from anywhere on foot; beside it, it lights up and a tag shows the key, and E or G gets on. People in the gardens step round each other and round you. A second library wing opens at bay 13. At the telescope (O), Enter takes you to the ground in its sights. The drone does stunts while Shift is held, and flies by hand with WASD (ZQSD on an AZERTY keyboard), Space and C; its autopilot takes it back when you let go. And the duck has toys, on the Jolt physics engine: on the curio wheel (Tab), with the duck in hand, a short tap of Shift steps through a duck gun, two, two dice guns that throw d6, d8, d12 and d20 (a mouse button each; Backspace picks the dice up), and a domino layer (hold the left button to lay a line where you look, the wheel sets the size, the right button pushes one over, Backspace takes the last line away, Delete every toy). The toys, the drone’s stunts and flight by hand, and the scooter’s keys need a keyboard and a mouse. The Place du Capitole, the palace’s clock, the hedges in volume and the photographed people stay in the native player.

Version 48 was tested on the build published, in headless Chromium on an RTX 5080 against a server that sends the files as GitHub Pages does: version 44’s eleven web tests and two of its own pass and report version 48, with an empty console. The toys run on Jolt in the browser: 120 dice thrown on the hall’s floor come to rest in 3.7 s, a pushed line of 40 dominoes is down in 5.3 s, and 932 dominoes with 300 dice dropped among them come to rest without one falling, the frames still coming every 16.7 ms. Over a minute, 1.2 to 9.4 % of the night city’s tower pixels changed. Natively, under Godot 4.6.1, 105 of version 48’s 106 regression runs pass; the other has missed its mark by a hundredth since version 31. Six checks that the second wing made wrong (they counted on the books’ old order, or looked at a wall that now has an opening at the edge of the view) were corrected and pass. A real phone or tablet, Safari, Firefox, the toys on a touch screen and the update on GitHub Pages itself are to verify.

Version 49 brings the duck’s toys to touch screens. With the duck in hand (the curio wheel’s button, then the duck’s slot), a button over the wheel’s steps the modes. With a gun, FIRE at the right fires while you hold it, and with the dice guns PICK UP picks the dice up. With the domino layer, hold LAY and sweep your view along the floor to lay a line; PUSH knocks one over, the size button steps the size, and UNDO takes the last line away, or every toy if you hold it down. The dice and dominoes now stop at the open bays’ French doors and roll on into the library wings, and you knock them over as you walk or ride through them.

Version 49 was tested on the build published, in headless Chrome on an RTX 5080 against a server that sends the files as GitHub Pages does: version 48’s twelve web tests and one of its own pass and report version 49, with an empty console. On a phone’s screen, upright and sideways, the duck’s toys show their buttons clear of the other controls and of the language selector: held, fire threw over 30 dice in a second and a half, a tap picked them up, and the domino layer laid, cleared and went back to the duck. By the keys, 120 dice thrown on the hall’s floor come to rest in 3.7 s, a pushed line of 40 dominoes is down in 5.2 s, and 930 dominoes with 300 dice dropped among them come to rest without one falling, the frames still coming every 16.7 ms. Natively, under Godot 4.6.1, all 52 regression runs pass: every one that opens no window, and those in a window that touch what changed. A real phone or tablet, Safari, Firefox and the update on GitHub Pages itself are to verify.

Double-click the steel box (double-tap it on a touch screen) to step into the multiverse corridor: an endless row of numbered steel doors under faint ceiling lamps, lit by the lantern you carry, each glowing with the light of another world. The idea comes from Blake Crouch’s novel Dark Matter; the corridor and its twelve worlds are shaders of our own. The Leave button, Esc, or the lit doorway behind you bring you back in front of the box.

This prototype contains a Blender-authored, textured steel portal and textures generated locally with ComfyUI. The steel box has been rebuilt in Blender: its sheet folds round the corners, its seam bands are slimmer, its rivets stand a little off their lines, with a few hex bolts and a few missing, and its door has three hinges and a brass lever handle; its brushed steel is darker and more worn, a little lighter in the browser, where the scene has no indirect light. The marble, the grain of the book bindings, the tooled stone, the grime on the steel and three stained-glass panels (sun and moon, an elven tree, an alembic) come from cached SDXL 1.0; the pier ornament comes from SDXL 1.0 with cached ControlNet Union SDXL. Shaders turn them into leather and cloth bindings with raised bands and gilt rules, dressed stone with joints and coffers, brushed steel and backlit stained glass. The balustrade has turned bronze balusters under a walnut handrail. The statue was generated locally too: Z-Image-Turbo drew an invented elderly scholar, not the likeness of any actor, and TRELLIS.2 turned the image into a mesh, remeshed in ComfyUI and normalised in Blender; a shader gives it white marble.

The source scene’s richer desktop rendering uses Godot Forward+ features, including screen-space reflections, indirect light, volumetric fog and glow. The browser build uses Godot’s WebGL 2 Compatibility renderer, so those desktop-only effects are reduced or absent: the stained glass throws no shafts of light there, and the books, bronze and steel get simple stand-ins for the missing indirect light. For anti-aliasing, a computer renders the scene 1.5 times finer than the screen and scales it down, and a phone or tablet uses 4x multisampling; each steps down if frames get slow. If frames still come slower than about 36 a second, the scene lowers its own quality in steps and says so at the bottom of the screen: anti-aliasing first, then the glow and the gilt ornament, then a lower resolution with simpler books and balusters, then the shadows and the far lamps. Add ?quality=0 to the address to keep everything, or ?quality=1 to 5 for a fixed level. On a first visit, while the browser compiles the scene’s shaders, frames come slow for a few seconds; if the scene stepped down then, it steps back up once when frames come fast again. In Chrome’s software renderer, standing in for the weakest GPU, a frame went from 1.5 to 0.4 seconds; on real weak GPUs it is to verify. Their cost on a real phone is not measured yet (to verify). Neither build claims real-time hardware ray tracing; Blender Cycles baked the steel textures, but does not render the interactive scene.

The room is still stylized, especially its central beam, and the lettering on the book spines is decorative glyphs, not readable titles; only the courses’ spines carry real ones. This is a playable prototype, not a finished photorealistic environment. The Blender course and ComfyUI course explain the tools behind the asset pipeline.

Credits and notices: Godot Engine and bundled libraries; SDXL 1.0 model license (CreativeML Open RAIL++-M); ControlNet Union SDXL (Apache-2.0); Z-Image-Turbo and its Qwen3 4B text encoder (Apache-2.0); Wan 2.2 TI2V-5B and its umT5-XXL text encoder (Apache-2.0); Stable Audio 3 Small SFX, Powered by Stability AI (Stability AI Community License), and its T5Gemma text encoder (Gemma Terms of Use); BiRefNet (MIT); TRELLIS.2 (MIT). Built with DINOv3: TRELLIS.2’s image encoder is Meta’s DINOv3, under the DINOv3 License. The generated textures and the statue are assets, not redistributed model weights. The Milky Way is ESO’s panorama by ESO/S. Brunier, under CC BY 4.0, re-projected, reduced and dimmed.