Wonderful write-up of attempting to tackle this problem. I believe there must be a significant number of people who have played both Minecraft and Super Mario Galaxy, and had something like this sequence of thoughts - although you have followed it all the way to an actual demonstration, and written up your thoughts along the way so clearly.
The vertical distortion is the biggest issue IMO, there are a few reasonably satisfying ways to approach the horizontal tiling of each “shell”. For example, you can make your world a donut instead of a sphere, and now you have a perfect grid at each level! Of course, this introduces a level of distortion between the interior and exterior, so you also twist the donut once, and now you’ve both solved your distortion problem and invented the stellarator fusion device.
Never played Super Mario Galaxy. How does it relate to this topic?
Many of the levels in that game take place on tiny planetoids with spherical surfaces and central gravity. "Spherical" sells it short, there were some truly wild topologies around which Mario could run and jump.
It has lots of little planets with their own gravity you can jump between.
Space engineers
You should definitely have a look at space engineers. They have a similar spherical problem with their voxels and I don’t think they went half as far as you did when implementing “orbital bodies”.
As someone who is rather keen on space, gfx, and the algorithms that render them. Kudos. The problems were known to me, which is why I didn’t attempt it, however - the distortion correction, the chunking, I’m thinking if you just limit how far down you can dig (half way to the “core”) it will be fine. You won’t run into those tiny squished blocks that make up the core.
It’s also important to call out the quad-sphere. This is what makes it doable. Naive devs may just map lat long to sin cos spherical coordinates and call it a day, not realizing that their poles are jacked up. The cartography problem. I’m really glad to see that called out as people don’t realize WGS84 sucks for mapping a sphere.
Not allowing excavation to the core solves weird gravity issue as well. Astroneer had super weird gravity at their planet core. You can get stuck oscillating there.
If you really wanted to go for realism, there would be NO GRAVITY at the core. :P
As you dig down you would get lighter and lighter on your feet.
Any mass you are below (within the sphere of Earth) will exert a gravitational pull in one direction, while the mass above you (also within the Earth) will exert an equal and opposite pull.
If you REALLY want to aim for realism, gravity should depend on all quads on the planet. So, if you were to build a huge floating island, the gravity between it and the planet would be less than the usual
If you really truly wanted to aim for realism, digging to the core would require a huge budget and an international coalition that would get bogged down in politics and mismanagement and it would never happen.
Yeah, I'm mostly aware of that. Weird didn't mean 'wrong' in this case, just weird for a terrestrial-bound human. :)
There’s all sorts of weird physics in the universe ;)
That's how it's implemented in the game!
That actually sounds pretty close to what I would expect to happen IRL. After all the mass is mostly all around you at that point and depending on how far you are towards the core you might build up speed, overshoot the target and then do it all over again.
But hollow planets are hard to come by so this is just my imagination, I'm sure someone has worked out exactly what would happen.
Newton worked this out in what is now know as the shell theorem. If you have a hollow spherically symmetric body, then any point inside of the body experiences no net gravitational force. In contrast, points outside of the shell experience the same force as if the body were a point mass.
For ideal (spherically symmetric) planets where a point is underground, you can divide the planet into 2 regions. The shell of the planet "above" the point has no net effect, while the shell below has the full effect, resulting in the gravity falling towards 0 as you approach the center.
In practice, planets are not actually spherically symmetric, but are close enough for it to be a good approximation.
That's super interesting, thank you for posting this!
I think the outer wilds did this perfectly. I seem to remember falling towards the core and gravity just disappearing.
My understanding is Space Engineers takes the "blocky sphere" approach mentioned early in the post, works around the "walk along its surface" part of the problem by making gravity direction point towards a fixed point, and bypasses the "trying to build 'upward'" part of it by not allowing voxel construction. It doesn't use a quad-sphere at all.
Correct, which is why I said they didn’t go half as far as the OP did. Most stop at quadsphere after realizing their blocks are no longer square.
thats why a liquid core is needed in the matrix
Curious about this, is there actually a canonical explanation in the trilogy somewhere?
This is SO fun! You have the foundation for a cool voxel-y interplanetary game if that's your jam. I had fun "getting into orbit" and watching my velocity increase at periapsis and decrease at apoapsis, then descending and landing with the rocket power button ([Space]). I would love a Minecraft + Kerbal Space Program fusion game and most of the pieces for it are already here. :D
Eco: Global Survival (https://play.eco/) bypassed the distortion problem entirely by using an undistorted flat voxel grid, but rendering the globe view as a torisphere.
It still has the tradeoff of making travel close to the center take longer than it should on a sphere (worked around by limiting diggable height), but i find it a more elegant solution.
It's an elegant rendering trick, but if their worlds are represented as a torus, then I expect this would make rotation on a spherical globe view unintuitive.
One example of this: I would expect each location would not have a single antipode (opposite coordinate) but would instead have three. If you were to start at location A, rotate travel 180 degrees along the latitudinal axis to location B, then 180 degrees around the longitudinal axis... on a sphere you would expect to be back at location A, albeit upside down. But on a torus, you are in a completely different location, which is the 'C' antipode. Rotating 180 degrees latitudinally from here will bring you to point D, the last of the antipode set.
I don't find it to be a problem as planning a route from A to B isn't done by looking directly for it, but by subconsciously referring to and plotting a path through landmarks along the way that aren't close to antipodal.
One of the worlds i played on had road planning from the start and a set of roadways covering the entire world in a 4x4 square grid. Pathing to point D was just a matter of going 2 blocks in one direction, and 2 blocks in an orthogonal to it.
In a world without such roadways, you'd look for landmarks such as oceans and continents instead.
Ultimately, you don't care if somewhere is antipodal or not because you never see the antipodes to where the globe is currently looking at without rotating the globe.
I had a similar idea while reading this article, it’s very cool to see someone implemented it!
The article doesn't describe the way to avoid the difference in rectangle size in a cubesphere, so let me.
The bad way: - Generate a cube - Subdivide each face using linear interpolation (lerp) - Normalize each vector to put it on a unit sphere
The good way: - Generate a cube - Subdivide using spherical linear interpolation (slerp) - done!
The cubesphere has lots of interesting geometric properties, particularly in texture mapping.
This was beautifully written and illustrated.
I think Tiny Glade and games like it are the advanced iterations of minecraft.
Yep, pure joy to read.
This reminded me of another attempt, but in Minetest:
- https://youtu.be/ztAg643gJBA?si=8vDgg0rFCOj9I7no
This person has another, more technical video where they talk about the math behind it btw
I took a swing at something vaguely similar a long time ago now: https://github.com/jeffparsons/planetkit
My approach was to build a hex grid on a geodesic sphere. It's a very different trade-off.
I suppose the same shell trick could also work on hyperbolic maps too, right? I've wondered what Minecraft would look like on a hyperbolic plane, if you were to squeeze an exponential amount of terrain within a linear radius. It's a strange thing to say, but I think it's more "practical" than Euclidean geometry in the sense that every is very close to everything, but there's still plenty of room.
I wonder if this is also how Eskil Steenberg's 'Love' worked. [0]
It had a spherical 'block' world as well.
I came here to also mention this game, it suffered from a bunch of gameplay issues but the tech was absolutely fascinating.
This is a problem I have spent quite some time thinking about but never came up with such an elegant solution. Fantastic write-up, thanks. I do hope you open source it at some stage, would love to have a play around with the code.
Earlier versions of the now abandoned Seed of Andromeda [0] [1] had planet-scale voxels with physics! I remember causing huge avalanches with explosions, or watching many pools of water flowing downhill [2] myself, it had so much potential..
There was a dev blog or two I couldn't find in Wayback except a YouTube video [3] on how they mapped the sphere to voxels. Not that one would notice much local effects at these scales (Flat Earth illusion), but Blocky Planet showcases the other end of the extremes, where Distant Horizons' curvature option or some other rounded world shaders out there could never achieve! (+Outer Wilds vibes)
[0]: https://github.com/RegrowthStudios
[1]: https://web.archive.org/web/20210416224527/https://www.seedo...
[2]: https://youtu.be/qCoyNH6y7CU?t=529 + at 9:23
In a similar voxel system, for Roblox there is: https://web.roblox.com/games/4597506405/Gravity-Controller, my youngest son made a game based on it: https://www.robloxgo.com/game/4617217359/Gravity-Combat
I wonder if there's a way to do something similar to Rectangular Surface Parameterization[1] with voxels. It would allow you to get pretty even-volumed voxels, and also simplify vertex identification (same three coordinates, nonlinear connection).
[1]: https://www.cs.cmu.edu/~kmcrane/Projects/RectangularSurfaceP...
Super cool demo!
I think the only thing that could dethrone Minecraft would be a voxel game with much smaller voxels (relative to the first person view). Maybe 1/8th the size of Minecraft blocks.
Given how naturally you can map a grid of quads onto a strip of adjacent triangular faces, I wonder if you might end up with a better distribution of the distortion using a geodesic sphere rather than a puffed-out cube as the basis— at the cost, of course, of an even more hair-raising coordinate scheme for actually addressing it all.
Anyway, you're never going to avoid the existence of some special nodes where three corners come together, and this does nothing to address the altitude problem, but I think it might result in a more uniform surface especially as the overall diameter goes up.
I wonder if it is possible to avoid "digging deep" problem by first building a cube out of voxels and then applying the type of distortion that turns the cube into quad sphere not just to the surface of the cube but also to the insides of the cube.
I don't know how to explain it better, perhaps I should try to write some code, lol
I see what you mean. An assumption in Minecraft-style games is the character stays the same size, but this needn't be the case. Your character could get smaller the further you dig down in order to match the decreasing size of the interior voxels. This would even create a kind of forced-perspective effect when looking down a hole, as objects at the bottom would look far more distant than they really are.
It seems like the easiest way would be if you hit immutable lava at some point.
Just like in real life. Wait a sec...
I had a bit of fun playing with the orbital mechanics of it. First soaring around the planet core, then around the planet itself.
At one point I flew far enough into space that I passed the star objects and everything got dark. That was a bit disquieting.
Very cool little game!
This made me think of Google's S2. 64-bit ID for every less-than-1cm^2 roughly-square area on Earth's surface, less bits used for bigger areas.
https://docs.google.com/presentation/d/1Hl4KapfAENAOf4gv-pSn...
Flying up too high becomes quite interesting. Eventually you hit the point where you're missing the ground and end up on an upward spiral... essentially falling up. You have to go backward to find a place where you can start falling down back toward the ground.
This could be fixed by adding a barrier at a high enough altitude. A firmament if you will. This would allow the minecraft map to appear round, when we all know it's really flat...
My favorite Spherical Minecraft-like gamedev project is PlanetSmith [0], which uses hexagonal voxels (and a few pentagonal voxels). The devlogs are very well produced and I highly recommend checking them out.
This is mentioned in the article:
> You can even reduce the amount of visible distortion by restricting players to a portion of a shell, so they never see the full difference in block size at its top and bottom.
> From what I can tell, this seems to be the approach used by the upcoming game PlanetSmith for its hexagonal-blocky planets.
This is really great. I‘m wondering how hard would it be to go from a spherical minecraft world to one on the inside of a cylinder? (Rotating for artifical gravity)
I.e. the inside of an O‘Neill cylinder. I love visualisations of their inside.
Huh, I submitted this article last week when it came out and it didn’t get any attention at all.
This demo is super cool! I’ve been dreaming about a game with an engine like this for the last 5 years. Super happy to see people experimenting with it!
Wow, Minecraft X Outer Wilds… I should really finish Outer Wilds. It’s incredible and super fun to explore the solar system but I find many of the challenges quite difficult to navigate with the zero g thrusters.
I chuckled when I got to the Core and it was a cube
Neat. Reminds me of Planet Smith, a work in progress game with a similar concept (spherical Minecraft), except it uses hexes instead of cubes. Hexes reduce distortion, but add their own complexity. There’s a small number of pentagons on the surface, too, to make the tiling work.
Getting `ERR_SSL_VERSION_OR_CIPHER_MISMATCH` for link, but non-HTTPS works: http://www.bowerbyte.com/posts/blocky-planet/
I got the same error but I refreshed the page and it let me right through.
also, the certificate on this website was created less than an hour ago: Mon, 01 Sep 2025 15:24:40 GMT
Nice work! I've tinkered with this idea a bit in an unpublished project. How do you handle the singularities at the cube corners where three faces meet?
> dozens of map projections.
This has plagued me for decades and I’ve been exposed to hundreds of projections. Probably thousands if you consider each UTM or MGRS zone to be its own projection.
God do I wish the Earth was flat.
how about making the player smaller as you get closer to the core? then each layer appears the same. would be no seams where layers double/halve.
All these squares make a circle.
This is a great demo. I love the laser, just destroying an entire voxel planet was pretty fun.
Another game that allows building on spherical surfaces is Dyson Sphere Program: https://store.steampowered.com/app/1366540/Dyson_Sphere_Prog...
I made a planetoid Minecraft demo back in the day, but I left the planet as a cube. Each cube had a defined gravity direction, so you could rig it so that no matter what face you were on, gravity pointed "down". Having gravity be a customizable per cube allowed for cool things like having the center of the planet have reversed gravity, so if you dug too deep you'd find a cavern and could walk on the inner surface of the planet , effectively upside down. Or you could have two planets near each other and build upwards until you entered the others gravity well. I also added portals, so you could even jump through a portal fast enough to get thrown up to a neighbouring planet.
Obligatory awkward demo: https://youtu.be/PDZGzL4GRF0?si=K9vfMhbcg5Vvd1_A
I could access the site a minute ago, but now I get "ERR_QUIC_PROTOCOL_ERROR". It works again.
> Not currently, but I may make it public later. The current state of the code isn’t the cleanest, so my sense of pride prevents me from sharing it.
Felt that.
I wish minecraft would adopt this mode! I'd love limited collab worlds.
I tried making spherical grid planets before, and keep on wondering about the best compromises. Looking at the description, your version presumably has:
Certain blocks corresponding to the corners of the cube, where despite anti-distortion efforts the blocks will have one corner at 120° instead of 90°,
Triplets of blocks at these locations, where turning twice gets you back to the first block,
Blocks that get smaller as you mine down, and then suddenly double in size,
Somewhere, down at the core, a regular polyhedron (what shape is it? Must be a cube) made of pyramid blocks that all come to a point in the center.
OK who's fucking downvoting me for thinking about geometry? If one of these assumptions isn't true, go ahead and tell me.
I didn't downvote you, but you're just repeating what's in the article. And you say "presumably" so it sounds like you're guessing without fully reading? Which isn't adding anything to the conversation.
I think only the part about blocks getting smaller as you go down and then doubling in size again is in the article. Will check.
I'm saying "presumably" because of points the article didn't spell out. Edit: I re-read and it doesn't talk about the very much non-cuboid blocks at the corners, or the pointed blocks at the core. Not in words, anyway. They're implied in the pictures.
If you want comments that build on this ... it's the triplets of quads that really bother me. They only appear at eight places on the surface of the planet, but it would mess with strategy in a strategy game (my own efforts were inspired by trying to create Civ on a true sphere) if routes between tiles are sometimes short-circuited. It would also distort house architecture in a sims-like, and mess up city grids if one of these triplet corners happens to be in the middle of your city, which would then go from having north-south and east-west streets to having ... six cardinal directions?
They do mention it:
> When it comes to placing block structures, there are two (2) edge cases that can throw a wrench into things:
> 1. The corners where three (3) sectors meet break the regular horizontal grid topology, since three (3) blocks meet at the corner instead of four (4)
> 2. Vertical shell boundaries break the regular vertical grid topology, since a block can have four (4) vertical neighbors instead of just one (1)
> This means that there are places on our planet where it’s impossible to define a box-shaped zone of blocks that corresponds to the block structure’s source zone. I could just detect and prevent structures from being placed at these locations, but I opted for a more general solution.
> Placing structures will now “work” everywhere, though it can get a little wonky around the problematic areas. Still, I prefer this to having dead zones where no structures can be placed at all.
I am pressed for time now, so I'll just say thank you. Gotta rush off ...
Instead of having weird 8 points in the world where 3 instead of 4 quads meet at a vertex, for minecraft like game it would make more sense to have barrel-like mapping with ice caps being weird zones where you can't build on or you transition from barrel mapping to flat mapping for ice caps, so you have unbuildable ring just on the ice boundary.
on a tangential note I once tried to get pathfinding working on a rhombic dodecahedral honeycomb feeling as regular 3-ish level octtree Dwarf Fortress of 2014-ish vintage was insufficiently weird.
this did not end well, but was hilarious. just to visualise the stuff I had to spend a week gluing cardboard rhombododecahedrons from pizza boxes.
what I learned is that they make much more fun toys than plain old cubes.
and that shallow sparse octtree-like things are in fact better for those kind of games (or GIS for that matter).
how about making the player smaller as you get closer to the core? then each layer would be the same. there would be no seams where layers double/halve.
Could you just cheat and render part of larger square map (with top wrapped to bottom and left wrapped to right) inside a circle and deform it so it just gives illusion but isn't really a sphere?
Quick experiments in blender show me that you can create a cube, then use subdivision modifier to get a fake sphere like the one in the article. Then put camera close to the surface and give it very low focal length. This way it looks like a sphere but the strange points where 3 quads meet are way out of the view so I basically see just one face of 6 sided sphere.
If I now textured this side so that it displays roughly 50% of the square texture containing the world map and scrolled and rotated the texture as I try to "rotate" the sphere I should pretty much not be able tell it from a real sphere but have a 100% normal 2d square Minecraft grid on top of it.
It looks quite nice, even and natural:
Texturing is a bit weird because polar caps are just two regions of the world with stuff in between them in all directions so you need to put them at the right distance and size them properly so they show up. And even then they disappear as you rotate the world by scrolling in W-E direction. To make them visible at all times, you'd need to make them half of your world. Which might be fine for your game to have vast, icy biome connecting north and south of your planet. Or even two separate zones of the planet separated by northern and southern walls of ice.
I'm not sure how well lightning is going to work with such low focal length but it might be fine.
Why can't you cover spherical surface with quads so that 4 lines meet at every vertex? How would the proof of that look?
> If you want only quadrilaterals, and you want most vertices to be a meeting between 4 quadrilaterals, but some places 3 quadrilaterals meet, you can use the Euler characteristic to deduce that there must be 8 of these degenerate vertices.
This looks so cool
A torus would have been easier.
I like the shader you used for the core.
Press E and Q for some lasers