Microbe Stage Terrain Generation and Features

Me and Nunz had been discussing physical terrain in the developer chatroom, and after some momentary exchanges decided it would be a good idea to move the discussion to the forums.

In Thrive, the microbe biomes are currently incredibly similar in terms of gameplay, being vast expanses of empty void populated by cells and occasional floating rocks.
While this isn’t an immediate concern as the microbe stage functions well, it is clear that implementing tangible terrain features could vastly expand the biome diversity in this early stage by further differentiating the various patch types. However; some may consider this to be inherently unrealistic at the microbial scale, and so this addition could potentially come at the cost of Thrive’s scope of realism.

That being said; should we decide to implement this, we need to know how it aught to be done.

Patch Terrain

I believe that the following patches should contain terrain features and blockages, the unincluded patches will remain open zones like they are in the current game.

Vents:
The vents biome could be a largely open area containing occasional “pillars” or other small terrain features that would never really be in the player’s way. This would introduce players to the concept of static terrain and allow them to experiment with involved strategies or parts without hindrance.

Vents terrain will be dark basalt.

Seafloor:
A large expanse of maze-like substrate. The seafloor will introduce players to moderately tight spaces that they must navigate with care, lest they be cornered by predators.

Seafloor terrain will be a mix of dark and pale substrates and occasional stone.

Cave:
The cave biome would be mostly open space, with occasional terrain features riddled with small cracks that could potentially offer safety to smaller prokaryotes from large predators.

Cave terrain will be grey craggy stone (I almost preferred brown but we need to differentiate iron from the surroundings.)

Ice Shelf:
The ice shelf will consist of large open seas with occasional ice flows where terrain would become much like the seafloor, presenting a diverse zone. Open areas would feature currents.

Ice shelf terrain will be condensed ice crystals creating a sort of crystalline and jagged appearance.

TidePools:
Large enclosed spaces interconnected with each other to create a sense of being walled in, while still remaining largely open and navigable. Stagnant water with very little currents.

Terrain would be a soft rosey or tan sandstone or substrate.

Alongside the terrain, it is also important to consider the implementation and functionality of currents and other interesting environmental features.

Currents

Currents in particular should be found mostly in the open ocean zones, but may also be occasionally found in enclosed biomes unless otherwise stated.
As of now the exact appearance of currents has not been decided, but we have had a few concepts on how they may appear;
https://cdn.discordapp.com/attachments/464847028539752471/817722693083594792/procedural_lighting_and_3ds.png
Currents will lightly push cells and any other loose objects along a path, allowing players to receive a speed boost, or forcing them to fight it or go around it. This will help make the world feel more alive and varied.

Things we need to discuss here is how to generate currents, how large they will be, how strong they will be, and how they will appear.

I personally believe that currents should be decent in length with an escapable width acting as a moderately gentle force pushing objects around. A minor nuisance at the worst. Visibility is very important, as invisible acting forces can be a great source of frustration.

I would like to see what ideas everyone has in regards to how to implement this, should we do so at all, we also need to discuss how we intend to handle the mechanical side of terrain generation and how it is performed.

I should also mention that this feature likely won’t be high priority, but it’s always good to discuss.

1 Like

These sound like good ideas, and ones that have been proposed before. Adding some bigger scale objects in the world the player needs to navigate around seems like a good idea to make the game more interesting.

1 Like

Imo, one solution for this would be to make these features rare, since at the scales we are talking about spaces between terrain would be enormous.

I think this environment would be better suited for the seafloor, those labyrinths could be the spaces between grains of sand so realism wouldn’t be compromised. I think Cave patches should be open spaces because, again, microbes are too small, and their distinctive features would be its environmental properties. Once organisms become bigger then Caves can become restricted and claustrophobic spaces.

2 Likes

I was mentally justifying it as the cells living within the tiny cracks within the stone rather than in an open submerged cavern. Also, gameplay wise I was thinking it would be better if players encountered such an advanced biome later on the game rather than near the starting biome, though I suppose that won’t really matter once we have randomly generated patch maps.
That being said, I’m fine with caves being more open, maybe make the terrain more like the iceflows instead.

I wouldn’t like to force the player to navigate through a maze-like sea-floor but maybe that would be interesting progression-wise? I suppose we could always give the current patch map some more connections to bypass the seafloor if it became a problem.

Should the seafloor have maze-like terrain, or open seas?
  • Mazey Terrain
  • Open space
0 voters

I’m going to go ahead and drop this poll here, Nunz mentioned using polls in his devposts and I thought it was a great idea as well as it can help folks have a say in things they otherwise wouldn’t know what to add to.

not sure if thats a yes or no question. Its a mazey or open space question. Is yes pro-mazy? or anti-mazey?

I had a bit of a brainfart there, thanks for pointing that out. I went ahead and remade the poll so everyone will have to vote again, sorry about that.

2 Likes

Alright, it looks like everyone is in favor of the seafloor having alot of terrain. I’ll go ahead and update the parent post to keep track of this decision.

1 Like

Recently there has been some interest in implementing the long awaited water currents into the microbe stage, and after a bit of discussion in our chatroom, I have decided to go ahead and share some ideas on how this could be done.

First we need to decide on how currents work.

My idea is that the basis of currents will be reliant on a vector grid; similar, if not the same, as what is used to render our compound clouds in the microbe stage. The points of this grid will have a projection force assigned to them, dictating how strongly and which direction they push objects and clouds that come into contact with it. So basically, the force of currents would be rendered in a similar way to compound clouds. (For those unfamiliar with vector fields, Nunz provided this).

