BagelTech


During 2020 and 2021, Laura and I made some games together, including:

Here’s Laura’s thoughts on it, and here I’ll be writing about the tech behind our Tall Bagel games.


Engine

We jokingly referred to our tech as BagelTech, but we ended up saying the the term BagelTech so often that it became the de facto name.

BagelTech is primarily powered by two libraries/frameworks:


FNA

FNA is a framework that handles graphics, input, audio, and more. For those familiar with XNA, FNA is a modern implementation of XNA.

I’ve been using XNA/FNA since over 10+ years ago (including my first commercial game Flotilla!) and I highly enjoy working with it. It’s free, lightweight, open-source, cross-platform, and flexible.

BagelTech is built on an accumulation of code I started way back in Flotilla. Here’s what it mostly looks like now:

If you’re ever interested in checking out FNA, I made an open-source FNA Starter Kit to help get you going. It includes most of what I describe above.


YarnSpinner

Laura did all of Tall Bagel’s writing and scripting. We wanted find a way to allow her to rapidly implement and test her work. I think you can create an amazing amount of momentum when working with a good pipeline, and we wanted that kind of environment here.

We had a series of goals. We wanted to be able to:

YarnSpinner ended up being fantastic for this. YarnSpinner is a tool for game dialogue and game scripting. It’s lightweight, straight-forward, and is as extensible or minimal as you like.

Here’s a sample from Tall Bagel:

[time 3]Kim: I'm saving my dessert budget for egg nog.
[time 2]Jacob: But this is egg nog.
<<lookpitch kim 10>>
<<jostle kim 2.5>>
[time 3]Kim: No, it's egg nog ice cream!

The scripts live in a text file, and control what the characters say and do.

If you’d like to see all of the various scripting commands we added to the game, we listed them all here.

Note: our Tall Bagel games (1, 2) are designed to be moddable. If you want to make a dinner party mod, please do!


Rapid Iteration

We wanted to be able to easily test things, to be able to fast-forward or skip to specific parts of the game. We added debug tools to facilitate this.

Here’s how our debug view looks like in-game:

For any future Tall Bagels, I’d love to re-visit how we handle how we test – perhaps something more intuitive and GUI-driven that uses less cryptic keystrokes.


Thanks

Working on these games was a joy. It’s wonderful to work with Laura, it was wonderful to see these characters come to life, and it was wonderful to create tech built around our specific workflow and processes.

A big special thanks to Choroplethora for making fantastic music for our games, and to Ethan Lee for helping us make our games work on Mac/Linux (and for making FNA!).