User Tools

Site Tools


gamedev:deigde:editors:conversation

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
gamedev:deigde:editors:conversation [2019/05/24 23:43] – ↷ Links adapted because of a move operation dragonlordgamedev:deigde:editors:conversation [2020/03/30 22:01] dragonlord
Line 1: Line 1:
-{{tag>deigde editor conversation}}+{{tag>igde editor conversation}}
 <WRAP youarehere> <WRAP youarehere>
 [[:start|Start Page]] >> [[:gamedev|Game Development with the Drag[en]gine]] >> [[gamedev:deigde|Drag[en]gine Integrated Game Development Environment]] >> **Conversation Editor** [[:start|Start Page]] >> [[:gamedev|Game Development with the Drag[en]gine]] >> [[gamedev:deigde|Drag[en]gine Integrated Game Development Environment]] >> **Conversation Editor**
Line 7: Line 7:
 The conversation editor allows to create conversation resources for your game. Conversation resources are *.deconvo files defining dynamic conversations. Complex dynamic conversation can be created with this editor. The conversation editor allows to create conversation resources for your game. Conversation resources are *.deconvo files defining dynamic conversations. Complex dynamic conversation can be created with this editor.
  
-====== Basics ====== +{{ :gamedev:deigde:editors:editor_conversation.jpg?nolink&400 |Conversation editor preview}}
-Conversation resources compose of a list of //**Topic Groups**//. Topic groups allow to organize conversations in a conversation file by groups of related topics. The developer can name the groups whatever fits his purpose. Each topic group then contains a list of //**Topics**//.+
  
-A topic is the actual conversation script played back by the game engine. Topic groups can have any number of topics. Conversation scripts are similar to movie scripts. They compose of //Conversation Actions// played back one after the other. In contrary to timeline based approaches the movie script based approach allows for better control of dynamic conversations where the actual length and spacing between actions can vary. Furthermore it makes modifying conversations easier since no re-timing or re-aligning along a timeline is required.+The editor window composes of the preview area, properties panel on the left side and the dope sheet on the bottom side.
  
-Conversations can play back with any number of //**Conversation Actors**// attached to the conversation. Actors can be added and removed any time during the conversation. Only limitation is that an in-game actor can be only attached to one running conversation at all times. If you need to control actors from different conversation scripts use //**Game Command**// actions. Conversation actors are identified in the conversation script either using their index (first actor is actor 0, second actor is actor 1 and so forth) or using one of their names. Each conversation actor is required to have a unique name which never changes. In addition while adding a conversation actor an //**Alias Name**// can be assigned. This allows to identify a conversation actor in the conversation script by a pre-defined name no matter what actor is attached to this alias name in the end. A typical example is to add the conversation partner actor always with the alias "npc" no matter what kind of NPC the player talks too. Otherwise you would have to deal with all possible unique conversation actor names. Using alias names is recommended. Unique names is best used to identify a specific unique actor. Actor indices are not recommended.+====== Preview Window ======
  
-Conversation resources are no engine resources. See the scripting language of your choice for how to load and use a conversation resource in your game.+The preview window shows the preview of the conversation. different cameras can be used to preview the conversation: **conversation**, **camera shot** and **free**.
  
-====== Conversation Playback ====== +The **free** camera is the default and allows to freely move around the sceneSee [[gamedev:deigde:editors:3dviewnavigation|3D-View Navigation]] for how to navigate the view using this camera.
-Conversation playback is handled by a game script provided by the chosen scripting language. Before starting a conversation the user has to add //**Conversation Actors**// taking place in the conversation from the beginning. Additionally the user can set //**Conversation Variables**//. Conversation variables are integer variables the conversation actions can read and modify. This allows to modify the behaviour of conversation scripts or to check the outcome of a conversationOnce all is ready the conversation playback starts by specifying a //**Conversation Group**// and //**Conversation Topic**//. Once the playback finishes a playback callback or listener is called to allow the game scripts to take the next actions.+
  
-====== Conversation Actions ====== +The **camera shot** camera shows the currently selected camera shotThis allows to set up new camera shots as well as previewing camera shots before deciding for one to use.
-Conversation actions provide the basic steps in a conversation scriptFor details see the [[gamedev:deigde:editors:conversation:actions|Conversation Actions]] page.+
  
