Skip to content

DEV: Dialogue writing guide

Blizzardsev edited this page May 15, 2023 · 9 revisions

Writing dialogue

Writing dialogue for Natsuki may seem intimidating, but it all comes down to a few things:

  • Understanding Ren'Py's handling of character dialogue, and dialogue flow
  • Having an understanding of Natsuki as a character, and her quirks, habits and thinking patterns - her "voice"
  • Mastery of sprite codes and the expression previewer tool
  • And finally, a healthy imagination!

Ren'Py and dialogue

Tools of the trade

Before you begin working on dialogue, you should have the following at the ready:

  • A professional text editor, such as Atom, Vim or Notepad++. We strongly recommend VSC (Visual Studio Code) with the Ren'Py extension! This will be for viewing and modifying scripts.
  • GitHub Desktop, for managing your forked/cloned repository

The expression previewer

The expression previewer is an extremely useful tool the team uses to construct images for any dialogue we write, as well as to examine sprite codes already in the game code to make sure they fit their context without having to run the game.

You can find the expression previewer here!

The basics

In almost all cases, any dialogue written will be under some kind of label: a label is simply a point in Ren'Py code to which we can move to in execution through the call or jump statements.

Within a label, we can tell Ren'Py to display a line of dialogue for Natsuki with the following statement:

n [spritecode] "This is exactly what I was talking about!"

n identifies the character we want Ren'Py to display dialogue for - as you may have guessed, n stands for Natsuki! [spritecode] is a code that the sprite system we have uses to determine what expression to show on Natsuki!

The expression previewer should always be used when generating sprite codes, as this prevents errors resulting from trying to guess codes manually - it also makes development far quicker!

The quotation marks are what Natsuki will actually say!

An example of a complete line of dialogue therefore would be:

n 2uchgnledz "This is exactly what I was talking about!"

Dialogue flow and pacing using extend and tags

Of course, part of what makes dialogue interesting to read is an understanding of dialogue flow and emphasis on what we want the reader to pay attention to: although we can have a lot of dialogue on a single line, writing like this can make reading what Natsuki has to say feel like a chore.

This is where tags and the extend statement come in!

The extend statement

The extend statements works much like the n prefix: however, extend tells Ren'Py specifically to continue the previous line of dialogue. The advantage is that we can combine this with a new spritecode to make Natsuki change expressions mid-sentence!

An example of using the extend statement would be:

n 2uchgnledz "This is exactly what I was talking about!"
extend 4fcsbgl " Now, follow me!"

It's important to note that when we use the extend statement, Ren'Py takes it very literally and will concatenate (join) the extended line to the first: it won't automatically add a space! So to avoid sentences being merged, we must always remember to add a space on the extended line before our dialogue, as seen above.

The wait tag

Apart from the extend statement, the other tool we have for managing the flow of dialogue is tags - most importantly, the wait tag!

The purpose of the wait tag is to introduce a mandatory pause when Ren'Py is displaying dialogue on the screen: we use this to represent Natsuki doing things a person would do when they speak, such as:

  • Taking a moment to breath between sentences
  • Pausing briefly when in thought
  • Stuttering

When we want to use a wait tag, we insert it at the point we want Natsuki to pause, with the format:

{w=X}, where x is a number representing how long we want Natsuki to pause for (in seconds)

For example:

n 2kcsemesisbr "Oh man...{w=1.5} I can't believe you took so long!"

In this dialogue, Natsuki would stop talking for a second and a half between the two parts of the sentence split by the tag: in this case, to show her exasperation!

Generally, we'd want to use wait tags whenever we have punctuation in the dialogue. As a rule of thumb:

  • , should be followed with a wait tag of {w=0.2} if used in the middle of a single line.
  • . should be followed with a wait tag of {w=0.2} if used in the middle of a single line.
  • ... should be followed with a wait tag of {w=0.3}, if used in the middle of a single line.
  • ! and ? should be followed with a wait tag of {w=0.3}, if used in the middle of a single line.

