Ren'Py supports displaying dialogue from multiple characters simultaneously. Multiple dialogue is invoked by giving the lines of dialogue the multiple argument. For example:
e "Ren'Py supports displaying multiple lines of dialogue simultaneously." (multiple=2)
l "About bloody time! I've been waiting for this for years." (multiple=2)
Multiple dialogue is invoked by passing a line of dialogue the multiple argument
with the number of lines of dialogue to combine together. (So if we had multiple=3
,
three blocks of dialogue would be combined.)
Multiple dialogue works by showing the say screen more than once, with different styles. Each say screen is responsible for showing dialogue from a single character.
There are a few restrictions on multiple dialogue:
Generally, the way multiple dialogue works is to display the say screen multiple times, with the styles of various displayables systematically renamed to reflect the block number and the number of blocks in total.
Specifically, multiple dialogue uses styles with names of the form block`n`_multiple`m`_`style`, where n is the one-based number of the block, and m is the number of blocks of dialogue being displayed at once.
In our example above, the window corresponding to each block of dialogue are given the names:
This naming scheme is used for the dialogue, name, and namebox, as well as the window. It's designed so style inheritance is useful here. For the window styles we'll have:
For more control, there is the multiple_say screen. When it exists, the multiple_say screen is used in place of the normal say screen. It takes a third argument, multiple, which is a tuple. The first component of the tuple is the block number, and the second is the total number of screens.
By default, NVL-Mode displays multiple text blocks one on top of another. This can be customized by changing the nvl screen, which is passed a list of objects with the multiple argument that can be reorganized and presented.