❛THE BASIN❜💦— Creeks, Rivers & Waterfalls

Original Discussion…

Consider early concept art for No Man’sSky…

So, I then greatly expanded this discussion with conceptuals of how this could work. - Consider…

However, we kept getting hung-up on, ‘DIRECTION OF FLOW’ - So…

Continued Discussion…

The reason why vast procedural basins of flowing water, visualized as streams of creeks and rivers, giving way to majestic waterfalls, (including geysers, whirlpools, and much more :squid::whale:), is entirely possible within NMS, is for the same reason that vast procedural basins of ’dried riverbeds already exist in the game,' which is for the very same reason that vast procedural networks of cave systems, have since early launch, existed in the game.

‘Dried Riverbeds’ appear somewhat similar to ‘Cave Systems.’ - Observe…

So… all they lack then, is water, flow and the related procedural system(s).

:swan::ocean::sailboat:
These riverbeds, which stretch along the surface, exist because they were seeded to exist. And therefore, they exist in much the same way that vast procedural cave systems are seeded to exist. Such is the way of NMS, and so you are able to return, and I too can come and visit. Is this not true? - So…

How do you know which way a river flows, without first knowing, where it begins or ends? :man_shrugging:

By rephrasing the question. - Consider…

How can the game files come to know, which way a river flows, without first being seeded? :man_shrugging:

You see, “NMS has knowledge of the terrain in advance”, (which is precisely the key to how riverbeds, and cave systems, exist in the game), just as it has knowledge of everything else in advance. How so? It’s elementary. - Observe…

You code, meaning manually program, and/or procedurally…

You seed :dna: the permanent memory (or game files) with knowing, so that the temporary memory (RAM) can then recall, thus knowing, at a later time. How? Because there are two different types of knowledge, there is knowing and then there is knowing, such is all one in the same knowledge, but their purpose and function is not the same.

The RAM need not (know or) recall everything at once, :brain: (such as an entire planet-wide procedural basin of flowing water), because everything is already coded and seeded (in the game files), :brain: the game already knows. In other words, first the game is programmed and seeded with permanent knowledge, (be it game assists, images, raw code, procedural systems, seeded placements, etc.), and then that knowledge is accessed in the form of temporary memory, meaning temporary knowledge.

Our brain works in much the same way, and ‘seed codes’ are like the life blood DNA behind an infinite universe, with procedural generation providing intricate, permanent and large-scale randomization.

Temporary memory overload? No. Because the game accesses only what it needs, and only when it needs it. Right? Therefore, the game can in fact know which way a river flows, because it was first seeded :dna: into the permanent memory (the game files), to then be accessed later in the form of temporary memory.

:bikini::fishing_pole_and_fish::shorts:
So the real question is…

How do you ‘SEED’ which way a river flows? How do you determine which way it begins or ends? What factors or procedural systems do you base the programming on? How do you program the permanent knowledge to be accessed later as temporary knowledge? How do you add flow, direction and intensity, what logic will be involved? These are the challenging questions that face our Hello Games!

OPTION 1: :sunglasses: QUICK & DIRTY

Do you base the flow on the direction of the sun? So that in the morning it’s flowing fast one way, by high noon it’s slowed to a stop, and by evening it’s once again quick flowing, but now in reverse?

OPTION 2: :nerd_face: CLEAN & NERDY

Or do you base (the speed and direction of) flow on the tilt and angle of the terrain? So that steeper sections of the riverbed flow faster and level sections flow slower?

But with the primary, or overall, (direction of) flow…

  1. Being based on procedural, (meaning random choice, or seeding).

  2. And/Or based on a newly revised system of riverbeds, where you don’t have riverbeds going up and down, and up and down, and up and down hills, over the terrain…

But instead have riverbeds that are seeded to logically follow the direction of how the landscape, or terrain, cascades downward, (in the crevices), and therefore not have riverbeds then suddenly cascading upwards…

Unless of course (back to ‘OPTION 1’) we want some super alien anomalies, like rivers flowing upwards, (meaning uphill), and reverse waterfalls, (including gravitational solar tides; and/or lunar tides, if introducing the related lunar rotation, of moons), and/or who knows what else.

