Pronoun Choice in Interactive Fiction

Note: all markup in this post is based on using Twine Harlowe 3.1.0 Story Format. While I decided to make a prototype in Twine, my learnings from this could be adapted into any known or bespoke narrative tool, keeping in mind the syntax of the framework. My examples here are for illustrative purposes. 

While working on a personal project, I wanted to create a fairly streamlined system for writers of interactive fiction and game narrative (or even linear narrative) to allow players to choose their character, including gender and sexuality, without it disrupting the flow of writing too much. 

My test text would be a single passage, presented in third person, with no choices except to change character so that I could test it working on the fly.

To keep things clear and separate, I set up individual Twine Passages that contained details about each character, as well as a “template” for creating new characters. The main menu offers the reader the four characters, which then link to the Character passages. These Character passages “set” reusable variables within the text passage, and then reload the text passage. The variables I set in each Character passage included Name, Description, and pronouns. Because my test case assumed a romantic relationship, I also set the same for a love interest that would be designed specifically for each character.

Problems in Pronoun Paradise

As the characters I was playing with sit on the gender binary (and largely have heterosexual relationships), and the test passage originally featured a male main character and female love interest, I turned every pronoun into a variable, then opposite-gender mapped them accordingly:

$he to "she",
$him to "her",
$his to "hers",
$she to "he", 
$her to "him", 
$hers to "his",

Testing it with the masculine characters proved to be a success! Unfortunately, when I switched to the feminine archetypes, I was distracted by some “bugs”: I had used “hers” when I meant to use “her”! However, it read correctly when I switched back to the masculine versions.Now, my childhood education skipped grammar, so I’d never really noticed what was causing this, but ultimately it’s the problem with a sentence such as this:

It was his fault. It was him: the fault was all his.

Which I wrote in Twine syntax with the variables I’d set up as:

It was $his fault. It was $him: the fault was all $his.

The way it should have read when I changed characters is:

It was her fault. It was her: the fault was all hers.

Instead, it came out like:

It was hers fault. It was her: the fault was all hers.

What was going on?

Well, I’d recognised pronoun cases per gender (he/his/him, and she/her/hers) – when in reality there is a sneaky sub-case, and the words don’t even map nicely (his/her, his/her, him/her). 

Subjective: She/He
Possessive (as noun): Hers/His
Possessive (before noun): His/Her
Objective: Her/Him

Integrating these types of pronoun cases into the variable names was an option, but as I said, I hadn’t studied grammar at school and knew I was likely to forget all this. I looked up the background of “his” – and found that there was once a “hisis” proposed as an equivalent to “hers,” but it never stuck. So, I added that in for the main character.

But, for the love interest’s variables, I’d been using $her and $hers (again, for this story and the prototype – heterosexual relationships). Now I weirdly need a second version of “her” that will cover that “hisis” case – but instead I decided to simplify down to the cases I already had.

I already used the prefix $mc (main character) and $love (love interest – romance stories! ha) for names, so I decided to change everything to follow this naming convention.

Note: I am not a programmer, and I’m sure there are better structured ways of setting this up so that there aren’t millions of similar looking variables, and memory saving aspects that I don’t know about – Twine/Harlow 3.1.0’s Datamaps look like a possible option, using “$mc’s He” instead of “$mcHe”.

Then, it looked like this:

Male MC, Female Love Interest

$mcHe to "he",
$mcHim to "him",
$mcHis to "his",
$mcHisis to "his",
$loveHe to "she",
$loveHim to "her",
$loveHis to "her", 
$loveHisis to "hers",

Female MC, Male Love Interest

$mcHe to "she",
$mcHim to "her",
$mcHis to "her",
$mcHisis to "hers",
$loveHe to "he",
$loveHim to "him",
$loveHis to "his",
$loveHisis to "his",

This handles the cases I need for my gender-binary test text passage, and would handle both homosexual and heterosexual relationships.

Did I achieve what I set out to? Yes; except, it became limited to simply masculine and feminine characters (which worked for my gender-binary test characters) – but if I was manually setting these in the Character passages, couldn’t I allow the player to set whatever pronouns they wanted to be used, along the gender spectrum, and shift the definition of pronouns from author to player/co-author?

Improving Inclusivity in Interactive Fiction

Ironically, now that I have got to the end of my investigation with a strange collection of masculine pronounce variables, I realise that the singular they pronoun set perfectly allows all cases:


This way, a player could choose their preferred pronouns, and they could be stored using the singular they pronoun set. When setting it up, that’s easy and intuitive enough. 

But once the writer gets into the actual writing, they can easily slip into a grammatical singular/plural trap: while we understand the concept of the singular they/them as personal pronoun, the English language still defaults to linking them with plural verbs (he is/they are; she walks/they walk).

An imperfect solution to this would be to ask players to input pronouns to a sentence similar to my test “him/her, his/her, his/hers” sentence, with an additional affected verb as a dropdown allowing singular or plural. The pronouns get stored in these pronoun variables, with an additional variable bool – something like $mcPlural – that defines whether those verbs require pluralisation, and if so, sticks an “s” on the end. I call this imperfect, as not all verbs are pluralised simply by adding an “s” to the end!

Indexed Arrays

