top of page

Bait

Bait

Bait

Bait is a fish simulator where  you play as a very bouncy pufferfish.

C++

OpenGL

GLSL

Maya

Blender

The game was created by a four person team with my role being the 3D artist and graphics programmer.

Art Assets

Fish_Illustrations (1).png

Fish Concept Art

Before creating any assets, we had to decide what kind of fish we would use for our game. We all decided that a low-poly art style would be best for the kind of experience we are providing while playing Bait. From there, I drew concepts of some fish that could be in our game. 

Pufferfish Model

We liked the pufferfish the best for the game because of the different movement options it provided for our game and how friendly it appeared as a protagonist. I created the pufferfish model in Maya and added animations in blender and the code.

baitbeachscene.jpg

 Additional 3D Assets

For the environment, the beach and underwater assets were created in Maya and then imported into Blender in order to be processed by our program. 

Screenshot 2025-01-26 120135.png
Screenshot 2025-01-26 120444.png

Blender Environment

instructions.png

UI Elements

The last thing that needed  to be created was the instructions screen and UI elements which were drawn in Illustrator.

Graphics Programming

Bait was made in C++ without an engine, so all of the graphics programming utilized OpenGL and GLSL.

Water Shader

Sand Shader

The water and sand shader were both created using Voronoi noise. The noise was overlayed over the sand bed, and the noise was used to change the height of the waves in the water and as an overlay.

The water shader achieved its transparent look by rendering everything from two different camera views into separate framebuffers, which then were projected onto the water plane's surface.

If the height of the camera was below the waterplane's surface, an underwater shader was applied which tinted everything in blue and added an underwater fog to the scene. If the height of the camera was above the waterplane's surface, then a flat shader was applied.

The seaweed shader moves the seaweed randomly and with varying intensity according to the UV coordinates on the mesh - the closer to the top of the mesh you are, the more the seaweed moves and reacts.
The shader also takes the pufferfish's position as an input. If the player enters a certain radius of the seaweed vertices, then the seaweed will move away from the player. 

The outline shader was created by turning the mesh white and then expanding the mesh of an object in world space and converting it to clip space. An invisible wall was created for our game in a similar fashion; the wall mesh exists in the scene, but the position in clip space is moved all the way below the scene.

The animations for the pufferfish were created in blender and programmed in. The animation for the pufferfish expanding and quickly deflating is created in blender while the spin towards the camera for the expanding animation, flipper, and tail movement are added in the code.

Mega Cat TKynard Resume 2025.pdf

bottom of page