Tools
Map Creation Tool
Tools are the cornerstone of any project and Unity has fantastic tools for all parts of development. However, sometimes your general purpose tools fall short, which is where my Map Creation tool begins! As seen below, this tool allows for the creation and editing of maps, creating terrain using custom Tiles and Objects that snap together to create the map surface.
Data Management
This module of the Map Creation Tool was used to create new save locations for board data, save board data to specified save locations, and load board data to be spawned in for editing. Data is saved and loaded from serialized files under the name specified in "Save Loc". Having boards be loaded from custom serialized files does complicate the spawning in of assets. However, it allows data to be loaded separate from Unity's Scene System and allows for different boards to be created and then merged together, creating sudo-random levels from multiple boards. My learning moment from creating this aspect of the Map Creation Tool is to avoid writing serialized data and opt for a different data storage method, like json. Creating any changes and adding functionality to the tool makes reading of old serialized data impossible. It is also impossible to manually edit the data, making it inflexible and not ideal for testing board ideas.
Tile Stacks
The boards created by data management are matrices of my custom Tile Stack Class. Each Tile Stack has an odd number of tiles that specify the ground and ceiling tiles, the heights of each tile, whether or not you want a prefab attached to the tiles as an object, and the rotation of the object. When these Tile Stacks are loaded next to each other, a terrain is created that is akin Voxel; Blocky, but with style.
Paint Tool
Data is nice and all, but it is important to have a simple and easy way to actually change the board data and swap tiles. That is why the paint tool was created, with the simple functionality of replacing whatever tile the editor camera is looking at with the Tile Stack currently selected above.