Things I wish I'd known writing my first ChoiceScript game (+ add yours)

I’m not who you asked this question, but I feel like I can give a suitable answer. The third person possessive pronoun (his/her/their – as in “that is her book”) “her” and the third person personal pronoun “her” (him/her/them – as in “that book belongs to her”) can be the same.

EDIT: For anyone that might be reading this in the future and is curious about my personal system, this is how I do it.

How Mr. Specter Does Pronouns

I like this method both because it works for me and because it allows for the implementation of custom pronouns.

Let’s say you are making a character that uses feminine pronouns. I would *set things up like this:

*set mc_heshethey "she"
*set mc_hisherstheirs "hers"
*set mc_hishertheir "her"
*set mc_himherthem "her"
*set mc_pronounisorare "is"
*set mc_abbvpronounSorRE "s"

The set of *set for gender neutral pronouns would look like this:

*set mc_heshethey "they"
*set mc_hisherstheirs "theirs"
*set mc_hishertheir "their"
*set mc_himherthem "them"
*set mc_pronounisorare "are"
*set mc_abbvpronounSorRE "re"

That way if you want to have someone say something like, “MC is cool” or whatever you can just have the strings ${mc_heshethey} and ${mc_abbvpronounSorRE} separated by an apostrophe to make it “he’s/she’s cool” or “they’re cool” or “xey’re cool” or what have you. I find it makes for a greater variety of language if you’re not constantly using people’s name(s) or title(s) or calling them “that person” or whatever.

2 Likes

Oh yeah! Thanks so much!

Yeah, I think I do pretty much the same as you, but shorter variable names. I use the character initial, plus:

${e} - e/he/she/they

${er} - er/him/her/their

${ers} - ers/his/hers/theirs

${em} - em/him/her/them

@{sing} - (short for ‘singular’) and used for all plural variable verbs - is/are, wasn’t/weren’t etc. It also works for 's/'re if you leave out the space between it and the previous variable, like this: ${e}@{sing 's|'re}.

It makes it pretty simple to let a player set their own pronouns, but also involves as little typing as possible! Because almost all characters have variable pronouns, I am typing this stuff all the time, like often multiple times per sentence, so brevity is of the essence.

8 Likes

The amount of typing and/or cut-and-paste involved in a “heshethey” pronoun variable system would personally drive me insane. :slight_smile: I like the e/er system for its brevity above all. But the long variable names clearly work for a bunch of people, since I see them talked about with some frequency.

Again, more than fair. I’d just encourage anyone with this perspective to consider that a lot (arguably most) of our interactions hinge on social factors other than gender, so even a story that doesn’t gender-neutralize everything can vary a minority of lines/scenes to create a plausible sense of difference rather than genuinely coding 3+ different characters for each gender-variable RO.

8 Likes

I can completely understand this. Gender informs so much of all our social interactions. I think for me, the way the same interaction plays out if the genders are different, is a huge part of the appeal. It feels like a much more meaningful version of the way the same line of dialogue reads so differently when it is preceded by a different adjective. Here’s a really simple example of what I mean.

The admiral @{opinion_admiral laughs|looks at you coldly}. "I'll see what I can do," e says.

Tiny difference, totally different feeling.

With gender, of course, the differences feel bigger. I find out about all the gender preconceptions I am bringing to a story because I know it wasn’t in the text. It also, of course, helps me avoid gender stereotypes in my writing. I like it so much I’m using it not just for ROs, but for most of my main NPCs.

4 Likes

What I discovered recently is that I would use- what I would call- a binary system that switches the gender and pronouns of a character with the help of multireplace. Since multireplace always starts at the value 1, I would always declare that male = 1, female = 2, etc. And storing these strings as integers instead made it really easy to handle pronouns.

For example:

*create p_binary 3
*create subj "xe"
*create obj "xim"
*create poss "xis"
*create refl "ximself"

*label Gender

Subjective: @{p_binary he | she | they | ${subj}}
*line_break
Objective: @{p_binary him | her | them | ${obj}}
*line_break
Possessive: @{p_binary his | hers | theirs | ${pos}}
*line_break
Reflective: @{p_binary himself | herself | themselves | ${refl}}

