Minigolf for Android

After a few years of tinkering around in Unity and some prototypes, my brother and I, currently studying computer science, finally managed to create a game that precisely implements our concept.

Google Play: https://play.google.com/store/apps/details?id=com.PixelFurnace.Minigolf

Trailer:

Gameplay: https://youtu.be/S6Pkzv3cyuk

Plan
We planned to design a beautiful game with high quality lighting to create a nice atmosphere. The tracks should have realistic layouts, which we often missed in other minigolf apps. To focus the gameplay on minigolf only, we did not want to include any In-App-Purchases or ads and left out flashy UI elements.

Realization
For the environment we used low poly assets by LMHPoly and modelled our own high poly tracks in blender which we tried to blend in by using simple colors and shapes. We added a subtle noise texture to the tracks and grass in order to visualize distances and speed. Shadows and GI were baked into lighmaps, which are rendered using distance shadowmask. We decided to use precise controls over flicking to achive high consistency between input and outcome. Because of the controls we had to avoid straight paths from start to finish, which are common in real life minigolf, where aiming is not as easy. As the camera orbits around the ball, we used additional cameras at higher elevations to provide an overview to each track. Our UI consists of thin white lines and text on a dark background. We animated the elements to create satisfying interactions.

Problems
The performance is our main issue. We can’t have our nice lighting and high framerates at the same time on low-end or mid-range devices. Additionally the realtime shadows show weird artifacts, which we couldn’t fix yet. If you want to help, you can find more details on this stack-exchange question: https://gamedev.stackexchange.com/questions/147044/how-can-i-fix-this-shadow-slicing-the-mesh-on-android.

I would be happy about your feedback or rating.