TaleSpire Dev Log 360
Let's look at Water Tiles.
I've been working on/off on Water Tiles for the past few weeks. Although the request has been for some blue tiles, we did want to test using the water plane shader to make it more in line with the "resin liquid" in-game. It had some issues but was promising. The Water Plane was never meant to have vertical sides, so all of the ripples were done with a top-down projection.
This results in long vertical lines running down the sides. Not particularly pleasant looking. Another issue was going inside the water, every tile would appear opaque because of the harsh normals. Essentially blinding you.
I decided to look at the second issue first as it appeared direr. One potential solution would be to make the water tiles solid, circumventing the problem. That way, Creatures wouldn't be able to enter the water, and the Camera would be less likely to have to pass through water tiles. Turns out, because you can easily see through the water tiles, it feels terrible not to be able to fly through with the camera as well.
So to partially address this issue, I set the normals of the tiles to be float3(0,1,0) facing upwards in world space. This would address the edges being too dark and constructed to the rest of the water volume, but would also make the color of the water more consistent regardless of the time of day.
This helped tremendously when flying through. It also made the vertical lines less visible. Not a fix, though, so had to handle that next.
I decided to use a Triplanar projection as a way to add more variation to the sides. What I didn't realize was that I had somewhat shot myself in the leg doing the "forced normal direction" in the previous fix. This meant that the normals, using the Unity Standard shading, were no longer facing the right direction. I wanted to use the lighting as is, so I needed to get the normals for the Triplanar projection from somewhere else. I decided to bake the normal directions into the vertex colors of the assets themselves:
[Insert Meme about Drawing Owls]
Something that eventually resulted in this:
Somewhat reminiscent of a cube of resin.
And in motion, it looks something like this:
I wish I could say these work perfectly, but there are still some odd behavior in certain cases that would need some iteration. Also, using this particular method of driving the camera through the resin is never going to be perfect. Some visual glitches will occur.
Finally, building caused a bit of an issue. To be able to pick Creatures through transparent objects, we don't pass said objects into the Pixel Picker. This essentially means that once you place a transparent object, such as a water tile, you can no longer pick it up again. Of course this is a problem. The solution we came up with was creating a toggle for transparent objects in Building Mode, essentially enabling and disabling the feature. Which looks something like this:
Overall the water tiles are looking decent. There are still a lot of cleanups, testing, etc, to do. Unless something serious comes up, though, we're looking at something which could go out soon-ish. I'm pretty excited about this personally and hope it will work the way you folks imagined it would.
Thanks for bearing with my ramblings!
Have a good one.
Disclaimer: This DevLog is from the perspective of one developer. So it doesn't reflect everything going on with the team
- Oldest ▾