Because personally, I think the combination of such would be very interesting! :smiley:

:swimming_man::ocean::rowing_woman:
Of course, knowing Hello Games, they’d probably go for CLEAN & NERDY, :nerd_face: while opting for some QUICK & DIRTY :sunglasses: starting out, or ultimately settle with the results found somewhere in-between. That is, until throwing it all out and starting from scratch, again. Only to repeat such madness, :crazy_face: once more. And so on, and so forth, in an endless programmer’s loop, :infinity: of excellence. — Behold! The Basin!

You see…

:woman_playing_water_polo::ocean::surfing_man:
The question is not, “Is it possible?” Or, “How isn’t it?” The question is…

“How is it possible?” And, “How would you like it?”

5 Likes

Oh, for crying out loud! No, it’s not the same at all, because for dry river beds you don’t need a consistent direction of flow. But I’m not going to repeat myself again, seeing that I have already explained the problem about 3 or 4 times on this forum… :tired_face:

3 Likes

This has already been solved with several RPG world map creators. The rivers and streams will always flow into the larger body of water. Origins for a stream are land-based from springs, glaciers or areas of heavy rainfall (ect.). This may cause the need for a bit of geography adjustment to include varying planetary zones (colder, stormier, dryer areas for instance.) Couple this with the direction of gravity already in the game and I can imagine future beautiful base locations. (Of course, it would be easier just to proc gen spawn points for a flowing stream, which will look weird at times like everything else.)

If they do add flows to the game, I hope it will be expanded to lava for volcanic worlds, quicksand for dune worlds and goo for a new type of toxic worlds.

3 Likes

Sigh
It’s a completely different problem if your map is bounded (i.e. knowable). NMS doesn’t have bounded maps. It doesn’t know where large bodies of water are. It doesn’t know where anything is until it looks at it (terrain-wise. Buildings are superimposed and the terrain is edited to fit in post. Can’t do that for a river that you don’t even know where it begins and where it ends).

3 Likes

I think this is the talk of Inness mcKendrick where he explains why some things are so difficult with procedural generation. Pieces of map don’t know what’s the next part of the map.

Edit:
Could be this one too

7 Likes

Personally, flowing water is a nice but not needed for gameplay. I couldn’t care less.

Realism in a SciFi game is not even a requirement.

2 Likes

Personal opinon, no one has to agree and im okay with that:

I love No Man’s Sky. But its main feature is exploration, and it has a limited amount of it. Its infinite, but its much of the same. The story content is 99% just text. Base building isnt anything special as many games feature it(and some do it even better). Its combat is bare-minimum. All vehicles look the same after a short while. NPC’s are somewhat lifeless still.

There isnt much to do in the game after about 100 hours except base building all by yourself. The game was designed to keep players playing but base building gets boring when it could be done better in a different game. Quicksilver items? Just a slow-drip of base building parts and banners/stickers/titles with very rare cosmetic stuff.

In my opinion, rivers and waterfalls are needed in this game as exploration of its planets is its main feature. I’m not saying to have flowing water that uses gravity to take water from one place to another(although this would be ideal), but to have atleast one “lake” on top of a mountain and have a short waterfall and river leading to a larger body of water. Maybe even pre-baked like volcanos are(kinda ugly, in my opinion but atleast we got them).

5 Likes

@Crimsontine: I have changed the topic category to NMS - Origins

3 Likes

Well… well… weelllllll…

Yes and no. I mean, in the case of No Man’s Sky, more realism would be like having a meat lovers pizza - sorry, I’m a carnivore - as thick, meaty, saucy and cheesy as a lasagna. The game as it is, with all the goodies Team Mercury has been able to shovel in, is like having a meaty meat lovers with extra meat and cheese. But I crave that pizzasagna. As Jupiter Blues so eloquently put it, the awesome universe we’ve been given to explore to our heart’s content… it kind of gets samey samey with just a bit of exploring. Honestly, my time is mostly spent searching for the perfect paradise world, and ship hunting, and that’s about it. And situations that suit my fic, which has gotten to the point I’m having to resort to art.

