Bézier Vines

Hedge Maze didn't start off as a game, per se. I was working my way through James Buck's Mazes for Programmers book, and had a neat little Python project that could generate random mazes. Then, when showing off my work to my wife, she wanted to actually solve the mazes, not just watch them draw?


It had been years since I'd done a project in Unity, but I thought it would be easy to port my code over to C# and give her something fun to play with. Thus began a 5-month project that grew wildly out of scope.

You controlled a beach ball in the first version of the game.

Because I had no real plans when starting the game, and because I was reacquainting myself with Unity, there was a lot of stuff that I just played around with for the fun of it. I had a rather complex vine system that didn't make it into the final game. At one point, the mazes had "locked doors" in the form of vine walls, and you would have to collect keys to get them to open.

We've upgraded from a beach ball to a boulder at this point.

The vines themselves are procedural implicit geometry, driven by a Bézier curve. I wrote an editor gizmo to help with positioning the vines.

This was so much fun to play with.

Cutting these features was the right call for the game. Putting in all the work needed to implement the ideas would have taken several months, and I was ready to move on to other projects. As a bit of an Easter egg to myself, I included a clump of vines in the hub world. If you carry the winter seed close to them, they'll shrivel up.

This is similar to how the original key / door mechanic was going to work.