Birdteeth
Check out the demo!
Birdteeth is an in-production bird-feeding puzzle game by Erica Chen, Amy Chen and I. As the lead developer on the project, I handle all aspects of programming. My responsibilities include creating and maintaining the project's:
- Creature AI
- Shiftable terrain and foliage system
- Puzzle system
- Modular save system
- Scene management process
- And overall game framework
Creature AI
In order for Birdteeth's birds to be responsive, natural, and performant, a variety of different technologies were utilized.
-
Behaviour Tree
A hybrid system utilizing a state-based core for decision-making and behaviour tree branches for actuation, allowing us to have greater control over state flow while retaining the modularity and scalability of behaviour tree nodes.
-
Navigation
A navigation framework that uses a custom 3D A* algorithm for in-air pathfinding and Unity’s native NavMesh system for grounded pathfinding. Map data for both modes are pre-baked in-editor, creating minimal performance overhead.
-
Optimizations
The birds use a variety of optimization techniques to remain performant. Their visual and logic complexity is partially distance-based, and special visual information like their fade and hue variations are controlled via a packed integer.
Terrain Shifting
One of the major features of Birdteeth is the ability to move the terrain, which requires a suite of additional systems in order to run safely and smoothly.
-
Terrain deformation
The main deformation system is based on blendshapes attached to the terrain meshes, with each terrain shape being a preset combination of blendshape weights.
Additional data, like static tri indices, pinned objects, and navmesh variations, are prepared in-editor.
-
Foliage and object pinning
When shifting during runtime, the position of pinned objects are calculated in parallel using Unity's job system, creating seamless visuals with minimum performance costs.
-
Navmesh map changing system
A corresponding navmesh is saved for each shape preset in a terrain area. An extra static copy with only the shared navmesh tris (i.e. all of the tris that experience no changes across all the different shapes) is also created for safe navigation during terrain movement.
Miscellaneous Features
-
ECS Prototyping
The original prototype of Birdteeth was created using Unity's ECS framework, both as a way to familiarize myself with data-oriented design, and to explore potential performance gains.
-
Save System
Our custom save solution is modular, human-readable, and allows for low-complexity integration. These three factors create an easily debuggable system.