66 comments

[ 5.2 ms ] story [ 72.0 ms ] thread
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.

I wonder if this is also how Eskil Steenberg's 'Love' worked. [0]

It had a spherical 'block' world as well.

[0]: https://www.quelsolaar.com/love/

What a strange webpage, it almost feels like the author deliberately avoids describing the game in any way and talks literally about anything else.

In case anyone else is curious, here is the description (one click away from the main page):

> LOVE is a cooperative online first person adventiure game. You play as a scavanger on a small planet who together with other scvangers will build a settlement by placeing a Monolith some where in the world. This Monolith makes the ground lose so that you can shape the environment around it in to what ever you want. Build walls, catacoms, houses and shape your settlement any way you want.

I wish minecraft would adopt this mode! I'd love limited collab worlds.
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.

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.
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.

Everyone wants to dig to the core (and build a cool zero g habitat there), at least that was the first thing I did :)
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
> I would love a Minecraft + Kerbal Space Program fusion game

You might like Space Engineers.

Unfortunately Space Engineers is full of jank and random things will explode through no fault of your own. Actually, I guess that's on par with Kerbal Space Program-y. Also, Space Engineers will sometimes crash to desktop.

There's a Space Engineers 2 in development and I have good hopes for it.

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.
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.
I like the shader you used for the core.
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.
You still have the 'pointy' problem, even with many layers, no? The bottom-most block has to be a triangle.
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.
> 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.

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

This is a great demo. I love the laser, just destroying an entire voxel planet was pretty fun.
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!

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.

[0] https://youtube.com/@incandescentgames

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.

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.
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!