Reminds me of a very old project for making Minecraft spherical that I saw way back. The Seed of Andromeda project focused on making Minecraft-like worlds at the ground perspective, but then gradually transitioned everything into a sphere as you increased in elevation. However, they suffered from rather bad distortion artifacts near where the corners of the cube would compress into the spherical shape. You still might check out that project for any inspiration or alternative ideas for solutions.
Took me on a bit of a rabbit, shame that project died. Looked interesting. But I guess that was probably bound to happen it had to wide of a scope and only sustained off volunteered labor. Still shame it died :(
He actually then decided to represent the world as a torus, but map it to a sphere. That worked really well. Obviously you cannot map it in anyway that actually removes distortion, but this method lets you hide it really well, and let's you have all cube voxels (especially if the torus is big enough, or you just cheekily map a subsection back to a normal grid when close enough). Still doesn't solve the issues of digging down or building up too high. But I don't think those can be solved.
Holy shit, Ben was actually a friend of mine. Dude got me into opengl programming back when there was like zero online documentation for the API. I was super bummed when he dropped SoA, but my understanding is he's current working with ArenaNet on Guild Wars 2.
really clever solution to making a voxel based world on a round planet! at first when i saw you messing with cubes i sighed, thinking this was just another pointless attempt at wrapping a square grid around a sphere. glad i was proven wrong lol
It might be fun, when expanding this to a full game, to give some significance to the 12 pentagons on the planet. To me, they suggest some kind of magical geometry--maybe sources of power, or ancient dungeons where you can fight bosses. (this is also a handy way to stop players building on them)
This is an excellent devlog, normally I'd say making a steam page on the first devlog is a little hasty but you seem to perfectly understand what you're doing. Can't wait for episode 2!
I think it would be neat if each of the twelve pentagonal points had a significance for the world, maybe they contain a unique structure or other point of interest, though it might be too predictable because once you find one, you can just run in a straight line and find the other eleven. Either way, this is a really cool proof of concept! As I was watching this, I wondered how complicated it'd be to continue curving the voxels inwards as you went further into the world, would they become warped until they became unrecognizable given how much they'd have to curve to fit inside each next layer?
The will get narrow, to prevent this you can only interact with the planets crust which is 512 blocks thick currently, over this distance the change isn't noticeable
You could play into the ease of finding the other points of significance when you've found one by having one main structure that can only be unlocked if you've gone to all the sub-points.
I think the better solution would be to just have a thick crust and the rest of the spheroid be Bedrock, instead of allowing the player to dig closer to the center of the spheroid.
Just so you know, the moment I saw that you were doing an icosahedron based hexagonal grid, I knew my first base (and probably most of the following ones) would be pentagonal - which will be a bit of a change from my current hexagonal minecraft base. …though there is the slight possibility that I'll deliberately ignore the provided grid and make a square base instead…
This is such an amazing idea! would absolutely love to follow this into a full game! One thing i was wondering was that it's sad that you can't have flat walls with this. It might just be something players have to get used to but one way i thought of that might make it possible is if you could split the blocks in half. That way players can create flat walls and more intricate builds.
@@naiknaik8812 I have a prototype block that does this which will be in the next episode, I didn't like how it worked though so it's been shelved for now.... but maybe it comes back in the future with some changes.
@@IncandescentGamesYou're incredibly talented. I'm working on something similar, but not near as complex as this. Considering the problems created by normalizing cube points onto a sphere, I decided to keep cubic voxels and use an interpolated marching cubes algorithm to generate the world. You've found a very neat way around that, and you can emulate voxel building like in micecraft. The method I've chosen means I need to have separate building mechanics. An idea for your hexagonal voxels, though: Maybe when building with certain hexagonal prisms, you can use a wave function collapse algorithm to let the players choose smooth walled blocks without seams. Maybe even windows, doors, and decorative pieces could be placed like this. Many more assets, but a benefit to this is that you could add buildings to your procedural generation pretty easily and have settlements generate. Just a suggestion! Tons of other ways to do it too
Looks great! I made a spherical minecraft demo in Unity too! I stuck with warped cubes as the warping at the "corners" started to grow on me. Id love to know how you managed y levels as that is what was most challenging for me. The size of each block has to grow linearly with the radius, digging down makes the blocks literally smaller. I had to dynamically scale the player, but it looks lie you are avoiding the problem by limiting y to really far from the radius
Yes build height is from 5km from the center to 5.5km, so only a 10% change in block width over 0.5km which isn't noticible. On small worlds it is, but i will restrict build height here, Perhaps blocks fall off into space if you go to high
2:30 imo the edge problem gets fixed if you increase the scale a lot, the angular difference will shrink down immensely and the edge will be nearly nonexistant, furthermore, you can make "flattened terrain" instances on it, areas that you could place on the land and that override world geometry to make it so tall buildings don't flare out the taller they are i'd personally make some kind of "hollow earth" where the diameter of the earth is a dozen kilometers, with bedrock appearing a kilometer deep, so block size difference at the bottom is only 15% smaller than ones at the surface, and with the right LOD, you can still easily see beyond the horizon with a hundred or so blocks over the surface
it'd also allow you to have some places in the bedrock where there's holes, allowing you to get deeper into the mantle, and allow you to reset the scale by having a different grid, and a few "connector" blocks that'd allow you to connect some things like pipes etc between, or using the "flattened terrain" to keep a consistent grid there could be a total of 3 layers, the surface one going from 100% to 85% size from 0 to -1km, a "deep layer" from 100% to 82% size (-1->-2km), and "core" or "hell" layer from 100% to 80% size (-2->-3km), or to go crazier, adding the 9 layers of hell, all the way down to -10->-11km going from 100% to 50% at the bottom before the last kilometer of core that would be unreasonably hard to render given size goes to 0%, leading to divisions by 0, so i guess making it an instakill molten thing, or a no-build zone where some huge megaboss creature lives, would be a good idea
I've always wanted to do this when planning to make a proper space exploration in a voxel world. So far, my best idea had been to make a cube world and just put a hard boundary on the gravity direction, but that would have meant that the blocks on the edge somehow need two different up directions. Though I guess that's actually not impossible to deal with
Looks really interesting. I'm just worried that buildings will look bad if you only have access to hex blocks. The only solution that I can think of is to create a different shape depending on the surrounding blocks, but that might be a lot of work.
You can make a Pentagonal house around a pentagon if you find one. They are hard to find though ut you can use F3 to find a chunk border and follow that to the pentagons
Yes cubes would work ok on a donut world providing it was large enough. I wanted to keep it planet like so the space travel makes more sence in the future.
Absolutely loved the first episode! Your explanations on tackling each challenge were super clear and insightful. It's awesome to see the thought and effort you're putting into PlanetSmith. Really looking forward to seeing where this goes. Keep up the great work!
Very interesting ❤ Love how you came up with your own voxel solutions, for creating a spherical world. Had similar thoughts with my voxel world, but in my case it’s all data points instead of blocks. Really awesome and love it!
one thing that came to my mind is, that if the player is "done" exploring the current world, or is "bored" with it, they can leave the planet and go to another one, one way to do this, is to have "stars" in the sky as white dots, each dot is a seed(has a seed assigned to it randomly), you could potentially get the distance of the player from the planet as they leave it(through a rocket or whatever) and get the seed of the star they are looking at and generate a new planet from it, I don't know just a random idea that popped up in mind, not really that easy to implement but just wanted to share.
For a tech demo, this is a great idea and super fun. But for a real game? Look at Terraria vs Starbound for this: Both at the core are very similar games. In terraria you build a base for all your stuff, often near spawn, or spread out across key locations in the world. In starbound.. you have infinite worlds to explore. You never really settle down, you never build a real base. Eventually all the planets become samey, you spot the repeating patterns - and because you have no investment in any one of these worlds, you lose interest.
@@symmetry8049-- At the same time, many Terraria players create new worlds to harvest resources unavailable in their home worlds, like the other evil biome, sand and trees, and rare loot. Fishing helps with the loot, but Terraria worlds are still a tad small. A small collection of worlds would be nice, like with the Aether and Twilight Forrest being on a different planet.
I was literally just talking about making a game like this the other day. I've been brainstorming on this exact concept for years and haven't mustered the might to start climbing the dev mountain. Great to see someone working on this, I'll be watching your progress!
Dude, I love this! I just wishlisted on Steam. Can't wait to play. I actually really like the shape of the blocks, can't wait to fly around my world. Happy coding!
Whenever I thought about something like this I always concluded that is would be best to tile up dodecahedrons and connect them by their centers with vertices, living with the rotation differences across the planet.
Amazing proof of concept! Sort of getting Astroneer vibes from this too- there's a lot of cool directions you could take this. Excited to see it develop!
how do you prevent gaps forming between the blocks as you get further from the core of the planet if they have these smooth layers? if they get wider as they go up that could get weird, you could be building a pillar and it would be getting wider as you go up. but if they stay the same thickness gaps would form between them. and it looks to have smooth layers for any distance from the core where all those blocks could form a solid shell, and beneath that is a smaller shell but with the same amount of blocks, so how? I guess you could scale the player by their distance from the core, and warp the camera along the vertical direction, to make the world seem square, but surely that would cause issues if you look around at certain angles. idk but its a cool concept, and I can't wait for how you'll implement slabs that can also be vertical to make smooth walls, if you're gonna do stuff like that
Yes blocks do get wider as you go up, Its not really an issue at the % change is small. Build height is 512 blocks so for a planet with a 5km radius that means there is only a 10% difrence between bedrock and max build height. However on tiny planets this can get extream if you planet has a 100m radius blocks will be 6X wider at build height, to combat this I will limit build height on tiny worlds and the smalest world you will be able to make will have a radius of 300m. Haven't decided if im doing vertical slabs yet, but its on the maybe list.
@@IncandescentGames cool, and thanks for answering. now its just a question of what to do with the pentagons, you could maybe embrace their specialness and make them like this games version of the strongholds, with a portal right at that point. but that's just ideas, I'm sure you have ideas already
@@IncandescentGames A possibility to combat this further would be to subdivide after a certain point as well as merge, no easy things of course, though not especially difficult either.
This is really really cool and I'm excited to see where you take this, but would it not be easier to just fake the effect with a vertex shader for curvature and like a modulo function on the player's coordinates for the wrap-around?
Yes and no if you did this you would be on the surface of a donut not a sphere, but i want planets which you can physicaly fly to and from so the elusion would be lost as you fly up.
Nice work man, but, I dont think a "hexagonish" based world will not be as cool as a cubic world. Also, for the Minecraft world be "round" it does not need to be really round, it can be plain as it is, but, somehow in the end of one side of the world it needs to loop back to the other end seamlessly, then its done, you could go in a same direction for a LONG time starting from your house and arriving back to your house from the other side. I already thought about this much time ago, this should be the Minecraft default in my opinion.
This is looking cool so far! However, your voice is very quiet. You should look into turning it up a bit in editing. Ill be interested in seeing how you handle water, how it flows. Also, how do you feel about the size of blocks warping depending on proximity to the planet center? As in, the closer you are to the center, the smaller the blocks are. Is the plan just to live with it?
Can you share the code for rotating the camera to the gravity im trying to figure out how to do it for about a year because most games that have such things are 3rd person
Why don't you make the world a big torus that's mapped to a sphere? That way you could keep the cubes and also have it look like a sphere. Still distortion but you could move much of it onto the sphere projection rather than the voxels. Edit: after more research it turns out my stupid ass didn't actually think this up just now. Found a video on it from "Seed of Andromeda", a really good (now abandoned but at least open source) voxel engine. I think I originally saw this idea back then, but forgot about it.
Why not make it just non-eucludean and keep it flat, just wrapping around (like in pacman)? Topologically it would be a torus, but you can just draw and build like regular Minecraft. But forget that. The curvature looks great.
Wow! I was just looking into goldberg polyhedra! How are you addressing cells? I can't figure out how to do it unambiguously. I was kind of thinking of treating each face as a separate array and then doing two dimensions and offsetting each row... but then there's singularities all along the edges and especially at the vertexes. How did you do it?
There are 62 types of chunks to make it work all connected to the icosahedron. 12 corner, 30 edge and 20 face which are what most chunks are. I'll talk about it again I'm sure
@@IncandescentGames Great job on this technical demo! Do you have some literature/references of how to do cell indexing that you followed? I have been trying to figure out how to do this for a while, but I haven't really managed to find a good way yet
Old project I abandoned to start work on a group project, sphere planets are possible using the noise. Mind you I found it by accident, only partial worked. That's because I have no idea how it works. But it is possible using plug-ins and noise.
Not that it isn't cool as an actual sphere, but what about just.. cheating? E.G. make it a flat world, still divided into chunks as normal, but then load in the chunks in a manner that you "wrap around" as you get close to the "border" And if you still want a curvature to show, that could be done with some shader graphics
very cool project, excited to see it develop. For the bits of code you showed on screen, is there any kind of license on that or are we free to use them?
Very cool! Seeing the basic pickaxe gave me the idea of making the hud and item pictures hexagonal pixel art. Everything in minecraft is a square, why not make everything here a hexagon?
It's a tool, calm down. There is nothing wrong with working with Unity if you already have the experience. It's not so easy to transfer your skills from one engine to another
@@dnoldGames Transferred my 6 years of Unity knowledge + my Unity game that's 8 months in development over to Godot, and surprisingly it was not that bad at all! Took me a week to understand Godot and how it differs from Unity, and after 2 weeks I was at the point where I felt anything I could make in Unity I could make in Godot too (with a bit of extra googling...). Now I'm 2 months in and the Godot version of my game is just about caught up with the Unity version (I have some features left to implement from the Unity version, but I also have some new features that the Unity version didn't have). The workflows of Godot and Unity are very similar but I actually prefer working in Godot now, it's a lot less bloated while still having all the features I need. Like you said, it's a tool. I don't feel loyalty to my game engine of choice any more than I feel loyalty to my hammer. I like my hammer, but if it started charging a fee for every nail I hit with it I would throw it away and look for another brand instantly, no matter how used to the handle I have gotten :)
shouldn't you generate the entire world the first time the player joins and then just load it? I'm pretty sure that would help with performance and since it's finite I don't see any reason it shouldn't work.
How does it deal with Z (up-down) coordinate? Do the blocks get thicker and thicker the farther up you go? Do they get thinner and thinner farther down you go? Do they get subdivided to deal with thickness?
I'm looking forward for next episodes :D It's very cool that you're sharing your knowledge in a neatly packaged video. Also, what version of unity are you using?
Just to confirm, you can actually create meshes (set their vertices etc) WITHIN a Unity job, so you can do it in parallel? Because without jobs, in threads, you can't do it afaik. If that's true I might have to rewrite a bunch of my code...
I'm not sure why you keep saying that C# is emulated. Unless Unity did something weird with how they handle C#, it is compiled to intermediate language (IL) code in the binary, which is then compiled to machine code by the Just In Time (JIT) compiler when the application runs / is running. While it can introduce a small delay for the first execution of a given piece of code, once it is compiled it will execute quickly on subsequent calls.
Maybe an oversimplification, the real reasons are quite complex but come down to how c# handels memory, c# ends up with a lot of fetch and store commands that slow repatative tasks down a lot.
I was really curious to know what happens when you go down? i'm assuming the hexagonal grid on the surface just gets smaller and does not drop any resolution, so do the blocks just get smaller and smaller until you can't fit in 1, and have to mine more blocks? what happens to the geometry around the center of the planet?
You can only interact with the planets crust, at the minute thats 512 blocks, so on a 5km radius planet thats only a 10% change from bedrock to build limit
I highly recommand you to rework your water shader, water isn't transparent so it makes it look weird when you can see things through it that are at the opposite of the planet. It's possible in unity to create water shader with fresnel, depth etc... Otherwise, cool concept ! I had the idea some times ago, but the way I saw it was to just warp the world in the direction your facing (so by still using cubes) but have the world so big that the 256 bloc heigh would all look ok without block going through each other.
This looks amazing! How are you handling the vertical expansion of the hex voxels? Is the planet size just large enough that you can ignore it in the layers that the player is using? Or do the voxels eventually get smaller/larger in scale as you move to and from the origin point of the world?
what would be the build limit? the voxels will scale based on radius from the center. sounds ike you would get some wonky shapes as you build up or dig down.
Your right! I will make sure i talk about this in the next episode, but it's only a 10% change between bedrock and build limit (512 blocks) so not noticble on a standard planet. Can be extream on a tiny planet though so I will limit building height if I alow those worlds
Wouldn't the voxel objects get smaller the closer you are to the center of the world? Not like I can think of a solution for this, and maybe you can consider it a feature (harder to dig down the further you go), but I was surprised it wasn't addressed
There have been a couple minecraft remake projects I've seen recently -- it would be really cool if all the creators worked together to create one massive project!
This is really interesting! I liked the original idea of making the world spherical and just having slightly warped cubes. I wonder, if the world is big enough then the warping shouldn't be noticable right? Of course, the deeper you go, the more warped it would get, so you could make it so that the sphere is hollow and you can only go to a certain depth like in Minecraft anyways. Maybe you could make it so that in the perfectly aligned points of the planet there is a tunnel leading to the other side, just so that potential isn't wasted.
Distortion stays the same no matter the size of the cube. This is because as you approach the edges the cube has to be rotated 45 degrees, size doesn't smooth that out
Very interesting! I've been pondering about spherical Minecraft-like worlds a bit and the approach I was thinking about was to have cubic blocks, just like minecraft but the radius of the world would be so large that on the surface, or the area where the player would be active, kind of like the crust of the earth, would be pretty much flat so you could approximate each block to a cube. This would of course require large planets for the approximation to work but what do you think of that approach?
The problem i showed with the tiny spherical cube doesn't go away with size, even if your planet was the size of earth you get the same shaped cubes at the edges as you still have to distort each cube by 45degrees at an edge
You earned a sub from me. If this turns into a full fledged sandbox survival game like Minecraft, you'll have earned several purchases from me and my friend group. Love the progress you've shown off already!
really cool vid! although if the minecraft world would really be as big as it should/bigger wouldn't having squares instead of hexegons not be too big of a problem?
i never got anywhere past the idea stage but this is something i’ve thought about quite a bit, as i would like to make a voxel space game thing someday. the idea i had was to keep cubes and keep a cube planet, but not 100% a cube, more of a rounded cube, and also distort gravity somewhat (how this would interact with space physics, im not sure, maybe some morphing depending on distance, idk). that way most of the world is regular voxel generation, with variable height offset, but with only special casing on the edges and corners, to round them off. it’s not perfect, but i think cube planets makes diegetic sense for a world made of cubes.
oh dang! i had actually been looking into this exact thing for fun recently. the game "dyson sphere program" is a factory game that takes place on spherical planets, but they use a square grid, which kind of resets at each latitude mark, meaning that you can't build in a straight line from pole to pole. so i was like "what would a better solution to a grid on a sphere be" and i found geodesic polyhedra like the one you're using here.
I've actually been thinking about this I'm not a mathematician, but I imagine a pizza now for every pizza slice, it's a line (arc) that's equal length. once you make the pizza big enough and the slices more, the arcs flatten out. shouldn't that also exist for spheres? a way to subdivide a sphere into 4-sided shapes that don't stretch and skew, but bend.
Damn i really cant wait, i have been dreaming of a circular minecraft but got my hopes dashed after a few videos but with the switch to hexagons, its reignited my interest
I would've just faked it by having a limited size square world and teleporting you to the other side. (Immersive portals had a world tile feature that does this.
Oh my, I have questions. - How deep can you dig? Is there a kind of "End" after an arbitrary point X layers deep into the crust? - If there isn't is it possible to dig through the planet and out through the other side? - If you dig straight down deep enough is there a primitive solid at the planet's core? - Is every layer/shell of the planet it's own Goldberg polyhedron? How did you achieve such granularity? Is it possible to generate a Goldberg polyhedron of any given size such that they can be perfectly stacked concentrically above and below one another (the layers) without gaps? - It looks like voxels in Planetsmith can stack into perfect pillars from core to sky, how does this work if every voxel is the same size? Shouldn't each layer's voxels be a little offset from the adjacent layers voxels? - Why hexagonal prisms instead of cubes? Is it not possible to approximate the centre of a cubic voxel to the centre of a hex/pentagonal one? Was this for aesthetic or geometric reasons? I guess I'm mostly curious about how you got voxels at every layer to seamlessly align into perfect pillars. It's my impression that as you get further from the primitive solid you require more voxels to tile the larger surface area, and you can't do this without introducing at least some misalignment with the voxels in the layer just beneath. This is a really cool project and I'm looking forward to messing around with it. You've done something very geometrically curious and I'm excited to learn more. Please enlighten me you wizard.
The height of the world is of 512 blocks, beneath that there's an invisible and indestructible wall, you can't build/go beneath it, in the top of the world there is a build limit
tetrahedra can be imperfectly stacked to form an icosahedron, which is approaching spherical. however, note how i said IMPERFECTLY: they need some give and squish unfortunately. Or indeed perhaps VERY fortunately--BECAUSE it gives you a way to "nudge" the world into local alignment around the player. Furthermore, a cube CAN be snapped to a tetrahedron with relatively trivial ease - and in MULTIPLE orientations! Now, here's an important thing... the universe fundamentally cannot be intrinsically rectilinear. rectangular shapes are extremely unlikely to occur, except under rare circumstances we, as living beings, recognize to be special, such as crystalline structures. therefore, it's okay if reality resists our attempts to straighten it out. it *should.* if you built a truly perfectly geometrically flat road irrespective of gravity, the surface of the earth in real life WOULD curve away from it.
12:37 "It doesn't matter that they're boring, it matters that they exist" hits hard bro.
In alpha chill is nice
Reminds me of a very old project for making Minecraft spherical that I saw way back. The Seed of Andromeda project focused on making Minecraft-like worlds at the ground perspective, but then gradually transitioned everything into a sphere as you increased in elevation. However, they suffered from rather bad distortion artifacts near where the corners of the cube would compress into the spherical shape. You still might check out that project for any inspiration or alternative ideas for solutions.
Took me on a bit of a rabbit, shame that project died. Looked interesting. But I guess that was probably bound to happen it had to wide of a scope and only sustained off volunteered labor.
Still shame it died :(
He actually then decided to represent the world as a torus, but map it to a sphere. That worked really well. Obviously you cannot map it in anyway that actually removes distortion, but this method lets you hide it really well, and let's you have all cube voxels (especially if the torus is big enough, or you just cheekily map a subsection back to a normal grid when close enough). Still doesn't solve the issues of digging down or building up too high. But I don't think those can be solved.
I thought of "Eco"
Holy shit, Ben was actually a friend of mine. Dude got me into opengl programming back when there was like zero online documentation for the API.
I was super bummed when he dropped SoA, but my understanding is he's current working with ArenaNet on Guild Wars 2.
oh realy? neat
i left the discord server long ago
i assume it still exist, probably not too akitv
I really hope that each world has newtownian physics, so for example a player can enter a stable orbit around a world
Maybe there could be multiple worlds that you could go to, imagine flying to the moon or another planet :)
What if the star system was randomly generated in each world :)
if the gravity is calculated with 1/r^2, you should be able to get into orbit with the right speed
Imagine building a Redstone rocket to launch yourself into orbit with a bunch of tnt.
that sounds an awful lot like a softlock to me lmao
5:28 A NEW HAND TOUCHES THE BEACON. Listen, hear me and obey.
Guess im off to play skyrim again..
Came down here to say this 🤣
looks uncannily like the beacon
I was looking for this comment
They really didn't even try with that gameobject huh
really clever solution to making a voxel based world on a round planet! at first when i saw you messing with cubes i sighed, thinking this was just another pointless attempt at wrapping a square grid around a sphere. glad i was proven wrong lol
it likely has the same problems
but it will get interesring how he would exept it into the design
It might be fun, when expanding this to a full game, to give some significance to the 12 pentagons on the planet. To me, they suggest some kind of magical geometry--maybe sources of power, or ancient dungeons where you can fight bosses. (this is also a handy way to stop players building on them)
Yes I have this planned 😬
@@IncandescentGames Ley lines, maybe?
being in possession of all 12 means you can blow up the planet
@@coppertones7093 or better yet, command its entities and creatures. perhaps you could control the dead bodies of bosses.
@@IncandescentGamesalso, I think it would be a fun nod to this if you made one of the hexagons in the logo a pentagon (maybe the T's for symmetry?)
This is an excellent devlog, normally I'd say making a steam page on the first devlog is a little hasty but you seem to perfectly understand what you're doing. Can't wait for episode 2!
I think it would be neat if each of the twelve pentagonal points had a significance for the world, maybe they contain a unique structure or other point of interest, though it might be too predictable because once you find one, you can just run in a straight line and find the other eleven. Either way, this is a really cool proof of concept! As I was watching this, I wondered how complicated it'd be to continue curving the voxels inwards as you went further into the world, would they become warped until they became unrecognizable given how much they'd have to curve to fit inside each next layer?
The will get narrow, to prevent this you can only interact with the planets crust which is 512 blocks thick currently, over this distance the change isn't noticeable
You could play into the ease of finding the other points of significance when you've found one by having one main structure that can only be unlocked if you've gone to all the sub-points.
I think the better solution would be to just have a thick crust and the rest of the spheroid be Bedrock, instead of allowing the player to dig closer to the center of the spheroid.
Just so you know, the moment I saw that you were doing an icosahedron based hexagonal grid, I knew my first base (and probably most of the following ones) would be pentagonal - which will be a bit of a change from my current hexagonal minecraft base.
…though there is the slight possibility that I'll deliberately ignore the provided grid and make a square base instead…
for a round planet?
I was skeptical until you started showing terrain generation. It looks amazing.
This is such an amazing idea! would absolutely love to follow this into a full game! One thing i was wondering was that it's sad that you can't have flat walls with this. It might just be something players have to get used to but one way i thought of that might make it possible is if you could split the blocks in half. That way players can create flat walls and more intricate builds.
you could also make it so that stuff automatically connects into other blocks kinda like in townscaper
@@naiknaik8812 I have a prototype block that does this which will be in the next episode, I didn't like how it worked though so it's been shelved for now.... but maybe it comes back in the future with some changes.
@@IncandescentGamesYou're incredibly talented. I'm working on something similar, but not near as complex as this.
Considering the problems created by normalizing cube points onto a sphere, I decided to keep cubic voxels and use an interpolated marching cubes algorithm to generate the world. You've found a very neat way around that, and you can emulate voxel building like in micecraft. The method I've chosen means I need to have separate building mechanics.
An idea for your hexagonal voxels, though: Maybe when building with certain hexagonal prisms, you can use a wave function collapse algorithm to let the players choose smooth walled blocks without seams. Maybe even windows, doors, and decorative pieces could be placed like this. Many more assets, but a benefit to this is that you could add buildings to your procedural generation pretty easily and have settlements generate. Just a suggestion! Tons of other ways to do it too
Although it's not a spherical solution, making the base for the planet a torus, instead of a sphere, would reduce distortions drastically
you can't make a planet game and not have rockets in it :)
hexagons r the bestagons
Looks great! I made a spherical minecraft demo in Unity too! I stuck with warped cubes as the warping at the "corners" started to grow on me. Id love to know how you managed y levels as that is what was most challenging for me. The size of each block has to grow linearly with the radius, digging down makes the blocks literally smaller. I had to dynamically scale the player, but it looks lie you are avoiding the problem by limiting y to really far from the radius
Yes build height is from 5km from the center to 5.5km, so only a 10% change in block width over 0.5km which isn't noticible. On small worlds it is, but i will restrict build height here, Perhaps blocks fall off into space if you go to high
2:30 imo the edge problem gets fixed if you increase the scale a lot, the angular difference will shrink down immensely and the edge will be nearly nonexistant, furthermore, you can make "flattened terrain" instances on it, areas that you could place on the land and that override world geometry to make it so tall buildings don't flare out the taller they are
i'd personally make some kind of "hollow earth" where the diameter of the earth is a dozen kilometers, with bedrock appearing a kilometer deep, so block size difference at the bottom is only 15% smaller than ones at the surface, and with the right LOD, you can still easily see beyond the horizon with a hundred or so blocks over the surface
it'd also allow you to have some places in the bedrock where there's holes, allowing you to get deeper into the mantle, and allow you to reset the scale by having a different grid, and a few "connector" blocks that'd allow you to connect some things like pipes etc between, or using the "flattened terrain" to keep a consistent grid
there could be a total of 3 layers, the surface one going from 100% to 85% size from 0 to -1km, a "deep layer" from 100% to 82% size (-1->-2km), and "core" or "hell" layer from 100% to 80% size (-2->-3km), or to go crazier, adding the 9 layers of hell, all the way down to -10->-11km going from 100% to 50% at the bottom before the last kilometer of core that would be unreasonably hard to render given size goes to 0%, leading to divisions by 0, so i guess making it an instakill molten thing, or a no-build zone where some huge megaboss creature lives, would be a good idea
I've always wanted to do this when planning to make a proper space exploration in a voxel world. So far, my best idea had been to make a cube world and just put a hard boundary on the gravity direction, but that would have meant that the blocks on the edge somehow need two different up directions. Though I guess that's actually not impossible to deal with
Looks really interesting.
I'm just worried that buildings will look bad if you only have access to hex blocks.
The only solution that I can think of is to create a different shape depending on the surrounding blocks, but that might be a lot of work.
Wow, I didn't knew they were pentagons, cool vid :)
You can make a Pentagonal house around a pentagon if you find one. They are hard to find though ut you can use F3 to find a chunk border and follow that to the pentagons
@@IncandescentGames Yesss that would be cool :)
You are a legend my dude
Great video! Was wondering if at any point you considered making a donut-shaped world? (A benefit being that you could possibly still use cubes.)
Yes cubes would work ok on a donut world providing it was large enough. I wanted to keep it planet like so the space travel makes more sence in the future.
Absolutely loved the first episode! Your explanations on tackling each challenge were super clear and insightful. It's awesome to see the thought and effort you're putting into PlanetSmith. Really looking forward to seeing where this goes. Keep up the great work!
Very interesting ❤ Love how you came up with your own voxel solutions, for creating a spherical world. Had similar thoughts with my voxel world, but in my case it’s all data points instead of blocks. Really awesome and love it!
one thing that came to my mind is, that if the player is "done" exploring the current world, or is "bored" with it, they can leave the planet and go to another one, one way to do this, is to have "stars" in the sky as white dots, each dot is a seed(has a seed assigned to it randomly), you could potentially get the distance of the player from the planet as they leave it(through a rocket or whatever) and get the seed of the star they are looking at and generate a new planet from it, I don't know just a random idea that popped up in mind, not really that easy to implement but just wanted to share.
Stuff like this is planned. But a long way off currently lots to do first.
reminds me of ne mans sky, where there's infinite planets to go to
i would like a more Terraria approach with a big enough world rich with stuff, would be aweasome
For a tech demo, this is a great idea and super fun.
But for a real game?
Look at Terraria vs Starbound for this:
Both at the core are very similar games.
In terraria you build a base for all your stuff, often near spawn, or spread out across key locations in the world.
In starbound.. you have infinite worlds to explore. You never really settle down, you never build a real base.
Eventually all the planets become samey, you spot the repeating patterns - and because you have no investment in any one of these worlds, you lose interest.
@@symmetry8049-- At the same time, many Terraria players create new worlds to harvest resources unavailable in their home worlds, like the other evil biome, sand and trees, and rare loot.
Fishing helps with the loot, but Terraria worlds are still a tad small. A small collection of worlds would be nice, like with the Aether and Twilight Forrest being on a different planet.
This project looks so cool! Subbed! Looking forward to more.
I've thought about the problems of making Minecraft spherical before and I'm loving your solutions, and how well they seem to work. Subscribing.
I was literally just talking about making a game like this the other day. I've been brainstorming on this exact concept for years and haven't mustered the might to start climbing the dev mountain. Great to see someone working on this, I'll be watching your progress!
Was making a planet game and came up with the same exact way to create planets, would love to see how it evolvs !
Add interstellar travel to make worlds infinite so you never run out of "blocks".
Dude, I love this! I just wishlisted on Steam.
Can't wait to play. I actually really like the shape of the blocks, can't wait to fly around my world.
Happy coding!
Whenever I thought about something like this I always concluded that is would be best to tile up dodecahedrons and connect them by their centers with vertices, living with the rotation differences across the planet.
Amazing proof of concept! Sort of getting Astroneer vibes from this too- there's a lot of cool directions you could take this. Excited to see it develop!
how do you prevent gaps forming between the blocks as you get further from the core of the planet if they have these smooth layers? if they get wider as they go up that could get weird, you could be building a pillar and it would be getting wider as you go up. but if they stay the same thickness gaps would form between them. and it looks to have smooth layers for any distance from the core where all those blocks could form a solid shell, and beneath that is a smaller shell but with the same amount of blocks, so how? I guess you could scale the player by their distance from the core, and warp the camera along the vertical direction, to make the world seem square, but surely that would cause issues if you look around at certain angles.
idk but its a cool concept, and I can't wait for how you'll implement slabs that can also be vertical to make smooth walls, if you're gonna do stuff like that
Yes blocks do get wider as you go up, Its not really an issue at the % change is small. Build height is 512 blocks so for a planet with a 5km radius that means there is only a 10% difrence between bedrock and max build height. However on tiny planets this can get extream if you planet has a 100m radius blocks will be 6X wider at build height, to combat this I will limit build height on tiny worlds and the smalest world you will be able to make will have a radius of 300m. Haven't decided if im doing vertical slabs yet, but its on the maybe list.
@@IncandescentGames cool, and thanks for answering.
now its just a question of what to do with the pentagons, you could maybe embrace their specialness and make them like this games version of the strongholds, with a portal right at that point. but that's just ideas, I'm sure you have ideas already
@@IncandescentGames A possibility to combat this further would be to subdivide after a certain point as well as merge, no easy things of course, though not especially difficult either.
This is really really cool and I'm excited to see where you take this, but would it not be easier to just fake the effect with a vertex shader for curvature and like a modulo function on the player's coordinates for the wrap-around?
Yes and no if you did this you would be on the surface of a donut not a sphere, but i want planets which you can physicaly fly to and from so the elusion would be lost as you fly up.
Bro great video BUT I HEAR YOU SWALLOWING YOUR SALIVA AND AAAAAAAAAAAAAAAAA IT JUST DISTRACTS ME EVERY TIME
I'll get that sorted for the next one, I'm new to this
Nice work man, but, I dont think a "hexagonish" based world will not be as cool as a cubic world.
Also, for the Minecraft world be "round" it does not need to be really round, it can be plain as it is, but, somehow in the end of one side of the world it needs to loop back to the other end seamlessly, then its done, you could go in a same direction for a LONG time starting from your house and arriving back to your house from the other side.
I already thought about this much time ago, this should be the Minecraft default in my opinion.
Love the idea and video, but dude, the breathing into the mic and lip smacking before you start a new sentence drives me up a wall
3:58 octahedron
just a heads up, theres a typo in the title. "Espisode 1"
Classic me🤦
This is looking cool so far! However, your voice is very quiet. You should look into turning it up a bit in editing.
Ill be interested in seeing how you handle water, how it flows. Also, how do you feel about the size of blocks warping depending on proximity to the planet center? As in, the closer you are to the center, the smaller the blocks are. Is the plan just to live with it?
Can you share the code for rotating the camera to the gravity im trying to figure out how to do it for about a year because most games that have such things are 3rd person
its here. minecraft 2
Why don't you make the world a big torus that's mapped to a sphere? That way you could keep the cubes and also have it look like a sphere. Still distortion but you could move much of it onto the sphere projection rather than the voxels.
Edit: after more research it turns out my stupid ass didn't actually think this up just now. Found a video on it from "Seed of Andromeda", a really good (now abandoned but at least open source) voxel engine. I think I originally saw this idea back then, but forgot about it.
That stops you be able to fly away and see a planet which is somewthing i want in the future
@@IncandescentGames no you can still do that? That's the entire point of mapping it to a sphere?
This what i searching for.. thank you
hexagonal voxels (hexels?) look surprisingly good
I like hexels, going to call it that from now.
Why not make it just non-eucludean and keep it flat, just wrapping around (like in pacman)? Topologically it would be a torus, but you can just draw and build like regular Minecraft. But forget that. The curvature looks great.
If you go non-eucludean you don't have a sphere, you could do a donut I want the ability to fly off in a rocket and look back at the planet
"my favorite game engine unity" 🤮 you have some terrible taste
Wow! I was just looking into goldberg polyhedra! How are you addressing cells? I can't figure out how to do it unambiguously. I was kind of thinking of treating each face as a separate array and then doing two dimensions and offsetting each row... but then there's singularities all along the edges and especially at the vertexes. How did you do it?
There are 62 types of chunks to make it work all connected to the icosahedron. 12 corner, 30 edge and 20 face which are what most chunks are. I'll talk about it again I'm sure
@@IncandescentGames Great job on this technical demo! Do you have some literature/references of how to do cell indexing that you followed? I have been trying to figure out how to do this for a while, but I haven't really managed to find a good way yet
Actually I just saw the trailer, wow this project has already turned into an amazing game!
I cant find the pentagons
Those are great solution finding skills!
Very cool
bro cuts the video and proceed to make the most complex minecraft game
Old project I abandoned to start work on a group project, sphere planets are possible using the noise. Mind you I found it by accident, only partial worked. That's because I have no idea how it works. But it is possible using plug-ins and noise.
imagine this in 4D -next project 🤓😎
Not that it isn't cool as an actual sphere, but what about just.. cheating?
E.G. make it a flat world, still divided into chunks as normal, but then load in the chunks in a manner that you "wrap around" as you get close to the "border"
And if you still want a curvature to show, that could be done with some shader graphics
very cool project, excited to see it develop. For the bits of code you showed on screen, is there any kind of license on that or are we free to use them?
Go head and use it!
Very cool! Seeing the basic pickaxe gave me the idea of making the hud and item pictures hexagonal pixel art. Everything in minecraft is a square, why not make everything here a hexagon?
0:45 oof. Im sorry your favorite engine has such a garbage company behind it.
My current favorite is Godot.
It's a tool, calm down. There is nothing wrong with working with Unity if you already have the experience. It's not so easy to transfer your skills from one engine to another
@@dnoldGames Transferred my 6 years of Unity knowledge + my Unity game that's 8 months in development over to Godot, and surprisingly it was not that bad at all! Took me a week to understand Godot and how it differs from Unity, and after 2 weeks I was at the point where I felt anything I could make in Unity I could make in Godot too (with a bit of extra googling...).
Now I'm 2 months in and the Godot version of my game is just about caught up with the Unity version (I have some features left to implement from the Unity version, but I also have some new features that the Unity version didn't have). The workflows of Godot and Unity are very similar but I actually prefer working in Godot now, it's a lot less bloated while still having all the features I need.
Like you said, it's a tool. I don't feel loyalty to my game engine of choice any more than I feel loyalty to my hammer. I like my hammer, but if it started charging a fee for every nail I hit with it I would throw it away and look for another brand instantly, no matter how used to the handle I have gotten :)
Wow so cool concept! There's so much fun things you can do if his project succeeds. I'll follow you i want to see how you make this.
5:04 A New Hand Touches The Beacon...
shouldn't you generate the entire world the first time the player joins and then just load it? I'm pretty sure that would help with performance and since it's finite I don't see any reason it shouldn't work.
How does it deal with Z (up-down) coordinate? Do the blocks get thicker and thicker the farther up you go? Do they get thinner and thinner farther down you go? Do they get subdivided to deal with thickness?
please merge the idea to build a game alike "a planet of mine". I wait such a game for years, and you are the most closest one. just please :)
5:04 a new hand touches the beacon!
I'm looking forward for next episodes :D It's very cool that you're sharing your knowledge in a neatly packaged video. Also, what version of unity are you using?
Currently 2022.3 but this project started in a 2019 beta. Will probably upgrade it again soon.
Please show how it feels to dig into the core of the planet :)
Just to confirm, you can actually create meshes (set their vertices etc) WITHIN a Unity job, so you can do it in parallel?
Because without jobs, in threads, you can't do it afaik. If that's true I might have to rewrite a bunch of my code...
Correct! you need to use a MeshDataArray
I'm not sure why you keep saying that C# is emulated. Unless Unity did something weird with how they handle C#, it is compiled to intermediate language (IL) code in the binary, which is then compiled to machine code by the Just In Time (JIT) compiler when the application runs / is running. While it can introduce a small delay for the first execution of a given piece of code, once it is compiled it will execute quickly on subsequent calls.
Maybe an oversimplification, the real reasons are quite complex but come down to how c# handels memory, c# ends up with a lot of fetch and store commands that slow repatative tasks down a lot.
What if the player digs directly down? What shape is the voxel at the center of the planet?
looks really interesting, definitely subscribed.
one question: what happens when you dig further down, do the blocks get smaller?
Yes, but it's only a 10% change over 500m so not noticeable.
I was really curious to know what happens when you go down? i'm assuming the hexagonal grid on the surface just gets smaller and does not drop any resolution, so do the blocks just get smaller and smaller until you can't fit in 1, and have to mine more blocks? what happens to the geometry around the center of the planet?
You can only interact with the planets crust, at the minute thats 512 blocks, so on a 5km radius planet thats only a 10% change from bedrock to build limit
If Minecraft is an infinite flat world then how is sunrise and sunset even possible?
I highly recommand you to rework your water shader, water isn't transparent so it makes it look weird when you can see things through it that are at the opposite of the planet.
It's possible in unity to create water shader with fresnel, depth etc...
Otherwise, cool concept !
I had the idea some times ago, but the way I saw it was to just warp the world in the direction your facing (so by still using cubes) but have the world so big that the 256 bloc heigh would all look ok without block going through each other.
Definatly, water has a long way to go, plan is to have some sort of volumetric effect, but its not a current priority.
This looks amazing! How are you handling the vertical expansion of the hex voxels? Is the planet size just large enough that you can ignore it in the layers that the player is using? Or do the voxels eventually get smaller/larger in scale as you move to and from the origin point of the world?
10% increase from bedrock to 512 build height on a standard world.
what would be the build limit? the voxels will scale based on radius from the center. sounds ike you would get some wonky shapes as you build up or dig down.
Your right! I will make sure i talk about this in the next episode, but it's only a 10% change between bedrock and build limit (512 blocks) so not noticble on a standard planet. Can be extream on a tiny planet though so I will limit building height if I alow those worlds
Wouldn't the voxel objects get smaller the closer you are to the center of the world? Not like I can think of a solution for this, and maybe you can consider it a feature (harder to dig down the further you go), but I was surprised it wasn't addressed
There have been a couple minecraft remake projects I've seen recently -- it would be really cool if all the creators worked together to create one massive project!
Too may cooks, would make cooperation hard as we will each have a difrent vision.
This is really interesting! I liked the original idea of making the world spherical and just having slightly warped cubes. I wonder, if the world is big enough then the warping shouldn't be noticable right? Of course, the deeper you go, the more warped it would get, so you could make it so that the sphere is hollow and you can only go to a certain depth like in Minecraft anyways. Maybe you could make it so that in the perfectly aligned points of the planet there is a tunnel leading to the other side, just so that potential isn't wasted.
Distortion stays the same no matter the size of the cube. This is because as you approach the edges the cube has to be rotated 45 degrees, size doesn't smooth that out
Cool idea with lots of potential. Any plans to add something along the lines of a survival mode or do you plan to keep it purely creative?
Just started making survival mode
Hmmm when custom texture format with hexagonal pixels? 👀
Very interesting! I've been pondering about spherical Minecraft-like worlds a bit and the approach I was thinking about was to have cubic blocks, just like minecraft but the radius of the world would be so large that on the surface, or the area where the player would be active, kind of like the crust of the earth, would be pretty much flat so you could approximate each block to a cube. This would of course require large planets for the approximation to work but what do you think of that approach?
The problem i showed with the tiny spherical cube doesn't go away with size, even if your planet was the size of earth you get the same shaped cubes at the edges as you still have to distort each cube by 45degrees at an edge
@@IncandescentGames Thanks for the reply! Yeah I guess it makes sense. Excited to see where this goes next. Keep it up!
Damn, this looks like something amazing coming together. I got to sub now
insane work u are brilliant
You earned a sub from me. If this turns into a full fledged sandbox survival game like Minecraft, you'll have earned several purchases from me and my friend group. Love the progress you've shown off already!
Can you make it smooth/ photo realistic though? That would be the winning combo
really cool vid! although if the minecraft world would really be as big as it should/bigger wouldn't having squares instead of hexegons not be too big of a problem?
Making the world bigger doesn't solve the distortion, the distortion you saw on the coners on the tiny world is the same on one the size of earth
When this is done will it be on steam? I think it's different enough from Minecraft.
Yes the steam page in linked in the description
i never got anywhere past the idea stage but this is something i’ve thought about quite a bit, as i would like to make a voxel space game thing someday. the idea i had was to keep cubes and keep a cube planet, but not 100% a cube, more of a rounded cube, and also distort gravity somewhat (how this would interact with space physics, im not sure, maybe some morphing depending on distance, idk). that way most of the world is regular voxel generation, with variable height offset, but with only special casing on the edges and corners, to round them off. it’s not perfect, but i think cube planets makes diegetic sense for a world made of cubes.
neat
If you turn this into a full game ill pay for it lmaoo
This game seems like it is going to be incredible. I am excited for the first playable version.
oh dang! i had actually been looking into this exact thing for fun recently. the game "dyson sphere program" is a factory game that takes place on spherical planets, but they use a square grid, which kind of resets at each latitude mark, meaning that you can't build in a straight line from pole to pole. so i was like "what would a better solution to a grid on a sphere be" and i found geodesic polyhedra like the one you're using here.
Would the planets core be accessible, or would there be a form of bed rock?
There is bedrock, 512 in the build height currently
I would love to see more of this!! Perhaps one day it could work as a 3d equivalent of Starbound but like,, actually good.
I've actually been thinking about this
I'm not a mathematician, but I imagine a pizza
now for every pizza slice, it's a line (arc) that's equal length. once you make the pizza big enough and the slices more, the arcs flatten out. shouldn't that also exist for spheres?
a way to subdivide a sphere into 4-sided shapes that don't stretch and skew, but bend.
Damn i really cant wait, i have been dreaming of a circular minecraft but got my hopes dashed after a few videos but with the switch to hexagons, its reignited my interest
I would've just faked it by having a limited size square world and teleporting you to the other side. (Immersive portals had a world tile feature that does this.
Man I've been diving into voxels recently and this is so awesome! Will definetly keep an eye on this!
Oh my, I have questions.
- How deep can you dig? Is there a kind of "End" after an arbitrary point X layers deep into the crust?
- If there isn't is it possible to dig through the planet and out through the other side?
- If you dig straight down deep enough is there a primitive solid at the planet's core?
- Is every layer/shell of the planet it's own Goldberg polyhedron? How did you achieve such granularity? Is it possible to generate a Goldberg polyhedron of any given size such that they can be perfectly stacked concentrically above and below one another (the layers) without gaps?
- It looks like voxels in Planetsmith can stack into perfect pillars from core to sky, how does this work if every voxel is the same size? Shouldn't each layer's voxels be a little offset from the adjacent layers voxels?
- Why hexagonal prisms instead of cubes? Is it not possible to approximate the centre of a cubic voxel to the centre of a hex/pentagonal one? Was this for aesthetic or geometric reasons?
I guess I'm mostly curious about how you got voxels at every layer to seamlessly align into perfect pillars. It's my impression that as you get further from the primitive solid you require more voxels to tile the larger surface area, and you can't do this without introducing at least some misalignment with the voxels in the layer just beneath.
This is a really cool project and I'm looking forward to messing around with it. You've done something very geometrically curious and I'm excited to learn more. Please enlighten me you wizard.
Hello, I'm a Alpha Tester in the game, and I will answer you gladly :)
The height of the world is of 512 blocks, beneath that there's an invisible and indestructible wall, you can't build/go beneath it, in the top of the world there is a build limit
What
Yes, the higher you go, the flatter the blocks are.
Geometric reasons
What about make diferent"planet"shapes like S.Mario Galaxy? with weird impossible shapes, like inverted planet, donut, and other geometries..
tetrahedra can be imperfectly stacked to form an icosahedron, which is approaching spherical. however, note how i said IMPERFECTLY: they need some give and squish unfortunately. Or indeed perhaps VERY fortunately--BECAUSE it gives you a way to "nudge" the world into local alignment around the player. Furthermore, a cube CAN be snapped to a tetrahedron with relatively trivial ease - and in MULTIPLE orientations! Now, here's an important thing... the universe fundamentally cannot be intrinsically rectilinear. rectangular shapes are extremely unlikely to occur, except under rare circumstances we, as living beings, recognize to be special, such as crystalline structures. therefore, it's okay if reality resists our attempts to straighten it out. it *should.* if you built a truly perfectly geometrically flat road irrespective of gravity, the surface of the earth in real life WOULD curve away from it.