Updated: Sep 15, 2020
Welcome back to Littlecube Valley!
In this development update, I will detail some of the major changes in the visual aesthetics, performance improvements and audio implementation.
The video above will give you a rough understanding
on the numerous differences when compared to the previous update.
1) Firstly, the previous OpenGL renderer has been removed and upgraded to iOS Metal instead. This allows us to significantly reduce CPU overhead costs incurred due to the numerous multipass rendering solutions we currently have. Multiple rendering targets also allow us to collapse some multipass solutions to single passes. Dynamic batching for large batches became redundant and are removed, and smaller batches are used instead.
2) A level of detail solution has been implemented to reduce the GPU rendering workload. Currently, the above video shows the lowest level of detail. Previously, I tried a high level of detail and the performance sank to 30 fps.
The levels of detail available would depend on the performance of the mobile GPU. This would be adjusted when future test results become available. At the moment, A7 & A8 systems will use low detail, while A9 & A10 systems will use medium detail, while A11 and future A12 systems will use high detail.
The image below shows an example for low level of detail. Notice how the wall and the thatch are only partially built with smaller cubes.
3) Another improvement added is the smaller field of view, meaning the camera view is more zoomed inwards into the scene. The smallest voxel granularity is now larger with better clarity. This indirectly removes additional GPU rendering of voxel chunks outside the field of view. The image below shows a larger field of view for interior of the cottage.
With regards to the above changes, the current performance is now about 45-50 fps on an iPod Touch 6, while the character is inside the cottage. I expect the iPod Touch 6 device to remain compatible until the end of next year.
4) There is also a change in the texturing resolution and it is now finer. There is no change in geometry resolution for larger voxels, just a major overhaul on how the texturing should have been done. The grid lines now have more clarity and cubic sizes are now more harmonised, even if it is just an illusion.
The texture colours have been updated as well, they were somewhat washed out previously. The silhouette edge and ambient probe colours have been revised as well. Overall, the game visuals are now much brighter and more vibrant.
5) I have also resolved the camera rotation issue, by simply allowing quick access below the options button. The screen will be momentarily filled with large bluish cubes in order to hide the intermediate results during the scene updating process. Those large cubes will be quickly removed as each voxel chunk of geometry gets updated. No longer would you need to see the ugly back of the optimised geometry. This is a much more elegant solution.
At the same time, it should be clear that different viewing orientations would show different geometric forms when having a low or medium level of detail. This is because such detail is generally modelled with respect to geometry visibility and occlusion. Occluded geometry would only exist for high level of detail.
The following images show the different viewing orientations and their low levels of detail.
6) Lastly, I have also implemented the audio subsystem using FMOD and bought a bunch of royalty-free music tracks and sound effects from WOW Sound and Epic Stock Media.
I have also spent some time digging through some of the websites offering free sound effects, before editing them in Audacity. Currently, there are sound effects for footsteps during walking and they are dependent on whether the character is walking on dirt, sand, stone or wood.
I have also found some nice sound effects the wooden door and added other suitable ones for the user interface. You will be able to hear the audio in the YouTube video linked at the top of this post.
The next goal would be to implement voxel destruction and its related functionalities. This would allow the combat system of the game to eventually function. Perhaps, being able to show that the character can destroy the cottage would be a good place to start.
Eventually, once the combat system is working and there are monsters to fight, I will build a smaller demo application and use it to launch the public alpha testing in the App Store.