Creating Point and Click Games with Escoria

Speech Text

When a character speaks, the text is displayed on the screen using a simple UI that can show text with a progressive animation, and animations to open and close the UI, for example a speech bubble. We can use many types of text UI, depending on the situation or the character speaking, and each type of UI can have a different avatar, typically used to show a portrait of the character speaking. Speech texts can have a fixed position on the screen, or can be placed on top of the character speaking. This chapter describes how to configure a dialog text scene to give some style to your dialogues.

Speech Display Type: a style for your texts

When showing text, a type of speech text can be specified in Esc scripting to define a style for your text. The syntax is as is:

say object text type avatar

so for example we can have:

say bamboo_god "What is the meaning of this!" angry_speech avatar_god

Each type matches a different scene with the nodes that will create a background for your text. If type and avatar are not defined in the Esc script, no scene will be used, or the default scene if you created one. So no need to rewrite your Esc scripts to add the default type to all your speeches.


Avatars are typically used to display a portrait of the character speaking on the UI, but can be used for any kind of ornament. When the dialog text is invoked, an avatar can be specified (if not, the type will be "default").

The avatars pictures are defined inside the dialog type scenes, so the avatars can change depending of the dialog type (or else just repeat them in the different dialog type scenes). Only one avatar type will be visible simultaneously to the speech text.

Speech Type Scene Structure

The structure of a speech text scene is relatively simple, an example can be found in the file ui/dialog_default.scn. The requirements are:

  • A root node of type Node2D, with the script globals/ attached to it. The script has one parameter: fixed_pos. When this checkbox is selected, your speech will have a fixed position, and it will not be placed on top of the speaking character. It will simply be placed in the scene at position (0,0).
  • A node of type Node2D named anchor. This is used by the animation to move and scale the structure of the whole scene.
  • A node of type RichTextLabel named text, child of anchor. This is where the text will be displayed. Remember to configure the fonts here.
  • A node of type Node2D named avatars, child of the anchor node. This node can have one or more children, usually of type Sprite with different avatars. The name of the node will be used as the avatar type. When an avatar is specified, the node with a matching name will be shown, everything else will be hidden.
  • Optionally a node of type AnimationPlayer named animation, that can contain 2 animations, show and hide. If found, these are executed when the dialog opens and closes.

Here's how it looks:

 Escoria Dialog scene structure

And here's an example of a default scene with our mini-game:

Escoria Dialog scene type example

A list of speech type scenes for your game

The list of speech type scenes are configured in a containing scene, found in globals/dialog_player.scn. This list scene contain a ResourcePreloader node, meaning it preloads the resources for each of the available dialog scenes. The name of the resource will be used to identify the type of the speech.

Escoria dialog player scene

Here's an example of the minimal container scene, the list is created in the bottom central panel, open your dialog type scene with the folder icon and give it the correct name. Remember to always add a "default" speech type, and any additional types you'd like to use.

Fonts and text styles

As we said, the font of your text is defined in the RichTextLabel node named "text". To add a font to your dialogs, you first have to import your font in Godot (Import > Font in the top right menu), so it can be converted to a texture font.

Escoria Import font

Here is an example of the texture font of our mini-game:

Escoria texture font example

For details, see the Godot documentation about Importing font:


If you have several font styles (italic, bold, and so on) and you imported them in Godot, and specified them in the RichTextLabel node, you can use the BBCode markup language (originally used in message boards) inside your Esc script to style your text. In this example, the "Made in China" phrase will be rendered in italic:

say bamboo_god "What is the meaning of this! [i]Made in China?![/i] 
Be wary of my wrath as I shall curse you and all your lineage!"

For details on how to add BBcode in your Esc scripts see the Godot documentation:

And for a list of BBCode markups, see the Wikipedia page on BBCode :

Customizing tooltips

In the same way, you can also give a font and a style to your tooltips by customizing the tooltip Label node in the ui/hud.scn file.

Escoria tooltip customization

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.