Version 0.0.2 (12/23/20)

Added a global normal map to all in game textures

House Normal Map

If you look closely you can see that the side of this house has some texture to it and that's because I added a normal map into the main shader I use for all objects in my game. The texture itself is of torn fabric but it's really easy to swap it out for something like clay or cardboard in the future.

The reason I added this was because it's really hard to judge depth on textures that have no surface imperfections and this seemed like a easy way to add style to the game without having much artistic talent haha.

Changed the main scene's lighting setup to improve visibility

Lighting Before After

After adding in normal maps I realized that parts of the scene that were in the shadow of the main direction light completely lost all detail and visibility. I attempted to solve this with baked global illumination because I'm using URP but after a couple of failed attempts I realized how much easier it would be to add in a few other directional lights to give everything an ambient brightness.

This is actually different to ambient lighting though because the lighting has a source and a direction which is what makes the normal map visible when in the shadow of the main light.

Created a custom shader for the skybox

Custom Skybox Shader

I was getting really sick of looking at unity's built in skybox and even though I could change the colors around to make it look different you could still tell what it was. I then discovered that you can actually use shadergraph to create skybox materials which is really cool, the only issue with it is that the uvs are kind of strange and it's hard to map textures properly.

Gradients map fine though because you can use only the height of the uvs to dictate which color goes where and that's very simple.

Added Beach Tiles

Beach Tiles

This was a really simple thing to add and I did it because I needed some way to keep the player in the map and not have a clear edge that was the end. Making the map an island was a clear solution to this problem and it adds some immersion.

The tiles themselves are super basic but they were needed to serve as the barrier between the water and the basic ground tiles.

Created placeholder animations for the player

Placeholder Animations

I needed some simple animations just to make the game feel better and so that I could easily swap them out in the future because I already had an animation controller set up.

It's amazing how much better the game feels when you character has visible animations, I'm going to focus on have really fluid animations in the future to enhance that feeling.

Created a custom water shader that surrounds the map

Custom Water Shader

I made this water shader entirely in shadergraph and it was really fun to do. Everything is procedural so no custom textures were needed and it involved a lot of noise to displace the water and to create multiple overlayed normal maps. The intersect part of the shader (the foam) was also fun because it looks really nice and is super customizable.

The actual mesh that this shader is applied on is a grid of planes that all have different LODs to save performance. Also to reduce the visible seams where the LODs change I have the amplitude of the water displacement only work near the camera, the farther away the water is the flatter it will be. I think I've seen games do that in the past but I'm really proud that I got the idea to do that.

Made a shader supported by a script to customize character appearance

Customizable Character Shader

I want the players to be able to customize their characters appearance in the future so I divided up the player mesh into different materials and added a custom shader where the albedo is accessible through script. On top of that you can also swap out the texture used for your face which I think is fun.

In the future I might even include a little face editor in game so players can draw their own faces.

Added the Golf Cart

The Amazing Mail Game Golf Cart

I've been trying to find a good middle ground vehicle that isn't the side of an entire van but is also larger than a bike so the golf cart was a clear solution to that problem. It'll give me the chance to experiment with making a good vehicle controller while also being simple and small.

I didn't really have a workflow set up for colliders but with this vehicle I figured out it was good to model a bunch of boxes and spheres over the vehicle in blender and then drop the their colliders onto it in the editor so that I didn't have to deal with any rigidbody meshcolliders.

Added basic pedestrian NPC's

Pedestrian NPC

To be frank, these guys are incredibly stupid at the moment but I wanted to get a placeholder in the game so that I could improve upon it in the future. Right now all they do is walk in random directions but it also gave me a chance to test out the random appearance script I made that accesses the custom shaders for their skin, clothes, and face.

Overall they make a good obstacle at the moment because they love to walk into the middle of the street.

Added support for snow in the main material shader

Custom Snow Shader

This was fairly easy to implement because it just involved overlaying some world space noise onto the surfaces that faced a certain direction. It doesn't look good at the moment but now that this feature is in place I can make changes in the future.

There is a pretty noticeable problem though where the snow is so bright that it reaches the threshold of glowing due to the bloom post processing effect so it still needs a lot of work.

Added custom skybox effects that are tied to camera height (underwater/space)

Custom Skybox Effects

This feature wasn't really necessary but it was a fun thing to add, if you go underwater the skybox turns into a gradient of blue and if you go super far up the sky begins to get dark and the stars come out. This feature is for the players that manage to break unity's physics and fly all the way into space.