Runtime gender swapping

Posted: 06 Sep 2020 11:25
by ckastens

Would love to have a gendered term loader where the player can choose the form of address they would like to receive from game characters.
For example, a character in the game asks what form of address they prefer and the answer is converted into a global index value. In English, for example, options could be (but not limited to):
he/himself = 1
she/herself = 2
they/themself = 3
ze/hirself = 4

Whenever there is a gender-specific word, the author writes something in the script to identify it as such, using the first option on the list as the "generic" term. For example, the writer puts in { $en_himself } and the script inserts the correct address at runtime based on the player-selected global index: himself, herself, themself, zirself.

Users could expand the dictionary for other languages, adding in lists of terms for as many genders as they want and the index will always look at the first word on the list. For example, add in a line "pt: ele, ela, elu, ile" for Portuguese "he" and use { $pt_ele } in the text to automatically choose the correct term from the list. Capitalization could be specified by changing the variable name or some other method.

An even better option is to have the software automatically replace every exact match on the list without having to write the names as variables, but I´m not sure that works for all languages, so it might be best as a toggle.

Just throwing out some ideas.


Re: Runtime gender swapping

Posted: 06 Sep 2020 13:08
by Elringus

Thanks for the suggestion! This is something we will consider implementing given enough demand from other users. If anyone is interested and/or have examples of such systems implemented in other engines or games, please reply in this topic.


Re: Runtime gender swapping

Posted: 29 Sep 2020 17:19
by ckastens

In case it´s useful to anyone, I wrote up a relatively simple solution to this using Naninovel´s custom functions and custom variables.
I´ve zipped up the C# script and a Naninovel script to show how it works:
https://drive.google.com/file/d/1Vs1yjX ... sp=sharing

Notes:

  • Create a custom variable (string) called "choose_gender" in the project before running the test script.
  • The C# script contains an array with a small dictionary of English and Portuguese gendered terms. Adding more terms, changing the name of the terms or even adding another language should be pretty easy to get the hang of after seeing how they work in the test script.
  • If using more than one language, the gendered terms need to be localized manually during translation, just like any other text.
  • Use the Cap() function to capitalize, as shown in the example.
  • Be careful when writing for gender neutrality. Just to give one example, gender-neutral "they" takes on verbs in the plural, even when referring to a specific person. "He is a good person" / "She is a good person" / "They are a good person". Adding the appropriate verbs to the dictionary can help you get around this, but needs to be done on a case-by-base basis.

Re: Runtime gender swapping

Posted: 28 Oct 2020 16:53
by nio kasgami

I think this should be usefull Custom Generic function is something important. so I will vote yes for it

@elringus : think for those kind of stuff we could use Poll.


Re: Runtime gender swapping

Posted: 28 Oct 2020 18:58
by Elringus

Can't this be already implemented via expression functions? The post above shows an example.