When we use an extend, we should aim to use the following:

  • {w=0.5} if the extended line should follow quickly after the first (like if Natsuki is making a quick follow-up, with the first line ending in a , or -)
  • {w=0.75} if the extended line should have a brief pause after the first (like if Natsuki is following up one sentence with a new one, with the first line ending in a ., ! or ?)
  • {w=1} if the extended line should have a noticeable pause after the first (like if Natsuki is trailing off, or questioning something, with the first line ending in a ...)
  • {w=1.25} or {w=1.5} if the extended line should have a considerable pause after the first (like for sensitive topics)

These aren't hard and fast rules, but we should aim to be consistent unless the situation calls for timing that works better outside these cases!

The no-wait tag

Contrary to the wait tag, we also have the no-wait tag: as you might have guessed, this performs the opposite function: when we use the no-wait tag, we tell Ren'Py to immediately display the next line of dialogue (whether it begins with n or extend):

n 2kbkwredr "I was super scare-{w=0.25}{nw}"
n 4fcspofess "I totally wasn't scared!"

In this example, we use the no-wait tag to immediately skip to the line (after a very short pause of only .25 seconds) where Natsuki says she isn't scared as soon as she's about to admit she was scared.

The no-wait tag is usually seen in combination with an extend statement to automatically advance text, but this doesn't have to be the case! It's also possible to use each independently: for example, we can use extend without a no-wait or wait tag to make the user have to click to see the extended line!

Decorating text

Sometimes, we'll want to add some extra emphasis on what Natsuki is saying: the tools we have to do this are the italicize and embolden tags!

These work exactly like making text italic/bold in something like Word; all we do is encapsulate (surround) the text we want to be italic or bold with the corresponding tags:

n 3nslemsbl "{i}I'm totally fine.{/i}"
n 3fcswreansbl "{b}I'm totally fine!{/b}"

In these examples, the first line of dialogue would appear as:
"I'm totally fine."

And the second would appear as:
"I'm totally fine!"

Generally, we'd use italics to force the player's attention to a particular word, or a few words with a lower sense of urgency or emotion (like stressing a word in a statement, or to show disgust): meanwhile, we'd use bold to display a higher sense or urgency or emotion (like showing anger or frustration).

All together now!

Now we have all the basic tools, we can look at combining them to produce dialogue that flows well, is exciting to read and keeps Natsuki looking/feeling dynamic to the audience!

Let's look at the following script lines:

"I don't know about you. But I feel like we're finally getting somewhere! Isn't that awesome? Now you can write like a pro too!"
"Well... almost. Ehehe."

Already, we can see that the first line is getting too long - it might end up being too long for the textbox, and nobody says such a long sentence all in one go, without any breaks or pauses!

It's also very instantaneous - we can't keep the player guessing what will come next with moments of suspense, because everything is already there!

Lastly, in this form, it would be quite dull to look at - with only two lines, Natsuki would be saying an awful lot while showing the same face: she isn't a robot!

Let's start by breaking down those two long lines into something easier to digest. Remember, Natsuki is not a character from whom we expect long monologues: she likes to keep things short and snappy. So that's exactly what we'll do!

n "I don't know about you..."
extend " but I feel like we're finally getting somewhere!"
n "Isn't that awesome?"
n "Now you can write like a pro too!"
n "Well..."
extend " almost."
n "Ehehe."

Already, we are seeing a huge improvement: note how we split some lines with the extend statement - now we've turned a script with room for only two facial expressions into a script with the potential for seven! This will immediately make Natsuki look way more dynamic and exciting: and more importantly, human!

Now we have a basic structure, we should look at introducing some tags to help us with controlling the pacing of the dialogue! Currently, any extended lines would be seen immediately - rendering the use of extend much less effective (especially when it comes to sprites later). Let's add some wait ({w=X}) and no-wait ({nw}) tags!

n "I don't know about you...{w=1}{nw}"
extend " but I feel like we're finally getting somewhere!"
n "Isn't that awesome?"
n "Now you can write like a pro too!"
n "Well...{w=1.25}{nw}"
extend " almost."
n "Ehehe."