-====== Conversation Conditions ====== +The **conversation** camera shows the conversation as seen in the game. Each time a camera shot action is encountered the conversation camera is switched and animated. If playback starts the camera is automatically switched to the **conversation** camera. 
-Conversation conditions provided support to evaluate a composed condition for use in branching actions. For details see the [[gamedev:deigde:editors:conversation:conditions|Conversation Conditions]] page.+ 
 +At the bottom of the preview view the **actor sub-titles** are shown. This is a generic preview sub title setup and does not reflect how sub titles show in the game (depends on script code and gui themes used). This box shows the sub title line of the last **actor speak** action that has been processed. Once the display time elapses the sub title is cleared. 
 + 
 +At the top of the preview view the **command box** is shown. If a **game command** or **actor command** is encountered the command is shown in this box and playback is paused. To continue playback press <key>MOUSE_LEFT</key> anywhere in the preview view or press <key>SPACE</key>
 + 
 +To help frame actors better you can enable the **rule of thirds** overlay from the view menu. If enabled transparent dotted lines are superimposed on the view dividing it into 9 equally sized cells. Typically the focal points on actors (typically the eyes) should align with one of the crossing points to obtain a good framing. 
 + 
 +====== Conversation Panel ====== 
 + 
 +{{:gamedev:deigde:editors:editor_conversation_conversation.png?nolink |Conversation panel}} 
 + 
 +//**Targets**//
  
-====== Targets ====== 
 Targets are used in different places in the conversation to define a point in space. They are identified using a unique identifier. Targets have a //**Position**// and //**Orientation**// relative to the target. The orientation is applied before the position. Targets are relative to a //**Conversation Actor**// or a //**Coordinate System**//. Targets are used in different places in the conversation to define a point in space. They are identified using a unique identifier. Targets have a //**Position**// and //**Orientation**// relative to the target. The orientation is applied before the position. Targets are relative to a //**Conversation Actor**// or a //**Coordinate System**//.
  
Line 32: Line 39:
 Using a //**Coordinate System Identifier**// (matching either //**Identifier**// or //**Alias Identifier**//) the target is relative to a conversation system. The conversation system has to be present in the conversation for this target to work. The //**Bone**// parameter is ignored for coordinate system targets. Using a //**Coordinate System Identifier**// (matching either //**Identifier**// or //**Alias Identifier**//) the target is relative to a conversation system. The conversation system has to be present in the conversation for this target to work. The //**Bone**// parameter is ignored for coordinate system targets.
  
-====== Camera Shots ======+ 
 +//**Camera Shots**// 
 Camera shots define parameters for dynamic camera handling while active. Camera shots are identified using a unique identifier. They modify the //**Conversation Camera**// behaviour over the duration of their shot. Various camera parameters can be set. Each parameter has a //**Start**// and //**End**// value. During the camera shot the parameter is linearly interpolated between the start and end value. Once past the duration the parameters stay at the end value. The following parameters are supported: Camera shots define parameters for dynamic camera handling while active. Camera shots are identified using a unique identifier. They modify the //**Conversation Camera**// behaviour over the duration of their shot. Various camera parameters can be set. Each parameter has a //**Start**// and //**End**// value. During the camera shot the parameter is linearly interpolated between the start and end value. Once past the duration the parameters stay at the end value. The following parameters are supported:
   * //**Camera Offset**//: Offset of camera relative to camera mount point. This is called the //**Orbit Center**//.   * //**Camera Offset**//: Offset of camera relative to camera mount point. This is called the //**Orbit Center**//.
Line 50: Line 59:
   * //**Lock Look-At target**//: Evaluates the look-at target only at the beginning of the camera shot. This prevents the camera following target movement to get steady shots.   * //**Lock Look-At target**//: Evaluates the look-at target only at the beginning of the camera shot. This prevents the camera following target movement to get steady shots.
  
-====== Look-Ats ======+ 
 +//**Look-Ats**// 
 Defines a look-at usable in the conversaion. Look-Ats are identified using a unique identifier. Each look-at defines the //**Target**// it is using. Different look-at can point to the same target. Defines a look-at usable in the conversaion. Look-Ats are identified using a unique identifier. Each look-at defines the //**Target**// it is using. Different look-at can point to the same target.
  
