<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Eric He</title>
    <description>The latest articles on DEV Community by Eric He (@eric_he).</description>
    <link>https://dev.to/eric_he</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3985846%2F388b7c97-7db3-47c9-b846-5882dd9b48df.png</url>
      <title>DEV Community: Eric He</title>
      <link>https://dev.to/eric_he</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eric_he"/>
    <language>en</language>
    <item>
      <title>I built a 1:1 solar system with Fable 5 in the days before it was pulled offline</title>
      <dc:creator>Eric He</dc:creator>
      <pubDate>Mon, 15 Jun 2026 16:33:46 +0000</pubDate>
      <link>https://dev.to/eric_he/i-built-a-11-solar-system-with-fable-5-in-the-days-before-it-was-pulled-offline-2kni</link>
      <guid>https://dev.to/eric_he/i-built-a-11-solar-system-with-fable-5-in-the-days-before-it-was-pulled-offline-2kni</guid>
      <description>&lt;h1&gt;
  
  
  I built a 1:1 solar system with Fable 5 in the days before it was pulled offline
&lt;/h1&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/ZcAjBZiuzzg"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
    &lt;iframe src="https://www.youtube.com/embed/3rwShi6oF0o"&gt;
  &lt;/iframe&gt;

&lt;/h2&gt;

&lt;p&gt;On June 9, Anthropic released Claude Fable 5 — the most capable model they'd ever made publicly available. I used it to build the core of a 1:1, real-time solar system that runs in a browser.&lt;/p&gt;

&lt;p&gt;Three days later, on June 12–13, the US government ordered the model pulled offline worldwide over export controls. The tool that built this is gone.&lt;/p&gt;

&lt;p&gt;I finished the rest with older Claude models, added full mobile support, and shipped v2.0.0. &lt;strong&gt;You can open it on your phone right now:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sw.icodestar.net" rel="noopener noreferrer"&gt;https://sw.icodestar.net&lt;/a&gt;&lt;/strong&gt; — pinch to fly from Earth orbit down to standing on the Moon.&lt;/p&gt;

&lt;p&gt;The source and the entire (short) git history are public: &lt;a href="https://github.com/hyqzz/Solar-Wanderer" rel="noopener noreferrer"&gt;https://github.com/hyqzz/Solar-Wanderer&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What it actually is
&lt;/h2&gt;

&lt;p&gt;It's not a skybox with planet textures. It's the solar system at &lt;strong&gt;true 1:1 kilometer scale&lt;/strong&gt;, with every planet placed where NASA JPL ephemerides say it is &lt;strong&gt;right now&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real positions.&lt;/strong&gt; Planets are within &lt;strong&gt;0.074°&lt;/strong&gt; of JPL Horizons; the Moon within ~0.12°; 21 moons fitted from Horizons state vectors stay within 0.22° ten days out. Change the system clock and everything moves like the real thing — you can run time forward a decade at 10 years/second and watch the moons wind around their planets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seamless, no loading screens.&lt;/strong&gt; Orbit → atmosphere → surface → walking → underwater is one continuous transition. Pinch down toward Earth and you fall through the atmosphere and land on the ocean; the water has buoyancy and you can dive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The whole thing.&lt;/strong&gt; 8 planets, the Moon, 21 fitted moons, the asteroid belt, the Kuiper belt, 28 real trans-Neptunian objects, 4 comets with anti-solar tails, and 21 real stars placed at their true 3D distances (they show parallax as you move). Out to &lt;strong&gt;100,000 AU — the Oort Cloud, about 1.6 light-years from the Sun in every direction.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tiny.&lt;/strong&gt; ~200 kB gzipped, no backend, no account, MIT licensed. It's a static site.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's the part that still feels slightly unreal to me: you can pinch from Earth orbit straight down until you're standing on the ocean, watching the sun glint off the water — and it's the same continuous zoom the whole way.&lt;/p&gt;




&lt;h2&gt;
  
  
  The three hard problems
&lt;/h2&gt;

&lt;p&gt;If you've tried to render space at real scale, you already know the enemy: &lt;strong&gt;floating-point precision.&lt;/strong&gt; Three problems had to be solved together.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. You cannot fit the solar system into float32
&lt;/h3&gt;

&lt;p&gt;A GPU works in 32-bit floats. The distance from the Sun to the Oort Cloud is ~1.5 × 10¹³ km. Float32 has ~7 significant digits. If you store positions in absolute coordinates, by the time you're standing on a planet the per-vertex quantization is &lt;em&gt;kilometers&lt;/em&gt; — the ground visibly shudders and shears.&lt;/p&gt;

&lt;p&gt;The fix is a &lt;strong&gt;floating origin&lt;/strong&gt;. All astronomy is computed in &lt;strong&gt;Float64&lt;/strong&gt; (heliocentric ecliptic J2000, in km), but before anything reaches the GPU, the camera's own position is subtracted out, so the scene is always centered on the viewer and the numbers handed to WebGL are small. The world quietly re-bases as you fly. Terrain noise is evaluated in tile-local coordinates for the same reason — sample noise at planet-radius magnitudes and fp32 banding wrecks it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. One depth buffer from 0.5 m to 10¹³ km
&lt;/h3&gt;

&lt;p&gt;A normal perspective depth buffer can't span "half a meter in front of my feet" and "Neptune's orbit" at once — you get catastrophic z-fighting. The answer is a &lt;strong&gt;logarithmic depth buffer&lt;/strong&gt;, which redistributes precision so near and absurdly-far geometry coexist. &lt;code&gt;camera.far&lt;/code&gt; is set to 1 × 10¹⁵ km — about 106 light-years — so the 21 real background stars sit at honest distances and shift with parallax.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Making the landing seamless
&lt;/h3&gt;

&lt;p&gt;The thing people feel but can't name is that there's no "enter planet" button. Orbiting, descending, atmospheric entry, touchdown, walking, and diving are not separate scenes — they're one camera following a single continuous &lt;code&gt;dist&lt;/code&gt;-to-surface curve. On desktop the scroll wheel drives that curve; on mobile, &lt;strong&gt;the pinch gesture is mapped onto the exact same curve&lt;/strong&gt;, so landing with a finger feels identical to landing with a wheel. The atmosphere is ray-marched (Rayleigh + Mie, Nishita-style) per planet, so the sky reddens correctly as you sink into it, and gas giants let you fly down into the cloud layers.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open it:&lt;/strong&gt; &lt;a href="https://sw.icodestar.net" rel="noopener noreferrer"&gt;https://sw.icodestar.net&lt;/a&gt; (works on phones; even better on a desktop)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source / git history:&lt;/strong&gt; &lt;a href="https://github.com/hyqzz/Solar-Wanderer" rel="noopener noreferrer"&gt;https://github.com/hyqzz/Solar-Wanderer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The verification is real: &lt;code&gt;npm run verify&lt;/code&gt; checks live positions against the JPL Horizons API; &lt;code&gt;npm test&lt;/code&gt; runs the offline ephemeris accuracy suite.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pinch out until Earth is a pale blue dot. Then keep going.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built with Three.js + WebGL2. MIT licensed. No account, no backend, no tracking.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webgl</category>
      <category>javascript</category>
      <category>threejs</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
