GRASS-BASED STEALTHING. SWORD-BASED FIGHTING.
The original game-jam spec for BOG was pretty straight-forward:
You can cut the grass with your blade.
Hide in uncut grass by ducking.
Wiggle uncut grass to track your position while hidden and moving.
Look out for the wiggles of your opponent.
The wind also wiggles the grass; it can serve to disguise your wiggles, and those of your opponent.
Dash to move quickly; avoid harm, surprise your opponent, or knock them off the edge if they've crept too close to it.
Kill your opponent before they kill you.
GROWING BOG’S GRASS
Originally the grass in BOG was prototyped using a procedural mesh (above), built from an array of data points that responded to events in the game. This worked well enough as a prototype, but I’d always wanted to try more of the workload over to the GPU.
I eventually converted that mesh over to a geometry shader that could expand all of the grass's aesthetic behaviour (bend direction & amount, length, rotation, colour, etc.), and rebuilt the system that had handled the grass to instead be driven by texture data (first visual test below).
With Unity’s compute shaders I could compare frames of texture data and output changes between them as a buffer, which could then be used to generate new visuals (grass being cut, or disturbed, or bent past a certain threshold, etc).
This allowed me to recreate those original states & state changes, but with a huge performance gain, while also making iterating on those effects faster and more visually intuitive.