An @{p_binary heir|heiress|heir|heir} of an old kingdom. Formally, @{p_binary he poses himself|she poses herself|they pose themselves|${subj} pose ${refl}} as a curt and unagreeable noble, as such, many would find conversing with @{p_binary him|her|them|${obj}} rather difficult; fellow nobles would say disdain are one of the opinions generally viewed towards @{p_binary him|her|them|${obj}}, no matter @{p_binary his|her|their|${pos}} standing, @{p_binary he doesn't|she doesn't|they don't|${subj} doesn't} care, anyways. Often @{p_binary does he challenges|does she challenges|do they challenge|does ${subj} challenges} orders from higherups, but in the end @{p_binary he does|she does|they do|${subj} does} typically follow them. Neither @{p_binary does he hestitates|does she hestitates|do they hestitate|does ${subj} hestitates} to form an opinion against others. Stern words, or cutting statements, nothing is spared if a bad opinion formed into @{p_binary his|her|their|${pos}} mind.

*choice
	*selectable_if (not(p_binary = 1)) #Set gender to male.
		*set p_binary 1

		Gender set to male.

		*goto Gender

	*selectable_if (not(p_binary = 2)) #Set gender to female.
		*set p_binary 2

		Gender set to female.

		*goto Gender

	*selectable_if (not(p_binary = 3)) #Actually, let them be non-binary.
		*set p_binary 3

		Very well.

		*goto Gender

	*selectable_if (p_binary <= 3) #Continue with custom pronouns.
		*set p_binary 4

		Very well.

		*goto Gender

*finish

What becomes apparent is that you will no longer need to create variables (unless it is a custom pronoun) for each and every pronoun you will use, and every single gender noun that you will need. No more ${gender}, but now replaced with @{p_binary male | female}. What’s even better is that it’s so flexible that you can add go beyond binary to ternary, or even quaternary to include not just non-binary, but also custom genders/pronouns. Though, I think custom pronouns can be limited whether they are plural or singular.

Actually nvm. I figured you could probably just add another digit. Say 4 for singular, and 5 for plural. It’s crude but can’t think of anything else other than condition statements.

Sure, it adds more to writing stuff (and quite possibly makes things somewhat unreadable), but considering I value efficiency? Yeah. I think I will prefer this over ${gender} now.

5 Likes

For me, I use ${ros_they} ${ros_theyre} and so on. I used to use multireplace for verb agreement ala ${max_he} ${max_singular says|say}, but using a variable makes the errors way less common. Similarly using they makes it easier to spot verb agreement errors. Players usually pick he or she, and RandomTest has a higher chance of it, so if I accidentally write ${ros_they} say it’s more likely to be noticed than ${ros_he} says is.

I used ${pHe} and ${dHe} for Noblesse Oblige, but for some reason my brain prefers using the underscore and a three-letter prefix.

@ShadowIsOofed I like the ease of being able to change things, but I would be cautious about relying on multireplace for words being used all the time such as pronouns - partly because writing out him|her|them each time could be laborious, but also can lead to typos or other errors.

It’s all much of a muchness though - whatever works for the writer in question. I wish VS Code used macros, but I don’t think it does and I’ve never quite managed to get snippets working with it.

I find this a lot :smiling_face_with_tear: Dealing with whether someone’s wearing trousers or a skirt/dress is such a whole thing. I try to write around it, but that doesn’t always work out.

Over the years I’ve ended up with a pretty consistent testing and stat balancing method - I’ve summarised it here. I’d have loved to have known that when I was making my first game - at beta testing I had large swathes that were literally impossible and I had to spend a lot of time correcting that!

12 Likes

In my opinion, avoiding gender stereotypes isn’t always a bad thing. When done well as a part of a character’s development, it’s wonderful. Such as Sokka’s misogyny from Avatar: The Last Airbender cartoon series or Eddard “Ned” Stark from Game of Thrones, whose role as a noble, typical fantasy man is to his detriment. Both take gender stereotypes and evolve past them.

I have also read that some readers feel the complete lack of gender expectations create a “nebulous” or void-like experience.

Keep track of MC being nb, trans, or cis and then interacting with multiple ROs that can all be either nb/cis/trans in a given scene is not a skill I’ve quite mastered yet. I don’t want to resort to non-meaningful gender stereotypes. And I don’t want players to feel a complete lack of gender and social interactions either. I don’t want players to feel ROs are interchangeable. So I prefer to generate my own norms, and find it easiest to track MC’s gender variations on gender-stagnant characters.

