Inspiration
The game Journey? A flying object travels through a beautiful cloud planet with a mysterious alien scene, who will not like it?
What it does
Control a flying object to fly freely
How we built it
Build with Unity with some 3rd party assets:
The aircraft control module credits to gamesplusjames's video "Flying Controls in Unity - Tutorial " on Youtube which provided us very straightforward steps of how to accomplish each moving functionality of our aircraft. Youtube: https://www.youtube.com/watch?v=J6QR4KzNeJU&t=1s
The basic volumetric cloud solution was referenced to Sebastian's solution: Youtube: https://www.youtube.com/watch?v=4QOcCGI6xOU Github: https://github.com/SebLague/Clouds Playing with his code is absolutely an enjoyable task, and dig into the algorithm and shaders also took us a lot of effort.
The first procedural terrain script was inspired by Brackeys tutorial: GENERATING TERRAIN in Unity - Procedural Generation Tutorial (https://www.youtube.com/watch?v=vFvwyu_ZKfU&t=303s).
While it consumes too many system resources, a second version terrain generation uses asset of ProceduralTooKit from Unity Asset Store and modified scripts solution from Nova840's tutorial video: Infinite Procedural Terrain in Unity (https://www.youtube.com/watch?v=f9uueg_AUZs&t=1802s)
Challenges we ran into
Of course, the biggest challenge is to implement the separate part together, manipulate the setting of the asset, solving for volumetric cloud and light effect, implement the controller of the object, and with terrain generation functions.
As a team, we separate the task into the cloud, aircraft, and terrain generations.
For the aircraft controlling, even though the basic functions are seemingly easy to implement, to refine the details leveled up the tech difficulty to an entire different level. So we put a lot of effort on that and luckily, the result basically approached our expectation.
As for volumetric cloud, first, we tried to find an easy solution to build our own code on it, but then after some research, we found that the basic logic behind the algorithm is too complex to implement in 2 days, thus we choose to find an implemented solution online. But even after getting the package, we still need to modify it to make it suitable for our own fly scene, as for both performance and visual effect perspectives, thus we need to go deep into the shader system and manipulate some of the code to make it work within our scene, and testing different system settings to get a satisfying visual effect, with no performant impact.
The biggest challenge for terrain generation is reducing time complexity. The first generation script would move with the player and updating each vertice's height (y value) with noise. It is not efficient if the size of the terrain is increased. So the first method was discarded and a second version is used.
Instead of generating a single terrain plane, the second version uses "tile" (a plane) as the minimal element, and keeps generating new tiles in the direction of the player's move, destroys tiles behind. It consumes fewer resources when generating bigger areas for better visual effects.
Both of the two methods use Perlin noise to procedurally generating terrain. Although a more realistic looking noise is noticed---- the fractal noise, the rest of the time does not support creating an efficient method with such noise. However, we believe the current terrain looks good enough for the demo!
We also planned to add some building and environment elements, such as huge alien structures and something like that, but as the influence of the way the volumetric package works, it overwrote the camera effect visually, thus most of the attempts were failed. Thus this part was left to a future plan, also along with rewritten our own volumetric post-processing effect, for both the cloud and the light. (God ray is god)!
Accomplishments that we're proud of
At least it's beautiful, right?
What we learned
A lot of mathematics, Unity shader pipeline, the volumetric algorithm, and procedural terrain generation with noises, as well as a flight controller.
What's next for Fly Fly no Pew Pew
Keep implementing the scene, dig into the volumetric algorithm, all the post-processing effect with more shader stuff, and applying fractal noise for more realistic terrain generation!
Log in or sign up for Devpost to join the conversation.