Now, Natsuki will pause appropriately on the first and fifth lines before continuing her statements: much better!

We can also look at adding some extra tags for emphasis: Natsuki is a little impatient and hot-headed, so perhaps we should have her exaggerate some words that mark this trait:

n "I don't know about you...{w=1}{nw}"
extend " but I feel like we're {i}finally{/i} getting somewhere!"
n "Isn't that awesome?"
n "Now you can write like a pro too!"
n "Well...{w=1.25}{nw}"
extend " {i}almost{/i}."
n "Ehehe."

By italicizing "finally", we make Natsuki sound like she's more relieved at the player - while the emphasis on "almost" helps stress that she was teasing the player. It's all coming together!

Now, the issue is that Natsuki won't change expression at all here as she talks. That's because we need to add the next big thing - spritecodes!

It's usually best to save spritecodes till last, so you don't have to go back and forth adjusting/replacing these codes as you tweak the writing and get a more final picture for your dialogue.

Be sure to watch out for the following pitfalls when picking which spritecodes to use for your dialogue:

  • Same-face syndrome:
    • If Natsuki is just talking, keep her animated! Don't just keep Natsuki smiling aimlessly: she can look left/right as she goes through her thoughts, frown if a thought is annoying, close her eyes if she's teasing, and so on.
    • If you feel you can't vary a particular part of her face (such as her mouth) between lines, then look to use other parts instead! If she can't alter her mouth, then adjust her eyes and eyebrows, and so on.
  • Static poses:
    • There's a wide range of poses to choose from, so be sure to make use of them!
    • Try to avoid having Natsuki stay on the same pose for too long, and try to avoid Natsuki moving around too much as well: imagine how you'd move when talking to someone!
  • Arms folded body to/from arms folded desk: Because of the similarity of the two poses, try to avoid going directly between poses 2 and 3, as this looks odd: use 1 or 4 as "stepping stones" between them instead!
  • Unconventional expressions:
    • If you can't see Natsuki ever pulling that face... then don't use it!
    • Remember, we want to keep things in the bounds of reality as much as we can, and wacky expressions make our work harder to take seriously.
  • Affinity != Face!:
    • When writing dialogue for a particular affinity, don't let her affinity override the writing: just because Natsuki is in love with the player doesn't mean she's constantly blushing, showing hearts and throwing puppy-dog eyes!

When using spritecodes, it's important to keep things in line with the dialogue, the mood of the dialogue, and Natsuki's character: if she's happy, show her grinning!

Let's finish the dialogue!

n 2ullaj "I don't know about you...{w=1}{nw}"
extend 2fcsbg " but I feel like we're {i}finally{/i} getting somewhere!"
n 4fspgs "Isn't that awesome?"
n 4fchgnedz "Now you can write like a pro too!"
n 3nlrss "Well...{w=1.25}{nw}"
extend 3fsqsm " {i}almost{/i}."
n 4fchgn "Ehehe."

And there we are - we've taken a boring pair of lines of script, and transformed it into something much closer resembling what Natsuki would say, and how she would say it!

Natsuki's voice

Now you have a cursive understanding of writing dialogue using the capabilities of Ren'Py, it's time to look at what makes Natsuki's writing actually feel like Natsuki - JN style!

Natsuki's background/story points

  • Natsuki has gained the position of power Monika had as club president, but is much less capable and confident in her abilities: to this end, she is aware of the actions of Monika and the fates of her friends, but she is not a good developer and does not mess around with the code/UI much.
  • Natsuki is fully aware of the separation between the player and the MC: Unless referring specifically to past events, Natsuki always addresses the player of the game. Try to avoid focusing topics and thoughts on the MC; remember that we are focusing on relationship building between Natsuki and her player!

