Over the UCI 2018 Winter break – my last year of college – I had begun diving into the rabbit hole that is game frameworks. Basically at that point, I had grown tired of using Unity for every single game and wanted to learn more. I decided to pick up the C# framework MonoGame, an open-source recreation of Microsoft XNA. It was just me, an update loop and an endless amount of third party integrations to choose from. It felt like freedom.
However, there was just one problem: I lost access to a lot of Unity’s tools.
My first order of business for my MonoGame project was to formulate a design doc and lay out the tools needed to get it finished. I decided that for my game project, I wanted to not burden myself with tinkering with thousands of animation frames, when spritesheets already existed.
So, what to do? Well, MonoGame supports drawing portions of Texture2D’s, meaning spritesheets would work, but animations would need structuring in a nice, readable format that could be generated from a tool designed to build this animation data. This looks like a job for homegrown tools!
To make animations work, I would need a tool to painlessly create spritesheet animations with. I took to Windows Forms to make this tool, since I was already working in C# for MonoGame and had made tiny dev tools with Forms in the past. Over about a week of chipping away at the tool, I had decided to format animations in XML and make a tiny, separate API to create and read the animation files. Animation files would be stored as sets of animations distinguished by name, so I could create “Animset” files for each character I wanted in the game, each with the same anim names stored in them like “idle” or “run1” for use in programming them.
So, what can this bad boy do? Well, it can save and load animsets, create animations and add/remove frames. It took a bit of work to make the tool presentable and cover as many use cases as possible (some operations may still make the tool crash, but you have to really do it on purpose). On top of that, I added an anim preview feature to the tool for convenience. I had also put the project up on GitHub with an executable release, my first time doing so, so that was exciting.
I will continue working on my MonoGame project, but this animation tool is an open and shut case. It can be looked at from the GitHub links at the top of the page. Just another tool in a long line of internal tools meant to make my life easier, and hopefully if I get a tools job, maybe save others’ time and some development money.