Feedback and questions appreciated! Currently, this is an early alpha. Demo → https://alpha.moonwurms.pages.dev
The world space rendering features really helped this one along, and saved me countless hours of trying to figure out the real math behind how all this works!
You are a flying space wurm, on the moon! Your primary goal is to learn about the moon and its various physical features. Your secondary goal is to eat food and clear ring sets. Your last goal is to communicate with others and explore the moon together.
The moon 3dtileset is provided by Cesium Ion, and CesiumJS has been patched to work with BabylonJS. This is the technical bit that made the demo work, and is the coolest part according to me. ![]()
Audio chat is p2p webrtc so that you can talk to friends or other people exploring the moon. I specifically wanted to avoid myself paying a monthly bill for this webapp being up, and found a way to do it. Using cloudflare durable objects as a state-sharing mechanism to negotiate webtc connections is basically free. I may get a bill of a dollar or two if hundreds of people use the webapp but I expect most traffic to fall into cloudflare’s free tier.
Background sky/space data source is NASA’s deep star map 2020, meaning all stars in the sky are scientifically accurate. Due to the image being mostly one color (black), the 450mb exf image was able to be compressed into a 500kb webp image. I was shocked, and it looks so very nice!
The driving narrative of the webapp is ‘science-minded early edutainment’, and sure enough, after playing it a bit I will forever be able to tell the difference between the tycho crater and the Copernicus craters.
The webapp is in early alpha, but I wanted to show it here and get some feedback on the mechanics. You can append ?debug=1 to the url and enable the panels to control the flight speed and curves. Changing those values changes the gameplay mechanics. I’m using a hill curve to power the altitude + speed combining, such that low altitude = low speed, high altitude = high speed. The hill curve describes the mechanics of how leaving and returning to the moon behave visually as well as how flying feels close to the surface. If you find the speed/flying strange, I would appreciate any tweaking of those numbers to make it ‘feel better’ flying. Could also really use some help on getting the deviceorientationcamera to behave given a geo-context, where up is kinda relative to where you are on the surface, outside of world space.
WASD move directionally up/down/left/right
IJKL rotate directionally up/down/left/right
U/O rotate “corkscrew” or “barrel roll” left/right
; set perspective to planet horizon
[/’ face outward/inward to moon center
Tab key (in debug) shows camera mechanic details like raytraces etc.
For fun, I also put constellation and their boundary layers on, so you can see the accurate constellations too!
The stars actually sparkle, due to what I think is oversampling the image size with so many different white dots. its 16k image for the background on a standard HD screen.