-====== Face Poses ======+ 
 +//**Face Poses**// 
 Defines a face pose to use on actors. Face poses are identified using a unique identifier. Each face pose has a set of //**Controllers**// indicating the blending of different facial states. Defines a face pose to use on actors. Face poses are identified using a unique identifier. Each face pose has a set of //**Controllers**// indicating the blending of different facial states.
  
-====== Gestures ======+ 
 +//**Gestures**// 
 Defines a gesture to use on actors. Gestures are identified using a unique identifier. Each gesture has an //**Animator Identifier**// to be send to the game script to pick the right animator for use by this gesture. The interpretation of the animator identifier is game specific. The optional //**Hold**// parameter can be used to hold the gesture after the duration. If not set a gesture finishes after the duration it is played over. Using hold is required to create looping gestures that can be held until another gesture blends over it. Defines a gesture to use on actors. Gestures are identified using a unique identifier. Each gesture has an //**Animator Identifier**// to be send to the game script to pick the right animator for use by this gesture. The interpretation of the animator identifier is game specific. The optional //**Hold**// parameter can be used to hold the gesture after the duration. If not set a gesture finishes after the duration it is played over. Using hold is required to create looping gestures that can be held until another gesture blends over it.
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +====== Basics ======
 +Conversation resources compose of a list of //**Topic Groups**//. Topic groups allow to organize conversations in a conversation file by groups of related topics. The developer can name the groups whatever fits his purpose. Each topic group then contains a list of //**Topics**//.
 +
 +A topic is the actual conversation script played back by the game engine. Topic groups can have any number of topics. Conversation scripts are similar to movie scripts. They compose of //Conversation Actions// played back one after the other. In contrary to timeline based approaches the movie script based approach allows for better control of dynamic conversations where the actual length and spacing between actions can vary. Furthermore it makes modifying conversations easier since no re-timing or re-aligning along a timeline is required.
 +
 +Conversations can play back with any number of //**Conversation Actors**// attached to the conversation. Actors can be added and removed any time during the conversation. Only limitation is that an in-game actor can be only attached to one running conversation at all times. If you need to control actors from different conversation scripts use //**Game Command**// actions. Conversation actors are identified in the conversation script either using their index (first actor is actor 0, second actor is actor 1 and so forth) or using one of their names. Each conversation actor is required to have a unique name which never changes. In addition while adding a conversation actor an //**Alias Name**// can be assigned. This allows to identify a conversation actor in the conversation script by a pre-defined name no matter what actor is attached to this alias name in the end. A typical example is to add the conversation partner actor always with the alias "npc" no matter what kind of NPC the player talks too. Otherwise you would have to deal with all possible unique conversation actor names. Using alias names is recommended. Unique names is best used to identify a specific unique actor. Actor indices are not recommended.
 +
 +Conversation resources are no engine resources. See the scripting language of your choice for how to load and use a conversation resource in your game.
 +
 +====== Conversation Playback ======
 +Conversation playback is handled by a game script provided by the chosen scripting language. Before starting a conversation the user has to add //**Conversation Actors**// taking place in the conversation from the beginning. Additionally the user can set //**Conversation Variables**//. Conversation variables are integer variables the conversation actions can read and modify. This allows to modify the behaviour of conversation scripts or to check the outcome of a conversation. Once all is ready the conversation playback starts by specifying a //**Conversation Group**// and //**Conversation Topic**//. Once the playback finishes a playback callback or listener is called to allow the game scripts to take the next actions.
 +
 +====== Conversation Actions ======
 +Conversation actions provide the basic steps in a conversation script. For details see the [[gamedev:deigde:editors:conversation:actions|Conversation Actions]] page.
 +
 +====== Conversation Conditions ======
 +Conversation conditions provided support to evaluate a composed condition for use in branching actions. For details see the [[gamedev:deigde:editors:conversation:conditions|Conversation Conditions]] page.
  
 ===== Preview Video ===== ===== Preview Video =====
 https://youtu.be/dyv8i6B5o2U https://youtu.be/dyv8i6B5o2U
gamedev/deigde/editors/conversation.txt · Last modified: 2020/04/05 00:25 by dragonlord