Special Screen Names
There are two kinds of special screen names in Ren'Py. The first are
screens that will be automatically displayed when Ren'Py script
language commands (or their programmatic equivalents) are run. The
other type are menu screens. These have conventional names for
conventional functionality, but screens can be omitted or changed as
is deemed necessary.
On this page, we'll give example screens. It's important to realize
that, while some screens must have minimal functionality, the screen
system makes it possible to add additional functionality to
screens. For example, while the standard say screen only displays
text, the screen systen makes it easy to add features like skipping,
auto-forward mode, or muting.
Some special screens take parameters. These parameters can be accessed
as variables in the screen's scope.
Some of the screens also have special ids associated with them. A
special id should be assigned to a displayable of a given type. It can
cause properties to be assigned to that displayable, and can make that
displayable accessible to calling code.
In-Game Screens
These screens are automatically displayed when certain Ren'Py
statements execute.
Say
The say screen is called by the say statement, when displaying
ADV-mode dialogue. It is displayed with the following parameters:
- who
- The text of the name of the speaking character.
- what
- The dialogue being said by the speaking character.
It's expected to declare displayables with the following ids:
- "who"
- A text displayable, displaying the name of the speaking
character. The character object can be given arguments that style
this displayable.
- "what"
- A text displayable, displaying the dialogue being said by the
speaking character. The character object can be given arguments that style
this displayable. A displayable with this id must be defined,
as Ren'Py uses it to calculate auto-forward-mode time,
click-to-continue, and other things.
- "window"
- A window or frame. This conventionally contains the who and what
text. The character object can be given arguments that style
this displayable.
screen say:
window id "window":
has vbox
if who:
text who id "who"
text what id "what"
Choice
The choice screen is used to display the in-game choices created
with the menu statement. It is given the following parameter:
- items
- This is a list of (caption, action, chosen)
tuples. For each choice, caption is the name of the choice, and
action is the action to invoke for the choice, or None if this
is a choice label. Chosen if a choice with this label has been
chosen by the user before. (It doesn't have to be in the current
game.)
screen choice:
window:
style "menu_window"
vbox:
style "menu"
for caption, action, chosen in items:
if action:
button:
action action
style "menu_choice_button"
text caption style "menu_choice"
else:
text caption style "menu_caption"
NVL
The nvl screen is used to display NVL-mode dialogue. It is given
the following parameter:
- dialogue
- This is a list of ( who, what, who_id, what_id,
window_id) tuples, each of which corresponds to a line of
dialogue on the screen. Who and what are strings containing
the speaking character and the line of dialogue, respectively. The
ids should be assigned to the who and what text displayables, and
a window containing each unit of dialogue.
- items
This is a list of (caption, action, chosen)
tuples. For each choice, caption is the name of the choice, and
action is the action to invoke for the choice, or None if this
is a choice label. Chosen if a choice with this label has been
chosen by the user before. (It doesn't have to be in the current
game.)
If items is empty, the menu should not be shown.
Ren'Py also supports an nvl_choice screen, which takes the same
parameters as nvl, and is used in preference to nvl when
an in-game choice is presented to the user, if it exists.
screen nvl:
window:
style "nvl_window"
has vbox:
style "nvl_vbox"
# Display dialogue.
for who, what, who_id, what_id, window_id in dialogue:
window:
id window_id
has hbox:
spacing 10
if who is not None:
text who id who_id
text what id what_id
# Display a menu, if given.
if items:
vbox:
id "menu"
for caption, action, chosen in items:
if action:
button:
style "nvl_menu_choice_button"
action action
text caption style "nvl_menu_choice"
else:
text caption style "nvl_dialogue"
Notify
The notify screen is used by renpy.notify() to display
notifications to the user. It's generally used in conjunction with a
transform to handle the entire task of notification. It's given a
single parameter:
- message
- The message to display.
The default notify screen, and its associated transform, are:
screen notify:
zorder 100
text message at _notify_transform
# This controls how long it takes between when the screen is
# first shown, and when it begins hiding.
timer 3.25 action Hide('notify')
transform _notify_transform:
# These control the position.
xalign .02 yalign .015
# These control the actions on show and hide.
on show:
alpha 0
linear .25 alpha 1.0
on hide:
linear .5 alpha 0.0