For Aspen

May 2023
"For Aspen" is a 3D adventure game where you take beautiful trek through your mindscape in order to prepare for a ceremony. This was my first time using shaders in Unity!

Made for the Games Den Anthology Winter 2023.
Unity
Clip Studio Paint

Details

My main goal with "For Aspen" was to create a game mainly focused on atmosphere and environments, particularly in 3D. As such, I spent time learning about the shader graph system in Unity to create my own shaders. With the exception of the Grass System by Minionsart, all the shaders where made by me! Learning about post-processing and lighting was also huge, and really helped with achieving the atmosphere I wanted to create in this game.

I also focused on creating a well-designed and easy-to-understand architecture, using game dev design patterns.

Shaders

A lot of different shaders where made to create the world of For Aspen. These shaders were developed using Unity's Universal Render Pipeline (URP) and Shadergraph, a tool that allows you to build shaders visually.

The layer of fog present in all the areas is based of Orthographic Fog Plane Shader by LMHPOLY. The shader was adjusted to work with a perspective camera, and noise was added to create the wispy effect found in the game.
One issue that I came across was creating transparent 3D objects while having 2D sprites. This often causes depth-sorting issues, where the sprites are drawn above the transparent object rather than behind. To work around this issue, a dither transparency shader is used. This shader does not make the object transparent, but rather creates a dither effect in which holes are rendered in the model. This makes the object stay opaque while creating an illusion of transparency, allowing for the sprites to be layered behind the object.
To make the scenery more lively, a shader was also used to make the leaves of trees appear to shake in the wind. To this, vertex positions of the leave sprites were transformed using a gradient noise pattern. A shader was also used to implement shadows for the 2D sprite objects in the game, following Tarodev's tutorial for Sprite Shadows in Unity.

Design

As there were many different types of objects that the player interacts with throughout the game, it was useful to generalize and create superclasses/subclasses. Notably, the Interactable (objects that can be interacted with by pressing E) and Touchable (objects that do something when touched) classes are inherited by multiple subclasses.