We now fully implemented the Player panel and we can take it even further. Player panel serves as an indicator how well you are doing. It’s also a place where you manage your gear. From head items, torso and so called ‘plugins’ which increase your stats. You will be able to craft and find these plugins troughout the world. Check out how it works at this point:
Since the world won’t be that small, we will give players some sense of direction by adding simple compass on top of your screen. We had a map in previous iteration and with testing the game we have seen that noone had been using it. Probably because they weren’t any interesting things on the map, so these things can change troughout the development. Though the main idea remains – for players to know where they are (we are about to add memorable points of interest and floating islands). Also, biomes are the easiest way to tell where you are (snow biome is usually in the north, desert biome is in the south).
GPU Rendered Grass Test
We had plenty of concerns about our recent grass renderer that I made. It uses Unity’s DrawMeshInstanced() function over multiple meshes we spawn troughout the world. The problem with this system isn’t rendering itself, but batching grass meshes that are near you. We’ve used the fastest possible Octree implementation to get nearest grass meshes. Then we put these to the renderer, that caused a lot of GC allocation and used alot of CPUs usage if we wanted dense and diverse grass. It also used a lot of drawing calls when we wanted to draw different meshes with different textures at the same time (example is when you stand on the edge of two or three biomes).
The last and only solution that I thought of was doing everything on the GPU by using geometry shaders. There are zero to none examples on how these things work in Unity so I started experimenting with it. The shader successfully draws triangles on a list of vertices I provide along with color and normal of the surface beneath. The shader has tweakable settings, from width and height of the grass, shadow intensity, wind strength and more. This is for now only a test and will probably take it further from here, we have to figure out how will grass cope with our art style.
Shader World Models for Items
Item framework system a has new additon which enables us to (re)use world item models on different items. This means we can create more items with less modeling. Example: two torso sets that look the same, but have different stat bonuses on it. More about it in the future blogposts.
Timelapse #6: Companion modeling and rigging
Companion will work as a tool and therefore I modeled it with relatively lots of polygons, since it will appear close to the players view. I then rigged the model, so I could animate all the moving parts. Lastly I animated it together with the first person rig for the various actions that will be performed.
Outfits and skins
The outfits and armors we are adding to the player character are separate models, that fit over the player character and I made them connected to the same skeleton as the player. I model and weight paint them with the player model in blender, so I can test it with different animations and see how it works and looks with the player, but I then save it in its own file for import into unity. This way we can keep adding more outfits.
Skins are basically new models that represent the same item. Sometimes I copy an existing armor and modify it and other times I just make new armors from scratch for skins, depends on what I’m trying to make. Then I bring the player and outfit models back to Unity and remap them to the same skeleton, so they work with the animation in the engine.
Floating islands biome concept
The floating islands above the ground are going to need an overhaul as well. We’re redefining the shapes and sizes plus it will have its own mini biome. The old island models look too boring and simple to recycle them, so we had to come up with something fresh. I drew up various shapes and sizes concepts which the team approved and based on that, I painted this quick concept art.
New icons for UI/Inventory screen
I’d been given another sidetask by Domen, to paint the new icons for the game UI/Inventory screen. It’s going to take ages to complete, but it is the necessary evil that has to be dealt with.
Improving resource helper
This week was all about improving resource helper. I made a simple Server/Client ftp connector, which resolves version disputes quite easily. It has an Upload – Push and Download – Pull function, which reads and writes from server and to a server. This storing and reading technique will be used heavily, internally, but it may have the potential to be used as a modding tool. User could download item resources file with different settings from the ones that are set on his PC. This completely alters the behaviour of Floatlands game and after he is done “playing around”, he can simply download the official and latest version, which sets game behaviour to default.
Lately I’ve been working on world bounds, which are automatically generated based on bounds size. The intent here is to prevent a player from falling off the world.
I was searching for charting software for planning, I did this because it felt like we were somewhat in the dark with planning. I found TeamGantt, their charts allow you to plan tasks on the timeline, and more importantly, make tasks depend on each other – “if Y depends on X, then we must finish X before working on Y”. With this software, we can estimate, how much work there is to do and how much time it will take.
From this Friday on and until the release date we will release one track of the Official Floatlands Soundtrack a week, but also remixes and experimental tracks. Happy listening and let’s make a start with the track Serene.
Serene is a track that is set out to make you feel the vastness of the scenery in Floatlands. A multitude of layered and swelling Synthesizer patches guide you slowly into the dazzling, dreamlike worlds.
Join us on Discord