My fic is a no holds barred hyper-expansion of our beloved parallel universe, and I’m just getting into the meat of it now. Nigel - sorry, Nijol :rofl: will be floundering through stuff that’s going to have him tearing his hair out. A lot of the aspects of this universe… well, frankly make no sense, and Nijol is going to be pounding his head into all of it.

The stuff I’d like to see, essentially my fic brought to life, is most likely better suited to a purpose built world like Mass Effect or Starfield, with some proc-gen added in to flesh out the galaxy. But I’m thinking that the team can probably give us a lot of what we wish for. Wishing and asking is free, and even if they can’t deliver most of it, it likely sparks notions for what they can. So I say, dream away, fellow Travelers. :wink:

2 Likes

Why did I look further into this topic… :unamused: Now I will forever notice the missing water reflections…

8 Likes

Twitter is filled with NMS water-reflecting pics lately. I don’t mind touched up screens but, it can lead to unrealistic expectations. The floors in NMS are reflective, when it rains, plants and animals are now wet and shiny, so who knows? Maybe improved water is inbound.

3 Likes

Well, that at least would be doable, as long as the GPU can keep up. Since Prisms already introduced a lot of reflections, it might just be a matter of further optimisation for the PS4 and XBox to be able to handle them…

5 Likes

PRE vs POST

❝Work them dev tools!❞ ™

My intent is not to solve, but merely to inspire HG. Erosion was a difficult problem, until it was solved. One voxel can’t know the context of another voxel. But you can know the derivative. So what else and how far?

:ocean: Moist Maths & Flowing Voxels :surfing_woman:

In the above video, Innes McKendrick (a lead programmer for Hello Games) states…

At 3:08…

And finally, I’m going to talk about our simulation itself, special considerations that we have to take, because we’re working on a game that’s generated in real-time and occupies a space bigger than we can know a lot of information about.

Crim’s Commentary:

And finally, I’m going to talk about our simulation itself, special considerations that we have to take, because we’re working on a game that’s generated in real-time and occupies a space bigger than we can know (in post; RAM) a lot of information about (in post; notice ‘in post’; or in rendering).

At 8:01…

We have to be able to simulate gameplay with only a small knowledge of the world. So if were generating this whole planet, and that’s a bigger space than we can really get much information about at all, you know, we can maybe know a few points of interest, but beyond that any kind of data we have about it is too much data for us to keep in memory and for us to argue about all the time. So any work that we do has to, to be able to work just within its own local space, without knowledge of whether there’s a lake over that mountain, whether you’re at the highest mountain of the planet, or just at a mountain. And that’s a really significant thing to, to keep in mind, I think, as I’m talking through this.

A final note is that our engine is really agnostic to procedural content [origin]. I think people sometimes talk about No Man’s Sky as the procedural game, and I’m not sure if that’s the right way to look at things. For us, our engine doesn’t really care if we generate the content online or whether we’ve loaded it, or where it comes from at all, to be honest.

Crim’s Commentary:

