What Masks Playbook Are You? — A Personality Quiz

What Masks Playbook Are You?

A personality quiz to determine which character archetype suits you in the table-top role-playing game Masks: a New Generation by Brendan Conway, published by Magpie Games.

Background

What do all of those words in the sub-title mean?

What is a Table-Top Role-Playing Game?

A table-top role-playing game is a collaborative story-telling game in which a group of players work together to tell a story, with a framework of rules that govern how players share narrative control and resolve uncertain outcomes.

The most famous TRPG is Dungeons & Dragons, currently published by Wizards of the Coast. For decades, it has defined what this hobby has been perceived as becuase it is the most widely-played TRPG in the world and, as a consequence, is also most frequently referenced in pop culture. There are many other games out there — with different rulesets, settings, artwork, feel, and narrative purpose — coverying myriad genres of storytelling like fantasy, action, adventure, horror, sci-fi, cyberpunk, et cetera. Each of these games is referred to in the community as a game system.

Masks is another such role-playing game. Its specific hook is that it is about teenage superheroes who are juggling the emotional pressures of being a teenager with their awesome adventures of fighting villains. You can read more about Masks particularly in the relevant section.

The way these games work is players usually play characters through which they interact with the fictional world. These characters usually fall into a number of different archetypes depending on the system. The most common archetypes, or 'character classes', are from fantasy games like D&D, like the Fighter, Wizard, Rogue, or Cleric. These classes in D&D are determined by the various roles in a fantasy adventuring party that the characters play (with some loose narrative flavour around how their class is their calling in life). These archetypes also have some flavour text around common personality traits or tropes about them.

In Masks, the archetypes, referred to as 'playbooks', are all about being teenagers and getting up to teenage shenanigans. The archetypes are all determined by the personalities that the characters have. There are about 20 different archetypes to choose from, so naturally it can be really difficult to choose the one most suitable. So, I designed a personality quiz to help choose the best character archetype!

Why the Personality Quiz?

The short answer: I was teaching myself how to code and I needed a fun, silly project.

Besides, this is all part of the fun of table-top role-playing: knowing which character one would play, how they'd compare to their friends, and joking about common tropes in the fiction. There are several personality quizzes out there for D&D, and this one my Easydamus in particular was my inspiration. I thought it would be fun to make something similar for Masks as it is my favourite TRPG (more on that in the appropriate section).

Finally, fan content like this is part of the fun of this hobby: people drawing artwork for their characters, coming up with elaborate back stories, or making various materials or tools to help with the games.

About Masks: a New Generation

A table-top role-playing game about teenage superheroes.

Masks is a game by Brendan Conway using the Powered by the Apocalypse engine. For those unfamiliar with the term, Powered by the Apocalypse is a category of game systems that are based on the overall structure of the Apocalypse World system by Vincent and Meguey Baker. The core concept behind this system is to encourage collaborate and improvisational story-telling by streamlining the mechanics. This is in sharp contrast to traditional TRPGs that have very granular rules and hierarchical authority between a Game Master and the players.

If you imagine all table-top role-playing games to exist on a spectrum between chess and improv theatre with D&D fifth edition right in the middle, PbtA games are much closes to the improv theatre side of the axis, whereas traditional games, while fourth edition D&D would be closer to chess because of its wargame heritage.

Masks is without a doubt my favourite role-playing game system, and I would strongly recommend trying it to anyone who hasn't played TRPGs before, or hasn't played Masks before. What I like most about Masks is its concept of playing teenage superheroes, and all the emotional drama and angst that that entails. For me, it has been so much fun to revisit a difficult age but from a perspective of greater maturity and in a setting where the very differences that I had been victimised for are framed not as liabilities but as superpowers: things that made characters special. This was an age when I really loved reading comic books, and that is why revisiting it with this zany aesthetic is such a delight.

Note on Content

The names of the playbooks, as well as their associated flavour text, are by Brendan Conway, taken from the player sheets that are part of the game documents made freely-available on-line.

Special thanks to the members of the Masks Discord for their advice, feedback, and patience with the original quirks of the web hosting.

Take the Quiz

Development

How I went about (re)making this.

Working on this version of the quiz was much more straightforward in some respects, but also that much more convoluted as someone who Dunning-Krugered himself into a sense of security. I had a better sense of how coding generally worked and I knew how to apply the various commands and elements I learnt to get what I wanted, although getting more out of this would require learning even more JavaScript.

There were a number of times when my understanding of the language changed so dramatically when I was part of the way through that I had to choose between changing certain aspects of my code entirely or carrying on as before. Like when I stopped storing all the information in multi-dimensional arrays and instead used JavaScript object literals. The difference between them is that objects can be indexed by a text key, whereas arrays are only indexed by number. I had to re-write all of my arrays, and all functions that made reference to arrays, as objects instead.

The pain was worth it, though: in the old method, the code left itself open to a huge bug that I anticipated. Because of the way I implemented the filters for sources, adding or removing playbooks may have mixed up the order of the indexes in some arrays. This would mean all the scores would be mismatched. Likewise, when inputting the data, a single misplaced element would cascade down onto everything. With this new method of using objects, I can name all values with string keys, so they are identified by a fixed name rather than just a mutable position in an array.

