The 2D Level Zone System is a combined behavior and visualization tool that helps designers segment levels based on presumed screen aspect ratio.
The tool's behavior aspect modifies the camera position and is heavily inspired by the style of classic NES Metroid. The tool's visual aspects indicate the bounds of areas of the level that can be seen by the camera, as well as highlighting areas the camera will pause as the player approaches an edge of a zone. The tool comes with a zone transitions behvavior that allows designers to customize transitions of the camera or player to the next zone.
Development on this tool began in November 2023 as a solution for recreating NES Metroid and wanting to unify all camera behvaior into one system. In its earliest rendition, the tool only supported exactly what was required of NES Metroid, which included simple axis aligned movement and basic teleporting of the camera and player between rooms.
The tool then received improvements to be used on a larger project (in scope and scale), Goose Genie, a puzzle platformer produced by over 80 students in 3.5 months as Spartasoft Studio. Receiving feedback for this tool from so many designers helped me compile a list of changes to upgrade the tool once more.
During the summer of 2024 (after carrying the tool into another work in progress game, Painter's Lament), it became clear the tool was in a very workable state, but needed polish in the form of custom editors and quality of life upgrades. I spent 2 months upgrading the user interface for the tool and received positive feedback about the custom editors and quality of life functionality.
I was given an opportunity to bring this tool into Arizona Bones in the fall of 2024. Arizona Bones started as a non-violent metroidvania which fit my system perfectly. I worked with their team as their vision for the game shifted.
Many bugs were fixed during the development process and the tool was iterated on in small ways to work better for the specific users engaging with it. One of the biggest changes so far has been adding debug visuals to indicate the visible area around a level zone. This helped the Arizona Bones team understand which areas they did or didn't need to fill in with art. This feature is capable of dynamically adjusting its perimeter evaluation based on child zones. This lets designers organize their level zones in a parental hierarchy for easier editor navigation.
The CSV importing tool imports comma separated value files and creates or updates scriptable object assets in a unity project. The tool allows designers to create massive amounts of data for their game, and easily import them as instances of predefined ScriptableObjects.
The tool was custom built to work on specific data asset types from the game Guilds of Greybrook. The designers were able to designate folder paths to search for import CSV file locations, export ScriptableObject locations, and art asset locations. The tool would then (re)construct every line of the CSV file as the specified ScriptableObject type.
This tool saved the team significant time, Guilds of Greybrook contains over 300 ScriptableObjects that were modified and udated over the course of 4 months of preproduction. The iterative design of the project would have been slowed tremendously if the ScriptableObjects were updated manually. The importing tool I've developed allows them to update or add all scriptable objects in a matter of seconds. The tool has a custom settings page that tells the tool where to look for the predefined CSV files it was built for. It also has folders designating where to output the ScriptableObjects to. The project required additional settings for building the ScriptableObjects such as sprite folder paths to update art automatically as it becomes available. This was used to update member art and contract art. Dice pip art was also handled by a custom settings page of a different tool I made.
I worked on two additional tools for Guilds of Greybrook, both helped the team with their large amount of dynamic dice data. The team originally asked for a tool that would allow them to create dice prefabs from all of their data, to assist this process I developed two layout groups. I made a D6 Layout Group that manages the position and orientation of its children to match the layout of faces on a standard D6 die. This was paired with a Pip Layout Group on each face that would layout pips as sprite renderers on a 3D object.
The two layout groups worked in tandom to render the data of a die and its faces, taking in ScriptalbeObjects and using a custom project settings page to get the relevant prefabs and sprites. Later in the developement of Guilds of Greybrook, the tool was transitioned from an editor time tool, to a runtime utility. I worked with the team to ensure the system worked in the new context.
The NavMesh Re-bake Tool bakes/updates multiple prefabs and scenes at once. The tool takes a list of folder paths and ask for a scene to do the re-baking in. It will open every prefab in the scene specified and open all scenes, when doing so it will re-bake all nav meshes found along the way. It then saves the modified NavMeshData assets and reopens the last open scene.
This tool was requested by a level designer from the team behind Freak Show. The designer asked for a tool that would allow their segmented level prefabs to be re-baked in bulk. I built a tool that met the needs of the designer.
This Gameplay Telemetry tool helps teams collect gameplay data from playtesting sessions in order to better understand the player experience. The tool functions in two primary phases: data collection and data visualization. This tool can be leveraged with single player or multiplayer games in LTS versions of the 2022.3 Unity engine.
Data collection requires that teams esablish what they are looking to track, then programmers on that team must implement telemetry logging function calls for their players or systems. This logger handles consolidating data to one telemetry file that can be exported.
The data visualizer handles rendering the data in the engine editor using a scrubbable timeline via a custom editor. This aspect of the tool provides designers with the opportunity to look through playtests at their own pace to better theorize changes they want to make to levels or mechanics.
This tool has not something I can share right away, there is quite a lot of polish to be done before it's ready for outside eyes.
Github: Github.com/KeithLerner
LinkedIn: LinkedIn.com/in/KeithFLerner