Aller au contenu

Mise en scène

Je veux que mes personnages se tiennent à des places fixes et jouer ça comme une vraie scène — comment ajouter un stage ?

Donnez au sous-dialogue une Stage Actor Class. Sans stage, un dialogue joue en 3C et conserve la caméra normale du jeu ; un stage place les personnages sur des marques fixes et les filme avec ses propres caméras, transformant la scène en cinématique.

A subdialogue's Stage Actor Class field in the Dialogue Editor

  1. Dans le Dialogue Editor, sélectionnez le sous-dialogue et réglez sa Stage Actor Class sur un Blueprint de stage (une sous-classe de ALBRDialogueStageActor). Libretto livre des stages d'exemple, ou vous pouvez construire le vôtre (voir Comment créer mon propre stage ?).
  2. Assurez-vous que le stage existe là où la scène doit se jouer — soit déposez l'acteur de stage dans le niveau au bon endroit, soit laissez la génération le spawner pour vous.
  3. Cliquez sur Generate Sequences. La scène utilise maintenant les marques et caméras du stage au lieu du 3C.

Piège

Un sous-dialogue sans Stage Actor Class reste en 3C (caméra gameplay). Un stage peut aussi placer les personnages sur ses marques tout en conservant la vue gameplay — c'est le mode « 3C staged », réglé avec le bUseStageCameras = false du stage. Par défaut, un stage verrouille aussi la caméra et le déplacement du joueur pour la durée (bLockPlayerCamera / bLockPlayerMovement) ; désactivez-les sur le stage si le joueur doit rester libre.

Voir aussi : Core concepts — Stage · Dialogue Editor — sous-dialogues · Runtime

Comment contrôler qui se tient où ?

Chaque slot de stage porte un Role, et les personnages sont associés aux slots par rôle. Un slot est une marque sur le stage ; son rôle dit qui s'y tient — pas quel acteur précis, donc le même stage fonctionne pour n'importe quel casting.

A stage Blueprint's slot components with their role tags

  1. Un stage a un ULBRStageSlotComponent par participant. Le transform de chaque slot est la marque sur laquelle le personnage est placé.
  2. Réglez le RoleTag de chaque slot sur une valeur sous Libretto.Stage.Roles.* — les intégrés Player, Participant1, Participant2, Participant3, ou un rôle sémantique que votre projet déclare sous la même racine. L'association se fait par rôle, et les valeurs positionnelles par défaut (Participant1, 2, 3) fonctionnent out of the box.

    A slot's Role Tag set to a Libretto.Stage.Roles.* value 3. Pour épingler un acteur précis sur un rôle, utilisez la Stage Characters Override de la Dialogue Instance (la map RoleToCharacter) — elle prime sur l'association automatique par rôle.

    A Dialogue Instance's Stage Characters Override (Role to Character map) 4. Pour voir qui se tient où sans jouer, réglez le PreviewMesh de chaque slot (et éventuellement PreviewPose) — un mannequin de mise en scène s'affiche alors dans le viewport quand le stage est sélectionné et que le show flag Libretto Stage Previews est actif.

    Slot preview meshes showing who stands where, with the slot gizmo

Piège