This is all my opinion, of course. Please let me know if my words are offensive. I’ll have to keep practicing in the meantime.

8 Likes

Personally, I like that we have a broad tent of ways and approaches when it comes to how we handle RO / MC gender presentation - I think it feels right for the subject matter at hand, and how differently we all approach worldbuilding.

I think it’s super cool how some stories in the COG stable (like the CDLC universe) sort of strip out a lot of that stuff and thus are able to reframe / recontextualize other conflict / crisis points; e.g. I imagine a CDLC-equivalent story set in the real world would, if set in a rare co-ed boarding school, end up presenting male, female and NB students with very different sets of social challenges - you could get lost in the differences between being a privileged dude versus a privileged girl vs a privileged non-binary person, versus keeping that tighter focus on class disparity and social mobility.

Conversely, I legitimately do believe that the Infinity Saga would have been unwritable with a gender-selectable protagonist. Like, I think it could be done, but it feels like it would have almost required Cataphrak to write 1.5x as much per book (probably more than that, in Lords…) to work around it within the confines of his world without cutting across or diluting the stories of some of the ladies in his world.

I think the only ‘wrong’ way to do this stuff is to assume that our way, whatever it is, is the only right one! (Assuming good faith effort from all parties, of course)

Edit: Also, to go back on topic (oops):

  • When outlining, assume you’re going to go over your initial estimated wordcount (and revise your expected completion time accordingly). Especially if you’re used to outlining linear prose fiction. I expected Pactbinder to end up around 500k to 600k words, which I felt was very reasonable (180k to 250k words is pretty normal for a big campus novel like Secret History, Babel, or a latter-stage HP book, and code + branching increasing length by 2.5x to 3x felt right). I’m approaching the end of act 1 (of 3) already at 350k words…
14 Likes

Oh, I completely agree that gender stereotypes are not always a bad thing! I love Avatar, and watching Sokka move from unthinking misogyny to totally moving past that way of thinking is awesome. I love that it is completely understated. No big moment of revelation (unless you count meeting the Kyoshi warriors), just a steady, unforced change of underlying beliefs.

Yeah, this has been worrying me about my own project, actually. As I said elsewhere in the thread, I wonder if it is possible to meaningfully inhabit your gender in a world where gender is basically confined to pronouns. What I want is to create a really fun playground where expectations can be seen in a new light, but there is also a possibility that I will end up with a world that feels like it has no steady place on which to stand and consider these things. And I don’t think it’s something I will be able to reach a conclusion on for myself. I think I will just have to be patient and wait for people to tell me if it works, or feels flat.

I think one of the lovely things about the medium is that there are plenty of people taking all these different approaches. I have played and loved many games that use the approach you describe - to have variable PC but stable ROs. It seems to be the most usual approach, I think? I am talking about a way of exploring these things that I am currently enjoying, rather than attempting to prescribe something for anyone else.

I love the idea of generating your own gender norms for your story! That seems like a really fun idea. I’d really like to hear more about that.

6 Likes

Am I understanding correctly that the stat balancing method you reference here replaces the idea of an external XLS to track stat movement and you’re tracking it with code variables instead? This is appealing to me because I don’t know that I have the consistency to maintain and utilize it well as an external doc.

Yes, I aim to use it after finishing each chapter. I often lose steam checking once I’m getting towards the end, and end up doing a big balance pass once I’ve finished drafting! But I find it easier to keep track of than tracking in multiple places.

5 Likes

My pronoun variables:

*create gender 1

Yeah that’s it.

In practice:

@{gender He wrings his|She wrings her|They wring their} hands.
5 Likes

I started my first game writing one and have grown so used to it I will probably have one gender selectable RO in every game I write now. I dout I would want a whole cast as gender selectable but in fairness gender does play into the characters I write somewhat. I like male/female friendship without any romance between them.

I used lovehe, lovehim, lovehis, and that was my biggest mistake. But I got so far that I just could not be arsed to change it.

2 Likes

Leave it to the person who made the game that makes me cry at night to drop a skill issue in the big '26.

2 Likes

I’ll never understand this argument when the fix in question involves just placing couple words into search&replace field of the text editor and hitting “replace all” a few times (any decent editor will also do it across multiple files) I mean, you’d get the return of that “effort” investment in just few instances of writing the original names.

Mostly because it’s saved in my head one way and I think getting myself to change it would mean mentally having to correct every time.