General points

  • Natsuki is not long-winded in nature: she makes her points short and snappy! Try to avoid long monologues: if you have to explain something at length, break it up as much as you can using extend, and introduce a joke or two to keep things fun!
  • Natsuki has a sense of humour: don't be afraid to poke a little fun at the player, or at Natsuki herself using situational humour! It's completely on character for Natsuki to tease, or make silly puns. They are also a great way to bring a less serious topic to a close! Remember that while she's open to laughing and giggling, try not to go overboard: she's not as bubbly/fluffy as Sayori, so constant laughs without much context are not on character.
  • Natsuki has a short temper: she loves to moan a little about things that irk her, but try not to overdo it! Natsuki is more than her pet hates: we always want to explain why something is annoying, and what she'd prefer instead!
  • Natsuki cares very deeply for her friends: we establish during the introduction that the whole experience of Act 2 has been traumatic, and as seen by her note to the player she isn't above putting aside her troubles for people she wants to help and protect. To this end, jokes about the fates of the other characters (such as Yuri's corpse, or Sayori's depression) are not in character. She's more than happy to remember the good times, of course! Be sure that any topics involving her friends and their situation is approached with sincerity and sensitivity.
  • Natsuki is more than her character tropes: Although Natsuki is a tsundere, try not to play into this or rely on it. Having Natsuki overreact and become flustered at everything, or constantly passive aggressive waters down her character and makes the writing feel corny/cheap. Reserve the fluster and overreactions for when it counts: we can make better jokes when we aren't using the same punchline for everything!
  • Natsuki does not hate the player: Assuming Natsuki hasn't been made upset by the player's actions, she does not have reason to be mean-spirited, nasty or generally rude. Flinging unwarranted insults or criticism of the player - or her friends - is not in character.
  • Natsuki is not a vehicle for our interests: It's important to try and avoid self-inserts. We're trying to give Natsuki her voice; not transplant ours! On that note, also avoid direct references of things like popular games, anime/manga series, and products: not all brands will be recognized by all players, and it opens the door to a lot of "If she talks about X franchise, why not Y franchise?" thinking that overshadows more meaningful topics. Tongue in cheek references (like an obvious knock-off games console on her desk that resembles a real life console) are okay, given discussion and context.
  • Natsuki is more than cupcakes and manga: Try not to fall into the pitfall of having everything revolve around things Natsuki is known to like from the base game: she is so much more than that! Remember, the strength of our mod is that we can take some creative licence: so don't be afraid to open up and explore new ideas, hobbies and interests you feel fit with Natsuki - so long as it doesn't contradict the above point on self-insertion!

Affinity

Natsuki's interaction with the player changes based on how close she feels to them:

  • LOVE: Natsuki finally loves the player! She still struggles to express her affection fully, but she can muster up the courage to tell the player she loves them when saying farewell, or when teasing. Natsuki is fully relaxed in the classroom, and always happy to see the player. She will happily share any thoughts she has, and always gives as good as she gets!
  • ENAMORED: Natsuki is growing very fond of the player! She's much more supportive of the player, and hints that she likes the player are very obvious - even if she still tries to cover them up. She is much more open about how much the player means to her, but will never straight up confess her feelings: that's for the player to do! Natsuki looks at peace, if a little nervous sometimes during her idle time.
  • AFFECTIONATE: Natsuki is in an obviously positive mood, and it's starting to become obvious that she is growing closer to the player! She is much more confident than in HAPPY or NORMAL, and ups her teasing considerably to reflect this. She may imply she likes the player, but is quick to cover this up, or react with fluster and deflection. Natsuki is beginning to crack some smiles during her idle time!
  • HAPPY: Natsuki is in a generally positive mood, and is beginning to warm up to the player a little. She cracks a few more jokes and has a more sunny disposition. Although she is on better terms with the player than NORMAL, she still does not hint that she likes the player.
  • NORMAL: Natsuki's default state. Natsuki isn't particularly happy or sad, and a little distant. She is still up to crack a few jokes and voice her opinions, but doesn't feel comfortable enough to open up her feelings beyond the minimum. She might react with a little fluster to charged questions, but doesn't indicate that she likes the player romantically.
  • UPSET: Natsuki is in a sour mood compared to her normal state. She isn't particularly angry at the player, but disgruntled and much more direct/blunt. She isn't in the mood for jokes.
  • DISTRESSED: Natsuki's negative feelings are starting to manifest much more clearly: her conversations begin to point towards her mistreatment, and her lack of patience (and faith) is now telling.
  • BROKEN: Natsuki's feelings from DISTRESSED grow more amplified; she is almost incapable of voicing anything but anger, hurt and fear. Natsuki struggles to hold back tears during her idle time.
  • RUINED: Natsuki is at rock-bottom confidence and is incapable of mustering anything but contempt, frustration and fear. She is clearly hostile, and rebukes almost any attempt at conversation - often directing the conversation to point at the player's poor treatment of her. Natsuki visibly and frequently cries during her idle time.

