I don't think this maze is quite as difficult as Sneakypoo's excelent maze box, but that's not the point. The point is this maze can be changed programattically.
I used Blender to edit a 'key blank' out of Sneakypoo's original maze, then whittled it down into a different maze with OpenSCAD boolean operations. It worked. Now I don't have to give my relatives all the same maze :D
Read the openSCAD file for details on making your own maze, it's a bit tedious but not hard, kind of battleship-y.
The OpenSCAD file requires 'blank.stl' to be in the same directory.
I hope to make this parametric someday, i.e. controllable on thingiverse itself, but today is not that day.