We have to be able to simulate gameplay with only a small (post-) knowledge (RAM) of the world (in post; notice ‘in post’; or in rendering). So if were generating this whole planet (in post), and that’s a bigger space than we can really get much information about at all (in post), you know, we can maybe know (in post) a few points of interest, but beyond that any kind of data we have about it (in the game files) (((which is the result of 'PRE’))) (((pre is the initial seeding))) (((which is the result of dev tools))) is too much data for us to keep in memory (in post; RAM) and for us to argue about all the time. So any work that we do (((in ‘PRE’))) has to, to be able to work (in post) just within its own local space (in post), without (post-) knowledge (RAM) of whether there’s a lake over that mountain, whether you’re at the highest mountain of the planet, or just at a mountain (in post; notice ‘in post’; or in rendering). And that’s a really significant thing to, to keep in mind, I think, as I’m talking through this.

A final note is that our (post-) engine (RAM) is really (post-) agnostic (RAM) to procedural content [origin] (in post; notice ‘in post’; or in rendering). I think people sometimes talk about No Man’s Sky as the procedural game, and I’m not sure if that’s the right way to look at things. For us, our (post-) engine (RAM) doesn’t really care if we generate the content online (in post) or whether we’ve loaded it (in post), or where it comes from at all (in post), to be honest.

Crim’s Interpretation:

’ALL’ things are ‘1ST’ known in 'PRE!'

Hello Games’ ‘DEV TOOLS’ (should be capable of) know(ing) (((in ‘PRE’))) “whether there’s a lake over that mountain, whether you’re at the highest mountain of the planet, or just at a mountain” (in pre; notice ‘in pre’; or at the initial seeding, of the universe, of the game files, with dev tools).

Once seeded (((in ‘PRE’))), all aspects of ‘THE BASIN’ will now (as Innes McKendrick clearly states) “be able to work (in post) just within its own local space (in post), without (post-) knowledge (RAM) of whether there’s a lake over that mountain, whether you’re at the highest mountain of the planet, or just at a mountain (in post; notice ‘in post’; or in rendering).”

How so? — Because…

ALL THINGS ARE 1ST KNOWN IN PRE!

So…

MESSAGE TO HELLO GAMES:

Consider seeding the universe with creeks, rivers and waterfalls of water, direction, intensity and flow. Also lakes, ponds and puddles, collecting in the lowest points, above the planet-wide ocean water-line.

Much love to the ancient ones. :pray: ❝Work them dev tools!❞ ™ @OldGods

:muscle::nerd_face::safety_vest:

Behold, THE BASIN!

So let’s finish up with Innes McKendrick’s talk…

At 34:38…

And then there’s a final point. We want our generation to be data local. And that’s the kind of interesting and tough point in all of this. So if we’re generating a single voxel, it can’t know anything about any of the other voxels round about it, it’s stateless, so it can’t know whether it’s half way up a mountain or at the top of a mountain, aside from that it is a mountain, it has, you know, maybe 50% of a mountain. And that becomes a real problem when you want to, to map out like water flowing, and things like that. So that means we have to look at generation techniques, that look as though they’ve evolved over time, that look as though they know information about what is next to them. We have to model erosion, but you don’t model erosion as the process of eroding, you model it as the end state of all those things, you model something that looks like it has eroded over time.

So, to break that down, to how we actually do it, let’s start with 2D terrain generation. And so our first stage, as an optimization, more than anything else, but also because it simplifies things conceptually, is to block out some shapes in 2D. So, we’ll split areas into mountains, into maybe some smoother plains down there, there’s a river on there, and this doesn’t come out as voxel data, this is just a series of values that are saying the extent of which this voxel is a mountain, or is smooth, or is a river. So it’s a much larger amount of data, but we’re only retaining it for a short period of time, until we go on into 3D generation. And we do this essentially for each voxel column. So if you imagine we were generating on a flat plain, it would be across the x-edge, but because were generating on a sphere, then it’s across the surface of our sphere, but without any height. So what comes out of this is like generating a height map, you know, without any overhangs or caves, we have the heights of hills, things like that.

Crim’s Commentary:

And then there’s a final point. We want our generation (in post) to be ’DATA LOCAL’ (in post; notice ‘in post’; or in rendering). And that’s the kind of interesting and tough point in all of this. So if we’re generating a single voxel (in post), it can’t know (in post) anything about any of the other voxels round about it (in post), it’s stateless (in post), so it can’t know (in post) whether it’s half way up a mountain or at the top of a mountain, aside from that it is a mountain, it has, you know, maybe 50% of a mountain (in post; notice ‘in post’; or in rendering). And that becomes a real problem when you want to, to map out like water flowing, and things like that (in post; notice ‘in post’; or in rendering) — Why? — Because… All things are 1st known in pre! All things must 1st be mapped out in pre! All things must 1st be seeded in pre! ❝Work them dev tools!❞ ™ Hello Games. :hugs: EXAMPLE: ‘Perlin Worm’ caves, dried riverbeds and those rocky squiggles above ground, including ‘ALL’ terrain (algorithms), ‘FLOW’ across the surface of entire planets! — Why? — Because… They were ‘ALL’ 1st known in ‘PRE!’ — And only then do they render in post, ’DATA LOCAL’ !So… it’s not a problem to map out water flowing, and things like that (in pre; notice ‘in pre’; or in the initial seeding, of the universe, of the game files, with dev tools). So that means we have to look at generation techniques, that look as though they’ve evolved over time, that look as though they know information about what is next to them. We have to model erosion, but you don’t model erosion as the process of eroding, you model it as the end state of all those things, you model something that looks like it has eroded over time (IF attempting to map out water flowing in post; notice ‘in post’; or in rendering).

Crim’s Interpretation:

Yeah, it would be a real problem to know, to map out, to seed water flowing in POST (in rendering), when that should have been done way back in PRE, (in Hello Games’ laboratories, before shipping said release).

Nonetheless, if all else fails…

"Consider adding small-scale isolated water features!"

Add a stream of water, flowing into a body of water, but only within a 2D block.

EXAMPLE: Mountainous (block), Smooth (block), Rocky (block), River Path (block).

These isolated streams could start out as natural springs (and/or etc.). Consider basing the direction of flow on the direction of the sun, or (even simpler) just any random direction. Or perhaps being ‘based on the direction of the sun’ could only apply to River Path (block). Whatever’s possible and renders best.

Can one River Path (block) flow into another River Path (block)? In order for this to be possible, would River Path (block) flow animation and physics need to be disabled, and River Path (block) be filled with stagnate water? River Path (block) would appear as a special case scenario and requiring some thought.

Why small-scale isolated water features?

Because…

This would be the simplest solution to remaining ’DATA LOCAL.' — Result? — IF you can’t know (in pre; notice in pre) enough information to provide large-scale and logical systems of water flowing, well then these streams of water will flow (both up and down) with no regard to gravity, and they can flow into lakes, ponds and puddles, which could be generated as numerous procedural varieties. — How? — Well, (1) Perlin Worm terrain (algorithm) systems that squiggle above the normal terrain (algorithms), that even lift into the air, and (2) Perlin Worm cave systems that squiggle below the ground, and (3) Perlin Worm riverbed systems that squiggle along the ground (See ‘dried riverbeds’ in OP), could all perhaps be utilized as these water features (these streams of water flowing), and such water could defy all laws of reality (and gravity) by itself lifting into the air (and/or etc.) and flowing into lakes, ponds and puddles. — Consider also adding streams of water that cycle in infinite loops. :infinity: No source, no destination, they just loop. I think that would be fun, too. — Which all sounds very sci-fi, indeed! :smiley: And now NMS will clearly know (in post; RAM) where a river begins and ends, because it was 1st seeded to clearly know (in pre; notice in pre), and will render the entire (small-scale isolated) feature, as we (as a player) approach the 2D block, that it is contained within. And that my friend is ’DATA LOCAL.' — What do you say, a good tradeoff, do we have a deal?

So it would appear then that such water features would be (like buildings are) superimposed and the normal terrain edited to fit IN POST. - And if that’s what we get, well then so be it, I think that could be very beautiful and quite interesting. Call it a step in the right direction, if not the only step toward water flowing that we’ll ever get possible in NMS, unless somebody someday has a genius breakthrough, and “Eureka!”

I also made a careful examination of the other talk by Innes McKendrick, called ‘Working with Change,’ but found nothing of use to our discussion, as the focus was on ‘project flow’ - unfortunately, not ‘water flow.’

Nonetheless…

Sean Murray has a whole lot to say about rivers! :sweat_drops:

At 30:08…

❛Analytical Derivative.❜ This though, this is the good stuff. Right? So this is really important, anyone that’s doing noise and is not using this absolutely should. Right? So, what we want, is to have our features change in relation to different octaves of noise. Like, that’s what happens in the real-world.

So, I’m going to explain a thing, but it’s probably really obvious: We have this massive array of voxels, like billions of them, and we are going to generate one voxel. So we’re just going to pick an x, y, z position, somewhere in the universe, and we’re going to say, “Fill in this voxel.” And when you do that, you can not, as part of the equation, you can never query the voxels round about you. Because if you had to do that, to generate this voxel here, like in this world, to generate this one, you needed to ask this one what was in it, then that cascades. Because to generate that one, you needed to ask that one, to generate that one, and it goes on and on and on, and it’s an intractable problem. So because of that it’s really hard to have erosion, which is what you really want, because in order - it would be simple to have erosion if you knew that when you were generating a voxel, that it was on a mountain, or that it was high up, or low down, or that it was perhaps at the bottom of like a lake or something like that, but we can’t find that out because you can’t ask any of the voxels around you.

And it seems like this so much unsolvable problem, and it’s a real problem if you’re generating caves, or your generating erosion, or if you’re generating rivers, because one feature needs to flow into another, and it needs context, and you can’t get that context. But what you can get is the derivative. If you had that, then you would know the rate of change of noise. At that point, when you have that, you know that you’re on a slope, or you’re on a flat, or you’re turning upwards, or your turning downwards. And if you have that knowledge, and you can return from Perlin Noise the Analytical Derivative, then you’re going to be able to have certain features much more prominent on slopes, so you can make them much more noisy, or much less noisy. You know, if you were in a desert, then slopes are very smooth, if you were you know in the alps or something like that, then slopes are very craggy and noisy. And that’s exactly what we need, and it’s an awesome trick. And once you have that, then there are so many things you are enabled to do. We also, from this Uber Noise function, we need the Analytical Derivative returned, from Uber Noise. So even after it’s calculated, all this Billow and stuff like that and Rigged, we need to know that Analytical Derivative, so that we can feed it in further into other things.

Sean…

This problem of voxels.

If you can’t generate flowing rivers, with one flowing into the next, because you can’t get the context… Since you can get the derivative, (which already enables erosion, caves and dried riverbeds, presently)…

  1. Can you generate flowing rivers, with one flowing into the next, by utilizing the Analytical Derivative?
  2. Can you generate flowing rivers, within the flow of Perlin Worms, by utilizing the Analytical Derivative?
  3. Can you generate flowing rivers by utilizing any other math(s), tech(s), or otherwise technique(s). :thinking: Any other options? - If not… Can you hire specialist(s), mad scientist(s) or semi-evil genius(es)? …!?

At 34:35…

❛Domain Warping.❜ This is super cool, and this is basically distorting the domain of the noise we’re generating with another function. And often feeding noise into itself, in kind of successive octaves. So this is a little snippet, this is what normal Perlin Noise looks like…

So let’s feed it in another function, warp it and you start to get something that looks a bit more realistic…

I don’t know if that’s obvious, like I’m, I’ve looked at this for so long that that’s real obvious to me. But I’ll try and show you. So let’s do that again…

And now hopefully you can see, that looks a little bit more like an areal photograph of some terrain. Right? And in case that’s not obvious, here it is blown up. Right?..

And you can start seeing things that look maybe like rivers and things like that. ❝WE ACTUALLY USE THIS TO CREATE OUR COASTLINES, OUR RIVERS.❞ And also if you look really closely, you can kinda see shapes look like they’re flowing into one another. It’s kinda like you can see what’s called warping, you’re just warping the image.

I.Q. has an awesome image on his site, where he has colorized these…

And I think I could easily be looking at an areal photograph of some terrain. Right? Like, like if I just flipped to some real terrain, like this is real terrain…

Real terrain is really fractally, like it’s so, you know, it’s awesome. But just going back and forth between them, you can see really similar kinda shapes evolving. — And like with this…

❝If you were to start filling this with water, if you imagine water coming up from this, and then you would see all those little cracks start to fill in and you would get little rivers, you can see some of them up in the kinda top right and stuff, that, that looks really nice and it starts to not look like, you know, kind of a classic terrain sim at all.❞ — Sean:sweat_drops:

I’m ready to start filling this with water, Sean. I’m imagining water coming up from this, Sean. I see all those little cracks start to fill in, Sean. I see all the little rivers, and it looks really nice, Sean. :sob: “REALLY NICE!”

At 38:57…

❛Domain Perturb.❜ We’re gonna perturb the domain, so like Domain Warping, we’re gonna create our nice little flows of rivers and things.

I like how you said that…

❝We’re gonna create our nice little flows of rivers.❞ — Sean:sweat_drops:

At 42:08…

These overhangs, again, are super cool. I haven’t really talked about caves, but caves is a super difficult problem, much like the erosion was, because you need to know, when you generate the cave, how are you going to break through, so that it actually has a hole that comes out, and when you generate that hole — because remember, that when you’re generating any voxel, you cannot know about the voxels around it — to generate that cave and to generate it breaking through the terrain, is a difficult problem.

This is a nice image…

So, this is just actually, I happen to know, is one layer of noise. So this is just one layer of Uber Noise, and you’re seeing so many different things going on there. So down in the bottom, that’s Domain Warping, that’s giving you those nice shapes…

❝If you were to fill that in with water, you would get really nice little rivers and things going through.❞ — Sean:sweat_drops:

You’re seeing steep cliffs, and at times round edges. You’re seeing in the far distance a real change, in terms of like heights of mountains and things like that, and actually those shapes are changing, I don’t know if that’s obvious , if you can make that out, they’re going between quite round, to starting to be quite sheer.

And this is one of the things that I think really works in No Man’s Sky. One of the reasons why people play it so long is because, we get it all the time, we get people saying: “I played for a hundred hours, I landed on this planet, and it looked like something I hadn’t seen before.” And so I think that’s cool, that’s interesting, and people know because they haven’t seen it before, it’s different. It gives a real sense of exploration, it’s important to the game.

Okay, so there’s loads of stuff I haven’t talked about […], that I would love to talk about in the future. So if people want to ask me about it, they can…

NOT COVERD: ❛Erosion flowing into rivers❜ Sean…
:eyes: Would you like to elaborate, please?

Also…

Did you say, "We use this to create our rivers"? :sweat_drops: What rivers in No Man’s Sky? :drooling_face: (Empty dreams? Or) All empty crevices flowing into all empty valleys, begging for ❛Moist Maths & Flowing Voxels❜? Or ‘Perlin Worm’ dried riverbeds? Could use water and flow physics, but I do agree with you Sean, you can’t have things like erosion, or like caves, or like rivers, because of this problem with voxels, BUT since we do have things like erosion, or like caves, or like rivers, :wink: Water, Direction, Intensity & Flow: Coming Soon!™

(PRE) Permanent Knowledge :brain: vs :brain: Temporary Knowledge (POST).

❝This problem with voxels, it is a problem of the mind!❞

2 Likes

I do not understand what you mean by “Pre” or “Post”. It almost seems like what you call “Pre” is information gathered when HG analyse (very small) parts of the game during development, and it almost appears as if you were to suggest that HG use these tools to precompile this information to use for more interactive procgen on render time.

This can’t be what you mean, though, because that’s the most stupid idea since the invention of white underpants, and I don’t think you’re stupid. So we probably just have some kind of definition problem here that prevents me from understanding what you’re talking about.
It’s not helped by the fact that you write miles-long posts in grand declarative language when all you’re actually doing is kicking basic conceptual ideas around, which could be formulated a lot shorter and clearer. So, could you just quickly define what exactly you mean by pre and post (no more than 5 sentences please, that should be plenty), so I can at least understand what you were writing that wall of text about.

4 Likes

Abridged Version

My prior post simply reflects my research, as I have invested a great deal of time into trying to figure out how a vast procedural basin of flowing water can in any way be brought to a reality, within our NMS. :thinking:

Understanding Abbreviations

Pre and Post are simple words, they mean what their definitions are, they mean before and after. What I summarize as “PRE” is all aspects of development, including the “initial seeding” of the universe, with “dev tools” meaning whatever the developers use. “Game files” are the result of “Pre.”

“POST” or RAM is the use, of the result of ‘PRE,’ (or simply stated, the use of the ‘game files’).

Notice that it’s the ‘INITIAL SEEDING’ (aka. ‘PRE’) that matters here, 1ST.

NOT…

  1. The permanent knowledge (‘GAME FILES’) (which is the result of 'PRE’)
  2. The temporary knowledge (‘RAM’; recall) (aka. ‘POST’) (which is the use, of the result of ‘PRE’)

So yes, “Pre” includes information gathered when HG analyze ‘very small’ parts of the game during development. And no, I do not suggest they analyze all the information of an entire universe. :sweat_smile:

My Present Conclusion

My conclusion though, is that with this issue of voxels (one voxel not being able to get context from another voxel) and only the derivative being attainable (enabling ‘static’ terrain voxels like erosion, but not ‘flowy’ terrain voxels like flowing water), I can ’so far’ (presently) think of no other way for HG to introduce this concept except by…

  1. Adding an entire planet-wide procedural basin that (perhaps functions similar to the cloud system in that it) in no way looks at the (context of the) terrain voxels, (perhaps functioning similar to Perlin Worm dried riverbeds) rendering in post and superimposed into the terrain (in post)… with no logical placement, or semi-logical placement (perhaps) based on the layout of the 2D blocks. And/Or…

  2. “Adding small-scale isolated water features.” — How? — “By adding a stream of water, flowing into a body of water, but only within a 2D block.” — Why? — Because when the game looks at the 2D blocks, this doesn’t involve voxels, it does this before looking at voxels and 3D rendering…

“And now NMS will clearly know (in post; RAM) where a river begins and ends, because it was 1st seeded (in pre) to clearly know (in post; notice ‘in post’; or in rendering), and will generate the entire (small-scale isolated) feature, as we (as a player) approach the 2D block, that it is contained within.”

(((as discussed above and quoted from above)))

Sorry, I don’t know a simpler way to say a deep thing, (See vids). :video_camera:

But what I’m left with is this…

Can NMS simulate flowing water animations?

My attempt at answering that question is: “It can simulate cloud animations, so why not flowing water animations?” — Which leads me to this… “Sean, if you can simulate vast cloud animations, why not vast flowing water animations, why not an entire basin?” — And then we’re back at that voxel again. :man_shrugging: Why Sean? Are you absolutely certain here? Think. What can be done, Hello Games? (I’ve given all my best!)

2 Likes

Clouds are relatively simple and they move, it doesn’t matter that 2 players see different clouds.
However rivers have to be in the same place for everybody.

The post processing you mention would mean saving all that info. For 18 quintillion planets, even with compression and clever tricks, it will need to store a huge amount of info.

I might always be wrong, Jedidia knows way more about this.

2 Likes

Not to get pedantic about this, but with the insane amount of information on every planet, with billions or trillions of square kilometers of surface, mountains, valleys, coastlines, caves, grass and barren area, that’s already an astronomical amount of information. Each planet that we return to, to see the same rocks where they were, every bush, every tree. Our bases, precisely placed.

A river seems like a drop in the ocean in comparison. As a typical Murican, I’m thinking “can’t be done” is the same as “hasn’t been tried yet.” Just a stray glob of thought. :wink:

1 Like

That’s the whole thing about the procedural generation, the formula does not change, so the result is always the same. The place every part gets is calculated from that formula. That’s why this game is only 11gig while GTA5 takes 72gig
With bases and your changes during the game they only need to store a small amount of data in your own save with a simple coordinate system and base items. The bases for the other 5 million players (no idea) are stored on a server. The same data and relatively small.

5-6 rivers per planet and let’s say 1/3th of the planets has water. Depending on how big the river, still amounts to lots of data.

I think the only reasonable way to get rivers in NMS would be to procedurally generate them as an extension of the bedrock layer, then build up the rest of the terrain around them. They couldn’t be sophisticated liquid physics simulations, just oldschool fixed volumes with predetermined flow direction. The water would be bounded by the unmineable bedrock, else the terrain manipulator could quickly destroy the illusion of actual water. Normal terrain would fill-in detail and help hide that fact.

3 Likes

Dig a trench with your MT. Meander it. Run it downhill, then, fill it with different sized rocks. Boom! Decorative dry creek bed. :laughing:

5 Likes