Clock Tower Agent Test
My friend Elli asked if I could help them with a character quiz for their custom Dungeons and Dragons class they had created, the Clock Tower Agent. This class is predominantly featured in a campaign she runs as GM on the curiously eclectic D&D podcast, Clock Tower.
My friend Elli asked if I could help them with a character quiz for their custom Dungeons and Dragons class they had created, the Clock Tower Agent. This class is predominantly featured in a campaign she runs as GM on the curiously eclectic D&D podcast, Clock Tower. Now in its second season, the drama features a collection of Clock Tower agents who do the work of a magical tower that tosses them into strange and frightful worlds.
The Mysterious Masked Dungeon Master
First, let me tell you how I met Elli. They had shown up before a friend's campsite at the Wasteland Weekend festival I often attend. They had made a fake oversized backpack to appear much heavier than it was and were peddling masks they had made for the event. The whole time they wore a mask and not once took it off in complete disregard to the scorching Mojave sun.
It has been years now, and I can count the number of times I've seen them not wearing a mask on one hand. I've gone out to have a slice of pizza with them, and they will be wearing the same mask at the pizza parlor. One thing I admire about her is their commitment to the bit! More about that desert experience can be digested in this wonderful documentary by People Make Games.
The "Gardening" Method of Building an App
Typically, as I am twenty-plus years down the road of writing web code, I have become the seasoned code samurai--never to unsheath my blade of programming skills unless I have a finished design, API schematics, and an epic of to-do tasks. When I sit down to code, there is a roadmap to find myself to the finish line in the two-week "sprint" of work.
Elli approached me with a document that was a multiple-choice quiz that she administered to new players who wanted a new Clock Tower Agent character. The goal was the automate the process and place it on the podcast's website.
A multiple-choice quiz seemed easy, especially since there was no writing to a server. Hypothetically, this could be a single file that my friend could host on their site. With no design, a vague idea of how to set up a schema for a quiz from a lifetime of code challenges and tutorials, and a mental list of steps in my head, I thought to myself, "Let's just take a whack at this like I didn't know better and see what grows out of it!"
The basic quiz came together rather quickly, with some caveats. If you notice in the screenshot, you can select two answers at once. Secondly, each question added scores to multiple values (one answer could buff your strength score and also your subclass selection sorting tally). Oops. Normally, I'd ask a bunch of leading questions and avoid missing these bits of logic but it was fun to discover and refactor on the fly.
So each question can have multiple answers that modify multiple scores. The code is still pretty clean at this point. However, there was an interesting challenge that this organic approach didn't account for. Once the quiz of done, Elli would take the values and build out a description of the character as well. So not only did the quiz need to modify values, but it also needed to select certain character appearance attributes!
A part of the process is that the player can alter one of the assigned attributes. So I guess I'm making Mad Libs now too.
Do you know TDD? Test-driven development? This became DDD, dopamine-driven development. I allowed myself to make something silly and novel which was driving the process forward. By this point, the code was getting a bit unruly since I attempted to keep it a single file.
Ok, so once you're good with the Mad Libs, you get dumped onto a page where I got to play with my CSS skills and make a stylesheet for printers like the old days. As an aside, I once was asked to make a website that was mostly black on the screen, but mostly white when you printed it since the client imagined that was the most environmentally friendly solution.
So after showing my progress to Elli, somehow I had decided that I was now making it print out to a PDF character sheet! I forgot why if it was either the dopamine rush of playing with another tech library or if I didn't want to ruin the nifty half-sheet design I had come up with.
When the PDF writing feature was introduced, I ended up adding an extra library and a background image and my single file vision came to an end. Oh well.
But this was where my garden ended, and I reached the end of the Shire. It became apparent that the image I was using for the tables of the PDF wasn't consistently spaced and I had to find the X and Y positions for every field on the page. This killed my dopamine and I dropped the project at 99% of the way there. This was very un-code shinobi of me.
Fortunately for me, Elli has an artist's mind too, and we both forgot about the project. Now it is December. Time to put on my big boy pants and shovel that snowfall of X's and Y's to get this quiz out the driveway and on its way.
Thirty Second Retro
It was fun to allow myself to discover new aspects of the project along the way and let myself be curious about them. This was a nice change of pace of being in the primadonna headspace of needing a solid plan to follow to keep the course.
Would I follow this process again? Sure. Would I follow it on something that I would need collaborators on? Heck no. No one should need to weed my messy organic garden.
If you're curious about how messy the code got, you can find it on Git Hub here.