Mazer5D, an old game I originally created back in 2009, and had 10 major versions since then, is getting a thorough modernization. It is so-named because of the 5-dimensional maze structure: rows, columns, floors, layers (think of this as a key sitting on grass: the key is in a layer above the grass), and levels (a maze isn’t limited to just one level of puzzle). It is built around object interactions – for instance, a damageable wall will crack and eventually crumble if hit. What it badly needs is a user interface update – right now, it’s menu-driven, more like a GUI app than a typical game. I am also overhauling the internals, such as the representation of tiles in the maze, to be more efficient and maintainable.
Here is the title screen and preferences dialog:
…four screen shots of the maze editor:
… and four screen shots of game play:
All of these screen captures are from an older build of the game, predating this modernization effort.
A big piece of this is building a new object model in parallel with the old one, and making the needed changes to get the two to coexist, if the new one does not replace the old one outright. Unfortunately, that particular piece of code has TONS of things that depend on it, so they all have to be slowly updated – this is why the work is already 3 weeks in and still has a ways to go until it’s done!
The biggest accomplishment so far is establishing a common “lingua franca” for the two object models to relate to one another: an enumeration called MazeObjects, whose constants represent all 411 currently supported object types. I still need to fix the images not loading properly, and change all references to individual objects to MazeObjects abstractions, using a helper class to fetch object information instead of calling methods on the object instances. With this done, it’ll be possible, at least in theory, to swap out the old model for the new one and only fixing references being required to keep things working. Exciting times are ahead!