Also I’m lazy.

2 Likes

Oooh, I’ve thought of a new tip! If you decide to change a variable name for whatever reason, do not do a find and replace until you have thought really carefully about all the places those words/letters might appear.

I try to make my variable names as short as possible, and I once tried to change a two letter variable to something else. I didn’t put spaces around the “find” term of course, because I wanted to find it in all code settings. So it replaced the letters “ag” every single time they appeared in the entire document! I didn’t notice until it was too late to control-Z my way out of it! Outcome: I now know exactly how many times I use the word “agree” in the text of my game!

PS: @asimon Sorry for accidentally co-opting this thread for a really long discussion of how to code gender yesterday!

5 Likes

Late to the party because I was AFK yesterday, but I like “they” as the base gender variable name because I can do it on autopilot. But I’ve been thinking about using arrays instead.

3 Likes

In VS Code, you can right click a variable in any place of the code and select “Find all references” from the context menu. It’ll show you you every place in the code where you use that variable. You can also select it and pull the command pallet and search for “rename symbol” and VS Code will rename every instance of that variable for you.

3 Likes

I wrote up a pretty long list of things I learned over the course of writing my first games (which I posted on tumblr and patreon last year) but it fits this topic so well that I present it here as well. It is weirdly indented because it was pasted from lists that originally had numbers and bullet points, but we’re all fine with that.

  • Summary
    • Writing a thousand words a day is fine. It’s good, and it’s achievable. But if your goal is to write crazy-long interactive fiction (as seems to be the fashion) be aware of what that means: a thousand words a day, will get you to a million words in somewhere around three years. Million word IF is getting more common and expectations are rising. If you want to write two million words at that pace, now we’re talking six years. You either need to write faster or you have to have realistic expectations for when this thing is going to be done.

    • I have to reiterate point 1. Writing long interactive fiction takes forever. You have to be prepare to pour your life force into it. I was sitting writing Chapter Six and I suddenly thought about a scene from Chapter Two and I said, aloud, “is that from the same game?” It seemed impossible, because I had written it so long before. If you aren’t ready to spend years and years on this, this might not be your genre. I am lucky that I happen to write (and type) super fast, but even so, years and years.

    • Because long interactive fiction takes so long to write, if you don’t have a character bible, you are going to have a really rough time of it when you have to describe some minor character’s facial hair about whom you last thought of sixteen months ago. At the same time, every second you spend writing a character bible is a second you aren’t writing the thing itself.

    • That leads me to this point: when you write like this, you give up a lot too. Time to play computer games, to go to a fall festival, to just sit with friends on the sofa and talk. You are just there, writing, alone. And thoughts about cost-benefit start drifting into your mind. “If I want to start learning to read Ancient Greek, think how many hours that would take away from writing!” So you have to be very very careful that it doesn’t invade everything, including your thoughts when you are doing other stuff. You need the other stuff. Without the other stuff you get boring and you lose the fertile ground for words to grow in. But my point is that when you see a great piece of writing, there were a lot of choices made, things that were given up, and time that was carved out for it, and it can be painful. You have to go into this open-eyed.

    • The back and neck are the weak points. They give out way before the hands, on me, anyhow. After a day of writing, I feel like my spine has fused. Combine writing days with exercise days. Especially as you age, which you will if you choose to write long interactive fiction.

    Summary
    • I email myself my current draft every time I finish writing. Have some way of preserving every single version. I can’t tell you how many times I have to go back and refer to an earlier version when I realize I liked it better the way I did it last week. There’s assuredly a higher-tech way to do this, but this works for me.

    • If you are bored when you are writing, the writing will be boring. Enjoy your own writing. Laugh at your jokes. Feel bad for your characters when they are sad. If you’re feeling, that’s a good sign.

    • If you go to a café and bring a notebook and a sharp pencil, you can enjoy a nice writing session and be in the world for a while. Writing you do with a pencil in a notebook will be different in quality and texture from writing at the computer, and I can’t explain why. Mix it in.

    • Carry a little notebook with you that fits in your pocket. The ideas will pop up randomly throughout the day. This is how you snag them. Write a hundred down and maybe two will be good. I have done this on carousels and in faculty meetings.

    • This last one I particularly want to address to my younger self who was trying to write novels and stories in middle school and high school, as well as to everyone else working on early stuff. I used to be very annoyed at the process of writing because (and I remember saying this to myself) I didn’t understand the point of writing when nobody was going to read it, or maybe one or two friends but probably not. Writing felt like a thing I did that I spent hard work on for a long time, and then I put it in a drawer.

