This is my hobby project which I work on in my free time, I try to translate my love for motorcycles into this piece of software. Apart from expressing this love I try to push my technical and artistic skills here. Unfortunately, I stopped getting much of that free time just months into the development. Still here are few things I achieved and am really proud of.
//Technical Highlights:
1. PROCEDURAL AUDIO GENERATION FOR ENGINES
I believe most motorcycle enthusiasts would agree with me on this that the most beautiful part about their motorcycle is the sound it makes. It's music to our ears. So naturally my utmost focus was getting the sounds right. Downloading few clips from internet and playing them on loop wouldn't cut it. So I just build an audio generation tool to help myself. Make waveforms, overlap them like a real engine's cylinder configuration. The one bike that is in the game might not sound the most beautiful thing to you, because one, it's tuned to my personal taste. Second, It was supposed to be an entry level bike, more obnoxious ones were supposed to come later. But the important thing is, it's responsive to our throttle input.
I believe most motorcycle enthusiasts would agree with me on this that the most beautiful part about their motorcycle is the sound it makes. It's music to our ears. So naturally my utmost focus was getting the sounds right. Downloading few clips from internet and playing them on loop wouldn't cut it. So I just build an audio generation tool to help myself. Make waveforms, overlap them like a real engine's cylinder configuration. The one bike that is in the game might not sound the most beautiful thing to you, because one, it's tuned to my personal taste. Second, It was supposed to be an entry level bike, more obnoxious ones were supposed to come later. But the important thing is, it's responsive to our throttle input.
2. GETTING TECHNICAL WITH THE ART
What do I mean by this? Knowing what we perceive and how much of it can calculated and rendered by a small mobile device. Anyone can tell you need to go low-poly with mobiles, don't use transparent materials or real-time lights etc. But none of it sounds like a good thing when you're trying to make an environment as dense as a Jungle. So I had to make up in other departments or come up with alternatives to make it look convincingly good. Here's how I dealt with these:
Avoiding Transparent Shaders: Then? how am I supposed to make these trees? model every leaf? Well simple answer is to use cutout shaders, but you need to be careful with the borders to make them look good enough.
Avoiding Realtime Lights: And make everything look flat? Not really, bake everything flat. Sounds so obvious right? To me too, but the limitations and imperfections of baking inside unity made me turn to Blender for this. I baked the lighting separately and multiplied on top of flat textures using simple custom shaders. But why separate? why this extra calculation of multiplying lightmap? Because I texture my objects differently. Let me explain in next part.
Texture Efficiently: When making terrains, the biggest challenge with them is the texture sizes, especially if you want to bake lighting on them as well. To combat this, part of my solution was mentioned above, separate the lighting and turn down the resolution, blurry shadows are not that big of a compromise. What actually is a big compromise are the blurry textures. Most terrain building tools have solution for this: repeat the texture and blend it with a mask. That's what I do, blend low resolution textures with a low resolution map and multiply it with a low resolution shadow map. The memory footprint of entire combination is much smaller and looks far more high quality.
Make Low Poly Models: Yeah, but not a practical solution if you're not trying to achieve that style. So What did I do? Thanks to the Edge Splitting inside Blender you can fake smooth surfaces with a good contrast of defining edge lines, it utilizes the Normals of mesh to do this which often left unused in mobile development. I had to be careful with the angles b/w faces a lot of the times but it's a doable when you're not dealing with a lot of faces. Again you might not be that impressed by the bike you see in the game, but there were more to be added, you can check some of them out here: @adventureridergame • Instagram
Ambient Occlusion: So up until now I discussed were pretty much making up for hardware limitation that we have with mobiles. But how about making it look more realistic? So in my opinion, ambient occlusion is probably the most convincing factor of lighting when it comes to make it look real. It's the indirect light that our mind cannot process by itself but it can see it's there. That means, it can also see when it's not there. So when baking lights, I made sure I'm not overlooking this part. Oh and because our mind is not capable of calculating it, we are allowed to have imperfections here. I hope it made sense.
What do I mean by this? Knowing what we perceive and how much of it can calculated and rendered by a small mobile device. Anyone can tell you need to go low-poly with mobiles, don't use transparent materials or real-time lights etc. But none of it sounds like a good thing when you're trying to make an environment as dense as a Jungle. So I had to make up in other departments or come up with alternatives to make it look convincingly good. Here's how I dealt with these:
Avoiding Transparent Shaders: Then? how am I supposed to make these trees? model every leaf? Well simple answer is to use cutout shaders, but you need to be careful with the borders to make them look good enough.
Avoiding Realtime Lights: And make everything look flat? Not really, bake everything flat. Sounds so obvious right? To me too, but the limitations and imperfections of baking inside unity made me turn to Blender for this. I baked the lighting separately and multiplied on top of flat textures using simple custom shaders. But why separate? why this extra calculation of multiplying lightmap? Because I texture my objects differently. Let me explain in next part.
Texture Efficiently: When making terrains, the biggest challenge with them is the texture sizes, especially if you want to bake lighting on them as well. To combat this, part of my solution was mentioned above, separate the lighting and turn down the resolution, blurry shadows are not that big of a compromise. What actually is a big compromise are the blurry textures. Most terrain building tools have solution for this: repeat the texture and blend it with a mask. That's what I do, blend low resolution textures with a low resolution map and multiply it with a low resolution shadow map. The memory footprint of entire combination is much smaller and looks far more high quality.
Make Low Poly Models: Yeah, but not a practical solution if you're not trying to achieve that style. So What did I do? Thanks to the Edge Splitting inside Blender you can fake smooth surfaces with a good contrast of defining edge lines, it utilizes the Normals of mesh to do this which often left unused in mobile development. I had to be careful with the angles b/w faces a lot of the times but it's a doable when you're not dealing with a lot of faces. Again you might not be that impressed by the bike you see in the game, but there were more to be added, you can check some of them out here: @adventureridergame • Instagram
Ambient Occlusion: So up until now I discussed were pretty much making up for hardware limitation that we have with mobiles. But how about making it look more realistic? So in my opinion, ambient occlusion is probably the most convincing factor of lighting when it comes to make it look real. It's the indirect light that our mind cannot process by itself but it can see it's there. That means, it can also see when it's not there. So when baking lights, I made sure I'm not overlooking this part. Oh and because our mind is not capable of calculating it, we are allowed to have imperfections here. I hope it made sense.
//VIDEO:
More on Instagram: @adventureridergame
//PLATFORMS:
Android (Link)