Tools For Game Dev
Tools For Game Dev

Tools For Game Dev

Throughout game development, we automated various parts of the pipeline. Here I’ll briefly go over some of the tools I created to help us be more efficient. All of these were created in C# but their logic could easily be extrapolated in any other programming language.

Animation Importer

One of the first tools we made was an easier way to import animation sprites. Unity utilizes 2D sprites to generate animations in the game. However, we needed to standardize the animation names so the game logic could easily distinguish different animation types. Check out more on Enemy Logic

We took advantage of the Aseprite tag system, which exported both a PNG sprite sheet and a .json file containing a quick dictionary that had a range of each animation:

I’ve created a tool that does the following:

  1. Takes the JSON file and finds the appropriate sprite sheet
  2. Using the name tags, it maps each frame to the equivalent sprite in the sheet
  3. It creates a Clip for every animation, sets the desired framerate, and adds all of them to an Animator Controller
  4. If there is no controller selected, it creates a new one

By ensuring the tag names are consistent we get to maintain a robust naming convention throughout all clips and animator controllers. This allows us to use any name we’d like on the tags, retaining freedom and flexibility.

Map Maker

One of our largest challenges was creating the entire game map. Each room has visual and numerical properties. I’ve developed a tool to automate a lot of this process.

  1. Generate a room, save a prefab copy, create aconfig file, and set the room position on screen

2. Paint Walls takes the tilemap drawn by the user and drawing the correct walls.
Each wall is in its on layer to interact properly in 2D space

The tool also does a flood fill to determine the inner and outer bounds of the room. These allow it to detect corners for the ground and walls accordingly.

It also allows us to clear the blueprint (yellow) or walls / floors as needed to expand and reiterate.

We can also easily move and save a new position where the room will be loaded on start. This let’s us experiment with different room connections on the spot.