Skip to content

Character System

import { Aside, Steps } from '@astrojs/starlight/components';


The character system separates definition from display:

  1. Define a character once with [chara_new] and register face/expression variants with [chara_face].
  2. Display a defined character at any time with [chara_show], specifying which face to use.
  3. Modify an on-screen character's appearance with [chara_mod].

[chara_new name=… storage=… width=… height=…]

Section titled “[chara_new name=… storage=… width=… height=…]”

Register a new character. No visual output — this only stores the definition.

AttributeTypeRequiredDescription
name=stringYesCharacter identifier used in all other chara_* tags
storage=stringNoDefault sprite image path
width= / height=floatNoSprite dimensions

[chara_face name=… face=… storage=…]

Section titled “[chara_face name=… face=… storage=…]”

Add a named face/expression variant to a registered character.

AttributeTypeRequiredDescription
name=stringYesCharacter identifier
face=stringYesFace variant name (e.g. normal, happy, angry)
storage=stringYesImage path for this face

Update configuration for a registered character (position defaults, layer, etc.).

Remove a character definition and all its face variants from the registry.


[chara_show name=… face=… x=… y=… time=… method=…]

Section titled “[chara_show name=… face=… x=… y=… time=… method=…]”

Display a registered character on screen.

AttributeTypeRequiredDescription
name=stringYesCharacter identifier
face=stringNoFace variant (uses default if omitted)
x= / y=floatNoScreen position
time=msNoEntrance transition duration
method=stringNoEntrance transition method

Hide a character with an optional exit transition. The character stays loaded.

Hide all currently-visible characters at once.

Unload a character sprite from memory (does not remove the definition).


[chara_mod name=… face=… pose=… storage=…]

Section titled “[chara_mod name=… face=… pose=… storage=…]”

Change the expression or pose of a character already on screen.

AttributeTypeDescription
name=stringCharacter identifier
face=stringNew face variant
pose=stringNew pose variant
storage=stringDirect image path (overrides registry lookup)

[chara_move name=… x=… y=… time=…]

Section titled “[chara_move name=… x=… y=… time=…]”

Animate a character to a new screen position.


Assign a character to a specific z-layer for draw ordering.

[chara_layer_mod name=… opacity=… visible=…]

Section titled “[chara_layer_mod name=… opacity=… visible=…]”

Modify layer-level properties of an on-screen character.

[chara_part name=… part=… storage=…]

Section titled “[chara_part name=… part=… storage=…]”

Set a compositable part (hair colour, outfit, accessories, etc.) on a character.

Reset all parts to their default values.


Set the character name displayed in the ptext name box above the message window.


  1. Define characters in an initialization file:

    [chara_new name=alice storage=chara/alice/default.png]
    [chara_face name=alice face=normal storage=chara/alice/normal.png]
    [chara_face name=alice face=happy storage=chara/alice/happy.png]
    [chara_face name=alice face=sad storage=chara/alice/sad.png]
  2. Show a character when entering a scene:

    [chara_show name=alice face=normal x=200 y=100 time=500]
  3. Change expression mid-dialogue:

    #Alice
    I can't believe it!
    [chara_mod name=alice face=surprised]
  4. Hide when leaving the scene:

    [chara_hide name=alice time=300]