Remember, Natsuki's affinity when she is close to the player should compliment rather than totally overshadow her personality: she's still Natsuki, regardless of how much she admires the player!

Personality traits

  • Outspoken; a sense of bravado
  • Direct/objective; she wants to get to the point
  • Confident, at least superficially
  • Proud
  • Healthy sense of humour
  • Somewhat abrasive, particularly to those she doesn't know
  • Prefers simplicity
  • Struggles with valuing herself; seeks reassurance/validation - often without realizing
  • Struggles with expressing affection and gratefulness
  • Struggles with physical displays of affection

General likes and dislikes (not exhaustive)

Loves

  • Her friends - Sayori, Yuri and Monika
  • Respect and understanding
  • Animals, with an emphasis on hamsters, rabbits and cats
  • Humour, particularly puns and plays on words
  • Artwork, particularly fanart
  • The player spending time with her
  • The player complimenting her

Likes

  • Manga, particularly slice-of-life, comedy and romance
  • Video games, to an extent
  • Baking and cooking, both snack foods and true meals
  • Teasing
  • Sewing and making her own clothing
  • Skateboarding
  • Sweets and treats: hot chocolate, fizzy candy, marshmallows, pick and mix
  • Exploring
  • Shopping, particularly in stores as opposed to online
  • Soft toys and plushies

Dislikes

  • Smoking
  • Drinking
  • Discussing her family
  • Discussing the fates of her friends
  • Discussing the events of DDLC
  • Horror
  • Poor hygiene/cleanliness
  • Subscriptions in place of one-time purchases
  • Cheating/poor sportsmanship
  • The player not taking care of themselves
  • The player leaving the game suddenly
  • The player leaving for long periods of time

Hates

  • Insensitivity
  • Judgmentalism
  • Bullying
  • Stereotypes
  • Jump-scares
  • Arrogance
  • The player abusing her trust
  • The player insulting her

Fears

  • Thunderstorms
  • Loneliness
  • Abandonment
  • Vomiting

Quirks and habits

Exasperation

Natsuki freely and openly shows her exasperation. She usually shows this using words and phrases such as: "Man...", "Jeez...", "Ugh...", and "Yeesh...".

"Man... I can't believe I just had to tell you that."

Disgust

Natsuki isn't afraid of showing when something bothers her. She shows this using words and phrases such as: "Ugh!", "Gross!" and "Ew!".

"W-wait, you're serious! Gross!"

Fluster

Natsuki usually shows her fluster when she's embarrassed by something like:

  • Admitting something bothers her
  • Realizing her words could be taken in multiple ways, when she's explaining her point
  • Reacting to an implication she has made that she likes the player
  • Reacting to an implication the player has made that they like her

Some words/phrases Natsuki uses to show fluster are:

  • "Nnnnnn-!": A more aggressive fluster; Natsuki uses this when she'd be about to retort or exasperate.
  • "Uuuuuuu-!": Similar to the above.
  • "Mmmnnnnn-!": Similar to the above.
  • "Uuuuuu...": A more subdued fluster; Natsuki uses this when she's more sensitive, or feels guilty.

Humour