Summary

What I wish I had known regarding the above was that this is the equivalent of training in some mountaintop retreat, honing my craft, doing the million pushups, becoming a writing ninja. I wish someone had told me that it didn’t matter if anyone read it. That wasn’t the point. I was figuring stuff out. It takes a really long time to create your own writing style. This is how it happens. Just do it, and do it, and do it. The practice is its own reward, not publication, which I incorrectly thought was my goal at the time when I was learning how to write.

Two traits are great for minor characters. This guy has an uneven mustache and a tendency to mix up left and right. That lady wears only purple and holds a steak knife as if she were daring you to take it from her. That person smells like lemons and keeps asking you if you want to take a tour of the wax museum, please, or else they shall lose their job. Two traits are plenty for a minor role, and often, they will suggest other things to you. Why does that person smell like lemons? Honestly just writing that up I want to write a story about those three people.

For more important characters, start with three traits–not just little gimmicks like above, but bigger stuff. How does this person act and move when happy? How when they are in repose? How do they react in anger or when acting out? Those three pillars have been the foundation of many, many of my characters who developed into very fleshed-out people. You only have to start with three broad strokes, and then the subtle shading will follow.

When you write a narrative with tons of characters, people will forget who is who. *You* know because it’s your world, but they will have a really hard time remembering one hundred characters! But you can cheat like this. Write characters like Aunt Primrose, Inspector Ambrose, Col. Firesnuff, Deputy Hardcastle, Uncle Chum, String-bean Sally, President Ernie, Dr. X, the Reverend Theobald… Yes. Giving the reader the information right in the name makes it easy for everyone. Sprinkle those in. I like to also just call a character by first and last name, too, like Johnny Buttons, or have a name that just *fits* the character like Mopsie. These are all mnemonic aids, and the reader will have much more fun.

Summary

Talk when you write dialogue; say it out loud and see how it feels in your mouth, where you stress words, and how your body and face want to move when you say it. Do gestures, big ones, when you read your work aloud. This will make the dialogue feel more natural, more spoken.

Have reference art right in front of you when you write. Find a picture that reminds you of a character or a place and stick it to your wall or put it on your computer desktop.

Some parts of your work that you labor over will never, and I mean ever, noticed by anyone, like the trial scenes in Chapter Eight of Tally Ho; some parts that you think will just be little nothings that nobody notices turn into huge deals like suddenly people are interested in your former servant and wouldn’t it be cool if Starling were a love interest. There is no way to predict this.

Read everything, everything, everything. Read all interactive fiction you can get your hands on. Read all sorts of prose styles. Read poetry. Read history. Read weird genres you don’t think you’ll like. Scavenge words, images, plots and keep them in a little notebook to mellow for later use.Throw no piece of writing out. Even if it is bad. Put them in a drawer. Put old bits of plots, old lines you write, character sketches, dumb ideas, short stories without ends, just throw them in there. They will slowly age into something, and they will end up becoming something. You don’t know when that will be, or what it will be. But I have dipped into my old story drawer more times than I can tell you.

Let tomorrow-you solve problems. Write the problems into your narrative without knowing how your characters will respond or how your plot will resolve or how the mystery goes. You don’t have to know. Just set up some interesting problems. The resolution is for tomorrow you to deal with, too bad for them. Today-you gets to write cool story.

Outline thoroughly and then ignore it as much as you want. The outline is to keep you honest. Ignoring it and going off on your own is fun. Say yes to the scope creep. Let your work get long and baggy and weird if you want. It’s fine.

Find your writing location and environment. I drink coffee and listen to music on headphones while I write early in the morning. I don’t write after lunch because the product is worse. I learned this by trial and error.

If your work is long, you will age and change with your work. This is interesting and can make your work nicely complex. Lean into that. This isn’t so much a piece of advice as something I’ve noticed.

Finally, be gentle with yourself. Don’t be your harshest critic. There’s a whole internet for that. If you write something and there it is before you, you have done something most people cannot do. If the you in five years, five months, five days looks at what you wrote and hates it, that’s a sign of your growing expertise and aesthetic sense. But even so, be gentle with your own writing.

32 Likes