The drawback, of course, is that objects are not inherently iterable in JavaScript. Running loops on them is a pain. I had to use rather tedious work-arounds. I also had to re-learn the object notation to use a syntax that was more unambiguous, as I made the regrettable error early on of using the same string to name variabls as I did the keys for individual values, meaning when I wrote in the standard dot notation for objects the Interpreter could not parse whether I was referring to a variable or to a property of the object. I also had to re-learn some aspects of the language and syntax, but I have a better grasp of how what object-oriented programming means than I did two weeks ago.

Of course, the biggest thing I was not able to do was find a way to download data from the server. I was hoping to be able to store the data as a file on a server and download it upon calculating scores, rather than have everything loaded in JavaScript to the memory of the browser running this. It turns out this was a limitation of the language, as JavaScript. So now I would have to learn a different language for some of the things I wanted to do. So far, the quiz has been executed entirely from the browser window, with no results being saved anywhere. Obviously this means resuls are lost instantly on navigating out of the page, and that people can cheat by reading some of the code to get the answer key. If I were to change this, I'd have to learn to programme on the server side, and with a different language.

But above all, what I like the most about this version, even more than the added features like the filters and label estimator, is that it is very easily expandable. The text of the quiz is procedurally generated from the inputted data. I can add new custom labels for each playbook, new playbooks, new questions, and new sources should more things be published. Although if there are playbooks like The Joined that have complex mechanical details about character creation that mess up the algorithm, then it would be a real pain to programme that into the quiz. Also, the new data format means that the input process is much easier, as all the data is readable rather than needing to be transcoded into index keys or reference values. The readable code is easier to write.

But there were some things that I found really surprising, like how easy it is to evaluate the answers, but how difficult it is to have consistent filters that can allow you to select what sources and playbooks you want available. I was surprised I could make the results generator in just a single attempt, when it involved writing a layer of .html for the JavaScript to output, but the navigation menu took so much fine tuning to make sure the navigation did not refresh the browser and clear all data.

The most interesting aspect of this, however, was having to come up with detailed algorithms to do what otherwise appears to me as an intuitive task: pick the Playbook with the highest score, for example, which seems like an easy task, involves the following steps: come up with a list of all playbooks; find the points scored by each of them; calculate which one is the highest; calculate how many playbooks got the highest value in case of ties; then look up what index number this had on the list of playbooks you started out with so you can work backwards and find the matching playbook for the highest score. Add that playbook to the list of the highest-scores that you can then spit out with the results. Naturally, many of the algorithms I used are really clunky, like running through loops just to find one relevant property of an object, or comparing values to every single playbook. There no doubt are more elegant and efficient ways of doing a lot of what I have done. But I have gotten as far as my current knowledge of the language will take me, and I have enjoyed myself.

If I carry on working on this in the future, I might teach myself some server-side languages and try working from there. And I might tinker with the questions or some elements of this from time to time. So far, though, I got what I wanted from a quiz like this.

Version History

A summary of this quiz's development.

Current Version:

Version 2.0.0.

2 May 2020.

Changelog

  • Changed the colour scheme for better contrast.
  • Added functionality to determine character labels, as well as algorithms to simulate the changing labels in the game mechanics.
  • Changed the layout for better clarity and easier navigation.
  • Re-wrote most of the questions.
  • Added more flavour text to the playbooks by referencing their 'Moment of Truth'.
  • Changed the underlying architecture of the quiz, with the question text as well as the results being rendered by the JavaScript code, rather than being stored in the .html document.
  • Changed the data structure through which the questions and answers for the quiz are stored and referenced.
  • Changed the way in which the matches for each answer are evaluated, and the points that are awarded.
  • Modified the algorithm to evaluate the questions and answers with references to the new data structure and answer values.
  • Added functionality to filter results based on sources.
  • Substantially overhauled the code to make the quiz fully expandable, allowing the addition of new questions, custom playbooks, additional source books, as well as custom, play-book specific labels.
  • Added a glossary at the bottom of the results page, explaining what each of the labels mean.

Past Versions:

Browser Compatibility

I would really much rather you used Chrome.

So it turns out .html as a programming language is incredibly complicated because there is no guarantee that different browsers would interpret the same code the same way. I have checked the browser compatibility for most of the code elements I have used, and they should in theory work with Chrome, Firefox, Opera, and Safari. All reference documents on JavaScript, .html, and CSS on w3Schools show that the elements that I have used should work with these browsers, with only one small exception of something that might be exclusive to Chrome's user agent CSS.

If you notice any incompatibilities or strange browser behaviour, please let me know and I'll try and see how I can fix it.

Web Hosting

Another issue that some people brought to my attention was the odd behaviour of the web site on which I hosted the quiz. Different people landed up on different web sites with the same URLs, and after fully reinstalling my web server from scratch, I isolated the problem as being because of URL collissions between my URL shortener and the URL on which I hosted the site, as well as errors with the web server processing some subdomains. I have rectified these issues. But should people notice strange behaviour with the web sit and the pages they see, please let me know and I'll try and fix that. Hopefully, this has also fixed the accompanying error with the SSL Certificates.