
Gameplay Video
Overview
Final Project of the class GSND 5110 Game Design and Analysis. This project entailed creating a polished micro game about a topic of our choice. The idea for the game initially stemmed from day to day grocery store interactions, where you could potentially glean interesting information about an individual based on the contents of their shopping cart. For this project, we also created a pitch to sell our initial idea. This idea eventually evolved into a more narrative focused game using what customers are buying to improve the world building and environmental storytelling of the game.
For my role in the project, I worked on Ideation, the game and mechanics design, as well as the 3D Art and Technical Art sides of the project. My primary focus of this project was to learn how to create 3D art, including modeling and texturing, as well as learn more about Unity's Renderer pipeline and use it to create a visually striking game and develop some shader skills.
Another hat that I wore for this project was as a sound designer. While we did not have time to make custom SFX for this game, I chose free sounds that fit the atmosphere of the game and implemented them using Unity's build in audio system.
As the timeframe of this project was very brief, eventually we would like to flesh out of the game more and polish it to bring it to a higher standard.
Time Spent: 40-50 Hours
Skills
Game Design, 3d Technical Art, Programming, Blender, Unity, Project Management, Testing, QA, Sound Design
Specs
Engine
Unity
Platform
PC, Browser/HTML
Shaders
For this project I created several custom Post-processing shaders in UNity's Universal Render Pipeline (URP) using Unity's ShaderGraph editor. Here is a list of the post-processing effects in order.

Outline
The first shader is a basic outline shader that uses Normal Data to calculate where edges are. Originally, this shader also used pixel color data to calculate hard edges too, but this was removed as it created too much noise for certain objects.
Posterized Grayscale
The next shader acts as an intermediary step for the next two shaders. This shader first grayscales the Screen Blit by using a dot product, then posterizes the result into a user defined amount of steps. In this case, 128 steps are used for a cleaner look.


Dither
This shader requires the previous shader to work properly, and creates a dither effect between color changes to smooth out the color banding created during the posterization process. This shader uses a 4x4 Bayer Dither algorithm custom written in HLSL using the UV of the screen and features a few parameters for customization. This shader also reduces the number of colors to a specified amount + 1, which reduces the colors back to 16 which is what the current color palette of the game supports.
Palette Swap
The final custom shader is used to change the grayscale image into one with a defined color palette that can be artist tailored. This shader samples a texture that contains a color palette and maps that to the UV of the screen. This color palette is generated at run time with a Monobehavior script that can create a palette texture with user defined color inputs. This allows for quick changing of the palette to meet the artists vision.

Film Grain
The last post processing effect is a built in Unity Film grain effect using the volume system. This gives the scene a more nostalgic feel and sets the scene better as the player character is a robot.
3D Modeling
for this project we used a mix of custom 3D models and free to use assets. Custom models were used for important items relevant to game mechanics and were created by me in blender. These include some of the following models.