One way to handle the pluralisation of verbs associated with the singular they pronoun is to use an array which the author writes to contain options for masculine, feminine, and singular they.

This method has the player selecting a set of pronouns. This choice is saved as an int variable, which is then used to map onto what would be displayed in the text.  

Eg, in your starting passage, offer masculine, feminine, and singular they pronouns:

Are your preferred pronouns (link: "he/him")[(set: $mcGender to 1)(goto: "Page 1")], (link: "she/him")[(set: $mcGender to 2)(goto: "Page 1")], or (link: "they/them")[(set: $mcGender to 3)(goto: "Page 1")]?

Then, in the “Page 1” passage:

(print: $mcGender of (a: "He walks", "She walks", "They walk",)) down the road.

Note: for the first entry, Harlowe references the position (1), whereas Sugarcube references the index (0). If you’re not getting the value you expect, try setting one of the options to “0”, or use ($mcGender – 1)!

A similar system was created by Lexa Best Friend Forever, and its use described by Alex Woodward:

The dialogue looked like {Pronouns:They do|She does|He does}. So they was 1, she was 2, he was 3 and the code checked the variable and inserted the right phrase accordingly.

While adding in each option in the dialogue text isn’t as lean as just inserting a variable, it more adeptly handles each individual case and can be used for any unexpected gendered term throughout the text, including if the plural verbs are separated from the pronoun (if needed – eg, “he briskly walks”/”they briskly walk”). I consider this the strongest, the most flexible and on-the-fly option for most cases – unfortunately, the player is limited to the gender options which the author provides for them. This benefits the author, but not the player.

Variables AND Arrays!

A third approach – a combination of these two previous solutions – yields a solution that allows for the player’s choice/input of pronouns (solution 1), while handling each verb on a case by case basis (solution 2). 

Rather than using $mcPlural to append individual words, we can use the second approach for only those specific cases where pluralisation is needed.

To use our previous example:

(print: $mcGender of (a: "He walks", "She walks", "They walk",)) down the road.


(upperfirst: $mcThey) (print: $mcPlural of (a: “walk”, “walks”,)) down the road. 

Note that I’ve switched to $mcThey, while my original variable name is $mcHe; this is only because all cases are more recognisably handled, and as the singular they pronoun is the least ingrained to the average person, they’re (ha!) more likely to stumble a little over the pluralised verbs, and remember to handle the case.

This allows the player to input their preferred pronouns, as well as better handling the pluralised verbs.

Bonus: Casual Forms of Address

But what happens if the author wants to have a character who speaks to the player’s character with gendered diminutive terms or other forms of address, such as “son/girl,” or “dude/dudette”?

Neil Aldis, who is working on a project with this exact situation, offered this example line:

"Listen, lad, you've got one choice..."

The solution that his team uses involves a number of what are essentially variables that, similar to the Best Friend Forever system above, use a script that checks against the selected gender identity, and then chooses the right cell from a database spreadsheet and inserts the selected term into the text at runtime.

For this, if I was using a system where the player chooses one of my predefined pronoun sets, because I’m working in Twine and not using a database, I’d use the same (print: $mcGender of (a: “laddie”, “lassie”, “pal”,)) as earlier.

If I was working with my system allowing players to input their pronouns manually, rather than choosing from predefined choices, I’d perform a check whether the player had input he or she, and otherwise default to a third neutral option, using an if-else statement:

“Listen, (if: $mcThey is “he”)[lad](else-if: $mcThey is “she”)[lass](else)[pal], you've got one choice..."

This system of if-else statements seems to be quite a common solution, however when inserted multiple times into a document, it can become quite unwieldy to use. It can be hidden away in a widget/macro/script, such as the cond statement offered in Twine/Harlowe 3.1.0, which is leaner and preferable if your scripting language has an equivalent (or you can find a coder to create one for you):

“Listen, (cond: $mcThey is “she”, “lass”, $mcThey is “he”, “pal”), you’ve got one choice.”

While it doesn’t follow the same system exactly, if the writer really wants to use that for one of their characters, they can learn how to use an if-statement. If they’ve ever done interactive fiction using variables at a basic level, then they likely already know how to do it!

Remember, I’m using this to check against what the player has input – NOT typing out the limited, known options I gave the player! For that, again, using the index value of an array is cleaner.

Where to from here?

While I believe this third approach (storing preferred pronoun as well as pluralisation of vowels as variables) is the most flexible, and the best way that I can think of to handle the broadest range of personal pronouns and the grammatical peculiarities that come along with them, unfortunately, it’s all been considered within the confines of a script, which means its potentially very inappropriate for localisation purposes. However, I was working focusing on the English language, and other languages may need to find their own systems to build on top of this one – even having entire passages rewritten in a more gendered language, or handling other unique linguistic quirks related to handling of gender. 

Have you had experience handling personal pronouns in a game, VN, or IF piece that has been localised? I’d love to hear what systems were used, what worked and what didn’t. I’d also love to hear if you’ve worked with a system similar to what I’ve proposed – what pitfalls does it have that you discovered along the way?

Special thanks to all the game/IF writers I spoke to who offered their input and experiences in writing for three (or more!) sets of pronouns.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s