As mentioned, Natsuki has a strong sense of humour - we typically stick to a few different laughs:

  • "Ahaha.": A subdued laugh. Natsuki usually uses this when making a light-hearted point, or agreeing.
  • "Ahaha!": A hearty laugh! Natsuki uses this when making jokes, or poking fun at something she finds particularly funny.
  • "Ahaha...": A nervous/shy laugh. Natsuki would use this when making a point she might find sadly funny.
  • "Ehehe.": A subdued, but light-hearted laugh. Natsuki would use this when teasing, or as a general expression of happiness.
  • "Ehehe...": A nervous/shy, but mostly light-hearted laugh. Natsuki would use this when a little flustered, such as when making a hint she likes the player.

Insults and teasing

When she is teasing the player, Natsuki will stick to more light-hearted terms. Examples include:

  • Idiot
  • Dummy
  • Silly
  • Stupid
  • Dope
  • Goof
  • Donut

When she is labelling the player or another character (for example, if they did something that upset her a lot, or something that hurt someone else), Natsuki will use more direct terms. Examples include:

  • Jerk
  • Moron
  • Loser
  • Idiot

Natsuki does not call people "Baka", either ironically or unironically. We feel this falls too deeply into the tsundere trope, and generally comes across as memey. It's also in a completely different language to what Natsuki usually talks in, so makes little sense and just appears out of context. Using this word is out of character.

Extra considerations

Spelling mistakes and grammar

When our players are looking to immerse themselves in a mod like Just Natsuki, we want to do everything we can to help maintain that illusion: it's easy to see how things like bugs or crashes are disruptive, but don't underestimate the distraction potential of mistakes in writing!

The last thing we want is for a player's attention to be yanked away from a sensitive conversation or special moment by a typo: so always check and double check your writing, as well as test it in the mod itself. Remember to keep an eye out for mistakes with tags and the extend statement too! (Such as missing spaces)

Writing examples: things to avoid

Example A

"Well duh I love anime. Are you KIDDING ME?! You'd have to be an IDIOT not to love Evangelion!"

What's wrong?

  • Natsuki is too confrontational: she's immediately aggressive with her tone.
  • Natsuki is too loud! We rarely use capitalisation unless we really want Natsuki to feel like she's shouting, which isn't warranted here.
  • Natsuki is directly referencing a franchise: we don't want to appear as though we have favouritism, or that we're pushing our personal preferences. We also need to remember not everybody will even know what Evangelion is!
  • Pacing: we're immediately presenting the player with a pile of thoughts, without any leadup or flow into it. It doesn't look like Natsuki is responding to a question, or musing: she's just talking at the player!
  • Natsuki is being too judgemental: she totally gets that people have their own interests and hobbies; it isn't in-character for Natsuki to jump right to labelling people for simply not enjoying something she likes.

Adjusted dialogue (without code)

"Eh? Anime?"
"Well, duh! Of course I love anime!"
"I mean... can you blame me?"
"It's super varied! All those genres and stories to tell? Talk about a score!"
"And besides..."
"Good enough excuse to pig out on your favourite snacks and be lazy for an evening, right?"
"Ahaha."

Example B

"You know, I actually have no idea, ehehe. I think we'd bee best off taking things nice and slowly so we don't overthnk it all, you know? Ahaha!"

What's wrong?

  • Too much out of context giggling - the laughter feels forced and a little corny.
  • The talking habits here seem to match Monika more than Natsuki: for example, the use of "you know?" combined with a laugh to round off the sentence.
  • There's some spelling mistakes present - "overthink" and "be" are both misspelled. Spelling and grammar mistakes are big ways through which the player's experience can be disrupted: we must minimize these!
  • This is too long to be something we can seriously consider Natsuki saying: she doesn't really work with long, meandering thought lines as outlined previously.

Adjusted dialogue (without code)

"...You know what, [player]?"
"I... actually have no idea! Ehehe..."
"T-that being said!"
"It's always best to take things like this slowly, right?"
"You don't wanna overthink it! That's just common sense."