This was a very productive past week, especially with regards to the “Forest” biome. First, I added a persistent “pollen” particle effecThis is to add some movement to the world around the player, here in the form of bright yellow puffs floating about. Second, visibility decreases when the player enters this biome and the lighting/fog is tinted green. As you can see in the pictures below, the trees form a sort of canopy that blocks out the sun. It makes for a very moody experience.
I also decided to scrap my hand-designed tree models in favor of procedurally generated trees. Unity has a tree-generating engine that I understand is based on middleware called tree[d]. The upside to using this engine? The trees models are made on the fly, taking up little space, and I can revise their appearance with a few clicks. The trees now gently sway in the wind, they’re dynamically animated, and they also cast some performance-friendly shadows. They look rather pretty as well, putting my own models to shame. The downside? Well, Unity’s trees work best when attached to a “terrain” system. The terrain creates the tree’s colliders, batches them together to make the game run faster, and also replaces them with low-poly trees when far away (LOD). Also, without the terrain the procedural tree will not randomize, which means that every copy of the tree will look exactly the same as the first.
I managed to jury-rig a collider by taking the tree and stripping out the leaves. These mesh colliders are high-poly and taxing on the system, so they will only be generated when needed, really. I’ll need to find a way to efficiently simplify meshes in Unity before I can freely apply this collider. I’ve also planned my own LOD alternative, but that could take a while and it isn’t a high priority.
Finally, In the third picture below you can see the green and orange bricks snaking through the forest. I’ve managed to procedurally replicate the patterns that I manually created in the alpha demo. The paths all connect together and pass under the trees, forming random mazes and obstacles.
I’ve also been implementing some new editor tools for my own use in speeding up the game’s production. I’ll do a post on that when it’s nearly complete. In addition, I’m ditching the simplex noise generator as a way of determining biomes, favoring a Unity-ported version of the LibNoise library. I’ll be using Robert Whittaker’s biome graph as a guideline, the same graph that was used by Notch for Minecraft. From what I understand, this means generating two sets of noise data (one representing rainfall, the other representing temperature) for each chunk. For example, if the rain variable is low and the temperature is high in one chunk, it would be a good spot for a desert biome.