Next, we need to consider how the forces represented in this vector field are generated.

The current plan is that the computer first generates a path via sin(x) or some other capable equation, assigns a direction to the path, and then applies this (Hopefully finite) path within the vector grid. The path dictates the distribution of force projecting vectors, as well as the direction of their force.
Think of this as drawing your finger across a field of pins, knocking them down in the direction your finger travels. Lifting your finger, you would find a visual not unlike this.


(When I mentioned vertex in this concept, I meant vector).
These paths would spawn in a similar manner to other objects; occasionally being dropped into the play area at random to be interacted with.

With this method, the world would be littered with a bunch of water currents that begin and end rather suddenly. In reality currents don’t just stop in place; they shift, twist, and contort as they flow throughout the world never ending. And so I introduce the next step in generating currents in Thrive.


By continuously generating new segments to place at the end of a current each time the player approaches, we can effectively simulate currents with endless continuity and variance.

I believe that this can be achieved in some way by tracking when an active force vector is aimed towards an adjacent neutral vector, or perhaps by simply tracking where the generation of a current segment stopped.

I admit that the nature of generation is unfamiliar territory for me, so I am unsure about the feasibility of this design. Regardless, I hope that it at least provides insight and ideas for how we can go about implementing functional currents. Any and all feedback is appreciated.

1 Like

This is actually pretty close to the current currents implementation.

(as noted before it’s not visualized in any way so it is not applied to cells currently).

I think the only real major difference is that in your design the currents directions are more harmonious, I think the current system has a lot higher variability in the pushing force between nearby points and they aren’t a part of large continuous currents.

1 Like

Well that’s good then. I assume that means this mechanic will be less work intensive since we already have something to work off of.

I feel that less chaotic currents would be preferable in terms of gameplay so I would like to pursue that if possible.

Edit: I should also mention that I left the visual aspects of currents out of this concept, as I feel Nunz is the best person to bring that up with their knowledge of graphics programming.
I can at least grasp programming generation, but graphics programming is magic to me.

1 Like

Let’s discuss terrain a bit, as that area of the Microbe Stage timeline is pretty rough. First, what do we want from terrain? I think it serves three important functions…

  1. Provides a more engaging experience when it comes to navigating your world. Instead of just picking a direction and pressing W, you have to navigate around obstacles and potentially avoid dead ends in certain patches.
  2. Differentiation between patches, making certain patches offer different gameplay experiences than just a difference in backgrounds.
  3. Increases visual richness, enhancing immersion and making Thrive more than just wide-open spaces.

The inherent difficulty with terrain however is that we have to make sure it is realistic to the scale at which microbial life. We’ve previously had discussions about, for example, pillars or tiny emitters in the hydrothermal events or maze-like structures on the ocean floor. However, that isn’t very accurate because at such a microscopic scale, fine structures aren’t very common.

There also is a difficulty in that the Microbe Stage is a 2D representation of microbial life, so there is a degree of gamey, intentionally unrealistic design choice made in our presentation to make a fun and intuitive game. For example, organisms all generally swim at the same exact level even though there is an entire ocean around them, organisms in patches near vents and the ocean floor swim at a point just above a surface, etc. In real life, microbes generally attach and move on a substrate, whereas in Thrive, organism swim above it.

All this is to say: whatever choice we make with terrain will inherently be unrealistic, we just have to be clear what level of abstraction we are and are not comfortable with.

Possible Implementation

I have previously written about terrain in this post, which also details how terrain can be differentiated across different patches:

To sum up this proposal, we could perhaps have terrain essentially serve as the distribution and nature of free-floating structures similar to iron chunks. We can have different models of larger particles, such as sand or chips of rock, serving as our “terrain”.

Depending on the patch, these chunks will spawn in different manners. For example,

  • The ocean floor could have an immense amount of chunks which spawn very closely together in clusters and are extremely heavy, meaning players have to find their way around chunks. There can be numerous very large chunks surrounded by smaller chunks, creating fields of tight spaces.

  • The estuary can have medium-sized particles which aren’t very massive and are heavily affected by currents, creating a dynamic environment where the terrain collides, floats away, drifts, etc.

Does this sound feasible? Details can be somewhat expanded upon if the base idea makes sense from an implementation standpoint.

It sounds pretty doable. The only risks I see are with getting an artist to do the various terrain chunk models and how much it impacts the game performance having a ton of them (with the current chunk limits this idea isn’t really doable so some tweaking is required). Also this kind of terrain would need manually made spawner code to spawn the chunks in a specific pattern.

If the current chunk limit is taken into account it would be much more performance friendly to have large chunks of terrain, like for example a “mountain range” that is a single model and collision would be much more performant than trying to simulate the same kind of terrain with 30 times more chunks.

1 Like

Someone also needs to make the AI update so that other microbes aren’t stuck on the rocks forever. I think it’s also important to ask if we want the microbe AI actually doing pathing or using a more simple “bump and turn” approach.

2 Likes

That’s actually a very important point I totally forgot about. There’s already so many features the AI just haven’t been updated for that I forgot it. If we are to add terrain I think it will be critical for the AI to be able to handle it, otherwise that will really break the AI and players will notice it a lot if most of the time when there’s terrain the AI is all stuck on it and can’t do anything useful.

So now that I think about that, that’s starting to sound like almost the biggest issue here: before adding any significant terrain the AI needs to be updated to handle it.

Edit: minor terrain like small groups of chunks or non-compound emitting bigger chunks could be, I think, created before the AI is tweaked.