- You can cut the grass with your blade.
- Hide in uncut grass by ducking.
- Wiggle the 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.
At TOJam some friends and I wondered aloud:
Could we make a local-multiplayer stealth-combat game?
On one screen?
Because we don't know how to use two?
We wanted to make a game where each player's position hidden, but discoverable.
So we landed on a dynamic centered around having to signal your own position to yourself against the background of a "noisy" world, while trying to intercept and track your opponent's signal.
BOG was the result.
Since creating the original jam game (below) I've been working with my very talented friends James Stout (environment and character art) and Greg Puzniak (technical art) to rebuild BOG from the ground up in 3D. An early prototype of this revamped version of the game is available for free on itchio.
Originally the grass in BOG was prototyped using a procedural mesh, 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 move both the logic and visuals over to GPU.
I ended up collaborating with a friend to close the gap. My friend Greg put together a shader that could drive all of the grass's aesthetic behaviour (bend direction & amount, length, rotation, colour, etc.), and I set about rebuilding the system that had handled grass events, as well as looking for a new way to capture state changes in the grass using texture data instead of data points.
I ended up picking up enough about compute shaders in Unity to be able to compare the current and previous frame of texture data powering the grass's behaviour. This allowed me to capture specific changes in specific pixels as events, like grass being cut, or disturbed, or bent past a certain threshold.
The initial results were promising:
Since picking them up, I've continued looking for other ways to put compute shaders to use in BOG. One helpful change has been to setup a simple and fairly lightweight 2D wave simulation for the game's wind.
To capture wind effects previously I had used high-maintenance animated sprites for each individual event, but now simple sprites without animation will propagate, interact and dissipate without any additional upkeep on the code side from me.
Still a bit watery, but getting there:
I'm continuing to tweak BOG in my spare time. Lately I've been working on a new system for handling combat, which will hopefully make things like 4 player modes and new gameplay ingredients possible.