Note: I am not affiliated with or endorsing Airtable in any way. I've simply found it a very useful tool that not many folks that I know are aware of, and I wanted to show one specific use case for it.
Airtable is a web app that basically makes an easy way to create an online database. I like to think of it as google sheets on steroids. We’ve talked about using Airtable as a productivity tool before, but I haven’t had the time until recently to document exactly how we’ve been using it in our game development process. In this blog I’ll share how we used airtable to organize and document our events system in Academia : School Simulator.
Events Game Design
First, I will quickly explain how our events system works (here is a link to the events game design document for further reading). Events in Academia : School Simulator are random occurrences that pop up in the game that force the player to make a decision. This was always part of our long term design, but when we added it the intention was to improve late game enjoyment of the game. It was also a way to add narrative elements to the game that would be much more difficult to add as a proper mechanic.
Organizing Our Events
Our Events system has a lot of different parameters, ranging from the Name ID of an event, the event description, down to whether or not the Event is a parent, and numerous text and effects and costs of different options. As of release, we have 125 different events, most of which have at least 2 options, with a corresponding success and failure text. In a purely narrative based game I suspect that this would be even more (now I wonder how they organize their content).
While it is possible to organize this in a spreadsheet, the information for one event would be displayed in a single horizontal or vertical line of information, which is terrible for quick comprehension.
With Airtable on the other hand, I hijacked their “gallery” view to make what I think of as a “card” view of each event. This way I can immediately see the event, see what the requirements are, what the options are, etc. I can select which fields to show so that I have just as much or as little information as I need.
I will now go through each different row or field, as Airtable calls them, to show how I used these to organize and parse data.
Name fields are fairly basic, just simple text. I used this for both our Name and Name ID fields. In retrospect I could have simplified things by just using the Name ID and saving myself one field. The only difference between the two is the Name ID is what we use as input when entering data into Unity.
This is a neat tool that Airtable has over Google Sheets. You can make an attachment field and easily attach a file, like say an image or a pdf to each cell. For our purposes I used it to attach the icons we used for each event. This acts as both a way to visually identify the event and also as a sort of “to-do” list for me so I know which events I still have to make icons for.
This is one of the cooler fields in aritable, which allows you to link to another tab. For this table I decided that it would be easiest to organize by separating the options and outcomes text into separate tabs for better organization. I would then link the records in those tab to the main Events table for better viewing. You can do something similar in sheets, but the way airtable does this is so dead simple and intuitive (see image above).
Single And Multiple Select Field
This allows you to create categories and assign one or multiple categories to a row. This didn’t turn out particularly useful for the events, but it was very handy for the Achievements. In our Achievements system we had different categories and achievement levels. Grouping the layout of the table by category allowed us to see immediately how many achievements we had in bronze, silver, and gold, and make a decision on whether that needed some balancing.
This is also fairly simple, in that it allows you to add a check box. What makes it useful is that Airtable allows you to group the records by checkbox, so you can hide stuff that has been checked off and you can more intuitively see what has and has not been checked.
Grouping By Multiple Fields and Filters
For the most part all of the fields I listed above are replicable in something like google sheets. The magic of Airtable is how it lets group and filter using multiple fields. So for example I wanted to see how many event types there are and see that according to each event weight, I can very easily do that. I can also filter out records that have already been verified to know which events I still need to test out. I’m sure some formula wizard already knows how to do this on sheets, but for the average user the capacity to do this on the fly is a game changer.
I have just barely scratched the surface of what Airtable can be used for, and I’m sure that a lot of you out there will be able to expand on the use case that I have suggested here. If you want to take a look at our tables, here are read-only links to our events and achievements tables. If you find a cool use for it please do let me know!