Character Event

The character event is used for characters that have portraits. It allows joining, leaving and updating them and configuring how they appear in the game.

📜 Content

Text Syntax

# Basic join event
join MyCharacter center
# Specifying a portrait and shortcode parameters
join MyCharacter (SomePortrait) center [animation="Bounce In"]
# Character with a space in the name and a portrait that's inside a group
join "My Character" (Special/Crazy) center
# Specifying the transform manually
join MyCharacter pos=x0.5y1 size=y400px rot=20`

# Basic leave event
leave MyCharacter
# Specifying shortcode parameters
leave MyCharacter [animation="Fade Down"]
# Leaving all joined characters
leave --All--

# Update that animates the character
update MyCharacter [animation="Tada" length="2" wait="true"]
# Update that changes the position (and tweens it)
update MyCharacter left [move_time="1" move_trans="Elastic" move_ease="In"]
# Update that changes the portrait
update MyCharacter (OtherPortrait) [fade_time="0.5"]

The Main Settings

Action Setting | Join / Leave / Update

The character event knows three modes Join, Leave and Update.

Join events will add a character. They require a position/transform to be given and will use In-Animations.

Leave events will remove one or all characters. They ignore most settings and will use Out-Animations.

Update events allow you to change stuff, like the position or portrait. They can also be used to animate the character. They have a few settings that Join and Leave don't use: Fade and Fade Time, Move Time, Move Trans and Move Ease. Also the Update event will only change a setting if it has been set, so if no portrait is given the previous portrait is kept, same for the position, etc.

Text Syntax: The mode is set by starting the event with either join, leave or update


Character Setting

The character that is going to be used. In Leave-mode this can be --All-- characters.

Text Syntax: join MyCharacter , leave "My Character", leave --All--

Right after join/leave/update put the character identifier. If the identifier contains a space, you have to put the identifier in quotes.


Portrait Setting

Text Syntax: After the character identifier put the portrait in (brackets): join MyCharacter (MyPortrait)

The portrait that should be used. If none is given, Join mode will use the characters default portrait, while Update mode will just not change the portrait.

Portraits that are in groups have to be specified by full path: Group/SubGroup/Portrait

The portrait setting can be an expression inside {curly brackets}, for example a variable: {PlayerPortrait}. The experssion will be evaluated and interpreted as a string that should be the name/path of a portrait.


Position/Transform Setting

This setting defines where on screen your character is positioned. When you character is joined it will be put in a brand new PortraitContainer, which you can then change the position, size and rotation of with the transform setting. There are two ways to do so:

  • Using a preset "position" you can easily copy the tranform of one of the PortraitContainers defined in your style by using one of it's identifiers. By default dialogic provides 5 of these preset positions, named "leftmost", "left", "center", "right", "rightmost".

  • Using transform commands you can position, size and rotate the container with more control. For example pos=x0.5y1 size=y400px rot=20.

Using a Preset Positions

Moving the container to a preset position is as easy as writing the name of that position.

In the default "5-Portraits" style layer the defined positions are leftmost,left, center, right, rightmost.

Note

If you want more/other preset positions you will have to create a custom portrait layer. You then have to change the position names that will be suggested in the timeline editor in the Settings>Portraits.

Using Transform Commands

There are three transform commands: pos= (position), size= and rot= (rotation).

Position and size can be specified like this: x0.5 y1, x100px y1% By default x and y are interpreted as relative to the viewport size, meaning 0.5 means half the width/height of the window.

Position defines the ORIGIN of the portrait (usually the bottom center). This means a position of x0.5 y1 will position the portrait like this:

When first joining a character, the position, size and rotation will be copied from the first portrait preset found. This means if you just want to vary the position along the x axis, a simple pos=x0.3 is usually enough and all the other values will be correct by default.

Rotation is given in degrees. The portrait rotates around it's origin (usually the bottom center)!



The Other Settings

In the text editor these settings are all stored as parameters in the shortcode at the end of the event.

E.g. join MyCharacter center [animation="Bounce" length="1" mirrored="true" ]

Animation Setting

Text Syntax: animation="Bounce"

The animation setting allows you to set an animation that should be used. The selection of animations is different depending on the mode.

If no animation is given, Join and Leave will fallback to defaults that can be set in Settings>Portraits, while Update won't play any animation.

The animation name is quite forgiving meaning Fade Up, fade up in fade In Up will all point to the right animation (assuming this is a join event).

You can add animations to dialogic with extensions: Creating Extensions

Animation Length Setting

Text Syntax: length="2" / length="0.5"

If an animation is set, this defines the length of the animation in seconds.

Animation Wait Setting

Text Syntax: wait="true" / wait="false"

If an animation is set, this defines, whether to wait for the animation to finish before going to the next event.

Animation Repeat Setting

Text Syntax: repeat="2"

The animation repeat setting (exclusive to the Update mode) allows repeating the animation multiple times.


Fade Setting

Text Syntax: fade="Fade"

The fade setting (exclusive to the Update mode and only relevant if the portrait changes) defines the Crossfade animation that is used to fade from the last portrait to the next. If none is given it will fall back to a default that can be set in Setting>Portraits.

Fade Length Setting

Text Syntax: fade_length="0.5"

Defines the length of the fade in seconds.


Z-Index Setting

Text Syntax: z_index="2"

The z-index allows you to sort your characters. It is not using godot's z-index and instead sorting the characters manually!


Mirror Setting

Text Syntax: mirrored="true"

Allows mirroring the portrait.


Move Settings

Text Syntax: move_time="0.8" / move_trans="Elastic" / move_ease="In Out"

On Update events that change the position you can set the time (in seconds), transition and easing used to tween from the old to the new position.

Easings: In, Out, In Out Out In

Transitions: Linear, Sine, Quint, Quart, Expo, Elastic, Cubic, Circ, Bounce, Back, Spring

See this Easing Cheat Sheet for something more visual.


Extra Data Setting

Text Syntax: extra_data="something"

The extra data is given to the portrait scene and allows communicating with the portrait scene directly from the timeline. It can be evaluated from the _set_extra_data(data:String) method on custom portraits.