Le rôle d'un slot est une identité de participant stable — qui occupe cette marque pour toute la scène. Ce n'est pas le Speaker/Listener d'une réplique, qui est volatil et ne pilote que la sélection de caméra. N'essayez pas de changer qui se tient où en éditant Speaker/Listener ; changez les rôles des slots (ou l'override) à la place.

Voir aussi : Core concepts — Stage · Gameplay tag flags

Je veux que la scène se joue là où sont les personnages, pas à un endroit fixe

Laissez le stage se positionner autour des personnages — réglez son Anchor Mode. Un stage n'a pas à être pré-placé dans le niveau ; au démarrage de la lecture il peut se déplacer (et pivoter) pour s'ajuster à l'endroit où les participants se tiennent déjà, donc le même stage fonctionne partout où la conversation est déclenchée.

A stage's Anchor Mode, with the Stage Id and Camera Rules override

  1. Sur le stage, réglez AnchorMode :
    • Keep Placed (par défaut) — le stage reste exactement là où vous l'avez placé dans le niveau.
    • Relative To Character — épinglez un slot sur un personnage (ce personnage ne bouge pas) et laissez le reste du stage s'arranger autour de lui. Réglez AnchorRole sur le rôle dont le slot est le pivot ; le personnage remplissant ce rôle est l'ancre.
    • Specific Point — déposez le stage sur un transform fourni au lancement (ou par un acteur d'ancrage).
    • Slot Weighting — placez l'origine du stage au centre de toutes les positions actuelles des participants.
  2. Pour Relative To Character ou Slot Weighting, activez aussi bOrientToParticipants pour que le stage pivote (yaw, autour du slot d'ancrage) afin de faire face aux participants là où ils sont déjà — minimisant la distance que chacun doit parcourir jusqu'à sa marque.

Piège

Le défaut est Keep Placed : un stage placé dans le niveau ne suivra personne tant que vous ne changez pas le mode. Le repositionnement a lieu une fois, au démarrage de la lecture, donc associez-le à des transitions d'entrée Walk (ci-dessus) si vous voulez que les personnages se déplacent visiblement vers un stage qui s'est formé autour d'eux, plutôt que de se téléporter. Un stage peut aussi être retrouvé à l'exécution par identité via son StageId (il s'enregistre lui-même quand il est placé), donc le contenu généré peut se lier à l'instance de stage résolue sur place.

Voir aussi : Runtime · Core concepts — Stage

Je veux une mise en scène différente selon les parties de la conversation

Réglez le stage par sous-dialogue. La mise en scène se choisit sur chaque sous-dialogue, donc un seul Dialogue peut basculer entre différents stages — ou entre staged et 3C — au fil du déroulé.

  1. Découpez la conversation en sous-dialogues (voir Écriture — découper une longue conversation).
  2. Donnez à chaque sous-dialogue sa propre Stage Actor Class — ou laissez-en un sans aucune pour jouer cette partie en 3C.

Piège

La liste de personnages est partagée sur tout le Dialogue, mais la mise en scène est par sous-dialogue. Les deux mêmes personnages peuvent jouer une section en cinématique staged et la suivante en 3C, sans redéfinir qui est dans la scène.

Voir aussi : Écriture — sous-dialogues · Dialogue Editor — sous-dialogues

Je veux que les personnages marchent jusqu'à leur place au lieu de se téléporter

Réglez les transitions Entry/Exit sur la Dialogue Instance. La manière dont les personnages arrivent sur le stage au début et le quittent à la fin est une propriété de l'Instance placée, pas du script de dialogue — donc le même dialogue peut faire un pop à un endroit et une marche à un autre.

The Instance's Staging ▸ Transitions (Entry/Exit)

  1. Sur la Dialogue Instance, ouvrez Staging ▸ Transitions.
  2. Réglez Entry Transition : Pop (téléporter directement à la marque), Walk (marcher jusqu'à la marque), ou Stay (ne pas les amener — ils jouent là où ils sont déjà).
  3. Réglez Exit Transition : Pop (téléporter de retour à leur point de départ), Walk (revenir en marchant), ou Stay (rester sur le stage à la fin).

Piège

Les défauts sont Entry = Pop et Exit = Stay (le comportement historique). Walk ne fonctionne que pour les personnages qui prennent en charge le déplacement scripté — la marche générique est portée par ALBRSimpleDialogueCharacter ; un personnage personnalisé qui ne l'implémente pas retombe sur un pop. Comme elles vivent sur l'Instance, ce sont un choix de présentation, pas quelque chose que vous créez une fois dans le dialogue.

Voir aussi : Runtime · Core concepts — Stage

Comment créer mon propre stage ?

Faites un Blueprint sous-classe de ALBRDialogueStageActor, ajoutez un slot par participant et au moins une caméra, puis réglez-le comme Stage Actor Class d'un sous-dialogue. Un stage n'est qu'un acteur qui porte des marques (slots) et des caméras — tout le reste (association des personnages, téléport/marche, coupe caméra) est pris en charge pour vous.

  1. Créez le Blueprint de stage. Nouveau Blueprint ▸ classe parente ALBRDialogueStageActor.
  2. Ajoutez les marques. Ajoutez un ULBRStageSlotComponent par participant, positionnez chacun là où un personnage doit se tenir, et réglez son RoleTag (Player, Participant1, Participant2, …). Réglez éventuellement PreviewMesh / PreviewPose pour voir la disposition dans l'éditeur.
  3. Ajoutez les caméras. Ajoutez un ou plusieurs ULBRStageCameraComponent, placez et orientez chacun, puis réglez son ShotType (gros plan, plan moyen, OTS…) et ses FocusedRoles — le ou les rôles qu'il cadre. Pour un plan non lié à un participant, utilisez plutôt un tag de framing (Libretto.Stage.Framing.Wide / Group). Marquez toute caméra destinée aux choix du joueur avec bIsChoiceCam.

    A stage's Staging ▸ Tooling panel: its slots and camera components 4. Ajoutez des lumières (optionnel). Ajoutez un ou plusieurs ULBRStageLightComponent (une point light) pour éclairer la scène telle que les caméras la cadrent. Réglez le LitRole de chaque lumière sur le rôle qu'elle éclaire (Libretto.Stage.Roles.*) — pour qu'elle suive le personnage remplissant ce rôle — ou sur un tag de framing (Libretto.Stage.Framing.*) pour un éclairage global non lié à un participant. Les lumières utilisent le même système de rôles que les slots et les caméras, donc elles se déplacent avec le casting.

    A stage light component with its lit role set from the role/framing dropdown 5. Réglez la présentation (optionnel). Sur le stage lui-même : bUseStageCameras (désactivez pour placer les personnages mais conserver la vue gameplay — « 3C staged »), bLockPlayerCamera / bLockPlayerMovement, et CameraRulesStageOverride pour surcharger les règles de caméra pour ce stage uniquement. 6. Utilisez-le. Réglez ce Blueprint comme Stage Actor Class d'un sous-dialogue et Generate Sequences.

Piège

Un stage a besoin d'au moins une caméra valide ou il ne peut pas piloter la vue (une caméra dont la cut track finit vide rebascule la vue vers la caméra gameplay). Rappelez-vous que les caméras — et les lumières — ciblent des rôles, pas des personnages précis — c'est exactement ce qui permet à un stage de servir n'importe quel casting. Les lumières sont optionnelles : sans aucune, la scène utilise simplement l'éclairage existant de votre niveau. Le comportement fin des caméras (sélection de plan, règles, pilotage en éditeur) est couvert dans Caméras.

Voir aussi : Camera rules · Caméras · Core concepts — Stage