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:

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!

Built With

Share this project:

Updates