REDkit_Editor_Basic_Manual - port-of

advertisement

REDkit Editor – Designer Basic Manual

Content

Introduction ............................................................................................................................................. 3

Editor main window ................................................................................................................................ 3

World editing ........................................................................................................................................... 3

Asset Browser .......................................................................................................................................... 4

Editing object vertex................................................................................................................................ 4

Entity browser ......................................................................................................................................... 5

Scene editor ............................................................................................................................................. 5

Scene script tab ................................................................................................................................... 6

Starting Conditions tab ........................................................................................................................ 7

Actor definitions tab ............................................................................................................................ 8

Dialogset settings ................................................................................................................................ 8

Directors layout ................................................................................................................................... 9

Quest Editor........................................................................................................................................... 10

Basics ................................................................................................................................................. 10

Subgraphs .......................................................................................................................................... 11

Deletion markers & Patch Outputs .................................................................................................... 11

Facts DB ................................................................................................................................................. 11

Journal Editor ........................................................................................................................................ 12

Attitude Groups editor .......................................................................................................................... 13

Community Editor ................................................................................................................................. 13

Spawnset Sheet ................................................................................................................................. 13

Timetable Sheet ................................................................................................................................. 17

Background scenes Sheet .................................................................................................................. 19

Layers Sheet ....................................................................................................................................... 19

Action Points ......................................................................................................................................... 19

Creating new actionpoint .................................................................................................................. 19

Setting Pre and Post animations ....................................................................................................... 21

Job tree preview ................................................................................................................................ 21

Static Camera editor .............................................................................................................................. 21

Create ................................................................................................................................................ 21

CD Projekt RED REDkit

Page 1

Configuration ..................................................................................................................................... 21

Tests ................................................................................................................................................... 22

Cutscene template editor ...................................................................................................................... 22

Basics ................................................................................................................................................. 23

Cutscene timeline .............................................................................................................................. 23

Template tab ..................................................................................................................................... 23

World Partition editor ........................................................................................................................... 24

Quest Editor Blocks ............................................................................................................................... 26

Quest Editor Conditions ........................................................................................................................ 41

CD Projekt RED REDkit

Page 2

Introduction

The purpose of this manual is to show you the basics of REDkit Editor (called REDkit in further part of manual). This manual is not a full guide to each and every option of REDkit.

REDkit Editor consists of many tools, such as tools for creating quests, dialogues, animation trees, behavior trees, steering, environments, and so on. In this manual we'll focus on these tools, which are the most important from designer's point of view.

Editor main window

When you launch REDkit for the first time, you will have main editor window open. In this window you have access to all tools as well as options such as loading existing worlds, creating new ones, etc.

Some options are available only if you have certain world loaded (for example: loading saved game, editing world streaming, etc.)

To load world or create one, you just have to choose correct option from file tab.

Also, if you have level loaded, you can play the game in editor. To do that, you can use those buttons:

The first one will start the game normally, as it will start on a cooked game.

The second one will start the game without streaming, with layers you have loaded at the

 moment.

The third one is used to load saved games.

World editing

Once you load any world, it’s graphical layout will appear in editor's main window. You can navigate camera either by using mouse or WSAD.

You may have already noticed, that a list have appeared on you panel to the right, in Scene tab. It’s the list of layers, of which each level in REDkit consists. Layers are objects, on which all other things are placed, like meshes, waypoints, paths, and so on. Layers are divided into folders, which make a hierarchy.

Each layer and folder has its own icon, which indicates current state of layer/folder:

 colored icon means, that layer/folder is currently loaded

 gray icon means that layer/folder is currently unloaded

 half gray icon on folder means, that some layers within that folder are loaded, and some aren’t

 layer with red eye being crossed means that this layer is currently hidden (its content is not shown, until loaded). You can hide/unhide layer by RMB clicking layer and choosing

“hide/show” option.

NOTE: this applies for all users if you submit it to the server, it’s local option only.

CD Projekt RED REDkit

Page 3

 folder with red H letter means, that all layers from this folder will be hidden, when you’re playing the game (until it’s unhidden by any means). NOTE: this doesn’t apply to folders within this certain folder, which means, that all layers from deeper folders will still be loaded.

To put something on a layer you just have to select a layer, by clicking double LMB on a layer, and then choose desired object using RMB. You can either add general objects from pre made list (RMB), such as triggers, waypoints, etc., or you can add an object from Asset Browser (this tool will be described next).

You can copy, cut, paste, and move objects freely in the world – options for manipulating objects are easily accessed from the menu on the left side of main editor window. You can also choose to edit objects from all layers (Multi Layer button) or from the active layer only (Active Layer button; it means that no object from inactive layer can be selected by LMB).

Each object you put on a layer, as well as layers and folders, has properties that can be edited. To edit properties of an object simply select it on the Scene list, and then change tab to Properties. For example, you can edit here properties of a folder (flag isVisibleOnStart), which was mentioned earlier.

Asset Browser

Asset Browser is a tool used to access all files in REDkit repository. Double clicking on a file will automatically open a tool used for its edition. AB is also used to create new files (simply click RMB in any folder, and choose type of file you want to create), remove them, etc.

Aside from basic options AB also provides a hierarchy view and search option (you can filter files by type, or just search an item by name).

NOTE: If you want to add certain object from Asset Browser in world (entity template for example), you can either select it with LMB in Asset Browser, and then click RMB in world preview, or you can drag and drop from Asset Browser to world preview.

Editing object vertex

Many objects, such as triggers and path, are built from vertexes – for example basic trigger has four of them. You can edit those, creating non standard shaped objects, using Vertex Edit tool. To access this edition mode select object you wish to edit, change tab in main editor window from “Scene” to

“Tools”, and choose “Vertex Edit” tool.

Adding and removing vertexes is performed by holding ALT and clicking LMB in place you want to add or remove vertex.

NOTE: Be careful when editing trigger vertexes – concave triggers tend to be broken.

CD Projekt RED REDkit

Page 4

Entity browser

Entity browser is a tool used to create almost every object found in game (aside from raw meshes), including characters, items, animated objects, etc. Editor composes of three main parts: preview, components, properties, see picture below.

Preview window is showing entity meshes and other components (if you have correct filters enabled).

Component window shows all components within the entity in graphical form, new components can be added in components field by clicking RMB and choosing specific component type.

Properties window consists of multiple tabs, in which you can edit properties for whole entity (shown when no component is selected) as well as properties for each component (shown when you select component and choose Node properties tab).

NOTE: Each template has a class (either imported from C++ or from scripts), which determines most of entity properties (by default, each entity has “CEntity” class, which is also highest class in available hierarchy). To change entity class you must change into Template properties tab.

Scene editor

Scene editor is a tool used to write and implement dialogues. A dialogue created in this editor can be used later in game. Editor consists of four main tabs:

Scene script (most important tab, in which dialogue is written, etc)

CD Projekt RED REDkit

Page 5

Starting conditions

Actor definitions (in here you define what actors will take part in dialogue)

Dialogset settings (in here you define where will each actor stand in dialogue)

Scene script tab

Scene script tab consists of three windows: dialogue sections (in here you write text), scene graph

(here you define logical flow of dialogue), and properties.

Dialogue sections are parts of whole dialogue – each section is shown in scene graph part of editor as a single block.

NOTE: To add a new section click RMB in dialogue sections window or scene graph window, and chose right option from the list.

After adding a section you will notice, that a new block will be added in scene graph window. In this window you define logical construction of the dialogue. The signal (which means what is currently played/processed in game) will flow from the Input block to the Output block (where it exits from the scene). When signal goes through a connection into a dialogue section it means, that this section will be played.

Every section can consist of any number of dialogue lines, for each line you define Voicetag (id of actor, who is supposed to talk) and write text he is supposed to say.

You can also put one dialogue choice per every section, which will always be placed on the end of the section. The reason for that is, each choice adds new outputs to the dialogue section (as you will notice on the scene graph). When player chooses a choice, the signal in the graph exits through the chosen output.

CD Projekt RED REDkit

Page 6

Aside from dialogue sections, inputs and outputs, you can also add script blocks and conditions in scene graph window. A script block allows you to use any script written in Script Studio or C++ inside the dialogue (for example, a script adding a fact to the facts DB). A condition allows you to control flow of the signal in dialogue, for example: you can if player has a certain type of item.

Each block you add has its own properties, which can be edited in properties window. Most important properties for scenes will be listed below.

Global scene properties (edited when you have no blocks selected):

additionalVoicetags – here you define voicetags of actors, who will take part in dialogue but

have no spoken lines.

mayActorsStartWorking – important flag for gameplay dialogues only. Defines if actors taking part in dialogue can work in their actionpoints while talking.

Dialogue section properties (edited when you select dialogue section):

isGameplay – this flag defines if dialogue section is to be played as cinematic dialogue (with all characters in defined slots, without possibility of movement, with defined cameras) or as a gameplay dialogue (in form of oneliners / subtitles, without blocking player and NPCs)

hasCinematicOneliners – option for gameplay dialogues only, it defines if text should be displayed above NPCs head, or as a subtitle on screen.

pauseInCombat – if checked true, dialogue will pause if combat starts, and will be unpaused after combat ends. NOTE: it is advised to use it on gameplay dialogues only.

canBeSkipped – cinematic dialogue flag only, if checked true dialogue lines will be skippable.

numberOfInputPaths – by default this property has value of 1. If value is more than 1 you will notice, that dialogue section block will have new input and output (they will be numbered automatically). It is used for advanced control of signal flow in dialogue, if signal enters through input1, it will exit from output1, if it enters though input2 it will exit through output2, and so on. NOTE: This won’t work if you have choice in dialogue section.

Last but not least, there are cutscenes. Cutscenes can be played from the scene file, to add a cutscene you simply add cutscene block in scene graph window and link a proper cutscene from

Asset Browser in cutscene block properties. Cutscene sections can be edited in Dialogue Sections

window just as any other dialogue section.

Starting Conditions tab

This tab is mostly informative, most of its contents will be updated automatically as you work in other tabs. There are few options worth mentioning available in this tab:

Must Use Context Actor – this flag is important when making Voicesets, if scene is supposed to be a Voiceset it must have this option on true.

Invulnerable – this flag defines if NPC is supposed to be immortal for the time of dialogue.

Left item / Right item – in here you can add an item from droplist, which is supposed to be in

NPCs hand during the dialogue.

CD Projekt RED REDkit

Page 7

Actor definitions tab

This tab is very important for most dialogues, in here you define what actors should be taking part in the scene and how the game is supposed to find them. You can add new entries by clicking RMB. Not all of the fields need to be used in each dialogue, there are several combinations as described below:

Voicetag – this field is obligatory, it defines a Voicetag (Voice ID of an NPC) for the whole line.

Actor Tags – this field is to be used only, if your NPC has an unique tag, and if you want game to find him by this tag. This flag is optional.

Actor template – this field is used for two purposes: first, when the game will be searching for a fitting NPC to play a dialogue, it will check if potential NPCs are spawned from this template. Second, if game won’t find an NPC to play a dialogue, it will spawn a new one from this template, for the time being of dialogue only. NOTE: This flag is optional, but it is advised to use it as failsafe.

Appearance filter – this option allows you to define appearance name, which searched NPC will be required to have. This flag is optional.

Don't Search By Voicetag – this option forces the game to search for NPC using filters other than Voicetags, such as Tags, entity template, and appearances.

Dialogset settings

In this tab you define the place, in which dialogue will be played (used for cinematic dialogues mostly). To do that, you have to put a Scene Waypoint object in the desired place on location, and give it an unique tag in properties. After doing that you put that same tag in Position Entity column.

NOTE: If you leave this column empty, dialogue will either play in random position, or in the place of pivot (described later on).

You can also change type of setting for your dialogue (default is 4vs4), by linking from Asset Browser another type of setting into Dialogset column.

Second part of this tab consists of options, which allow you to put every NPC in desired positions.

Each slot in a dialogset has its own id number, which can be seen when putting Scene Waypoint on level. In slot number column you define this very spot for each NPC (Voicetag column).

NOTE: Putting same slot number for two NPCs or leaving this column empty will generate bugs.

CD Projekt RED REDkit

Page 8

If Is Pivot flag is checked true, the dialogue will be played where the NPC that is pivot is standing.

NOTE: If you have defined both scene setting tag and Is Pivot, then Is Pivot flag will be ignored.

If Is Hidden flag is checked true, targeted character will be invisible in dialogue until he plays enter animation. Also, he won’t be visible anymore after playing exit animation.

Another option worth mentioning in this tab is Safe Placement – if checked true, the dialogue will try to find safe position if defined position is wrongly placed (underground, not on walkmesh, etc).

Directors layout

Directors layout is a set of tools used to implement gestures and cameras for each dialogue. To change layout, click view -> directors layout. You will notice, that whole layout in scene script tab has changed showing a preview of dialogue, dialogue timeline, and sections preview.

Dialogue timeline is the most important part of directors layout – on this timeline you add camera events, character lookats, animations, add pauses between dialogue lines and so on. Each character present in the dialogue (even those, who are not speaking) has its own row on the timeline. When you add an animation event on characters row, this certain character will play defined animation in

CD Projekt RED REDkit

Page 9

defined moment. Also, there is a special row dedicated to the camera and you can add custom rows by clicking RMB on timeline.

By clicking LMB on an event you will notice, that properties of this event are shown on the right side of timeline. In these properties you can define for example what animation is meant to be played.

Dialogue preview plays dialogue with current cameras and animations, you can stop, skip, and change sections to the next ones by using buttons below preview. Sections window shows you active dialogue line and dialogue section. You can also preview dialogue with loaded level, to do that load layers with dialogue setting and press green globe button in dialogue preview.

Quest Editor

Quest editor is a tool, in which you gather all assets made in other tools and put them all into motion. You will use it to play dialogues, cutscenes, make NPCs walk, work, fight, etc. It is a vital tool for quest designers in which whole game structure is made.

Basics

Quest editor is a graphical editor, similar to Scene Graph Window in Scene Editor. Each block you use has its own properties, displayed on the left side of Quest Editor window.

Quests editor is based on the idea, that there is a signal, which starts in one place (Start block), proceeds through connections between blocks and starts multiple actions in the process. Signal can be diverted between multiple connections, which means that it can be in two or more places simultaneously. When any signal reaches End block, the whole quest ends killing any other signal that may still be going inside.

While implementing a quest, you will have to use many types of pause conditions (to hold signal in place, until certain requirements are met), conditions, and other blocks to control the flow of the quest properly.

CD Projekt RED REDkit Page

10

NOTE: It is suggested, that you put comments for most blocks you’re using (especially pauses and conditions), to make your quests more transparent for your co-workers.

To add a block, you simply click RMB and choose desired block type from menu (they are divided into sub categories). To connect two blocks you click and hold LMB on one block output, and drag connection to another block input (or vice versa). Clicking on a connection will mark it with X letter, which means it’s temporarily broken (signal won’t pass through it).

NOTE: A detailed list of quest blocks will be placed at the end of document.

Subgraphs

To keep a clean structure, blocks can be closed in subgraphs (in editor called phases). Subgraphs can have unlimited number of inputs and outputs, as well as another subgraphs embedded within them.

To enter a subgraph, simply double click LMB on a phase.

Deletion markers & Patch Outputs

Patch outputs and deletion markers are functionalities for patching process of the game.

The rule for deletion markers is simple – when you delete any block or group of blocks, they will be replaced with Deletion Marker block. If player had a saved game, in which signal was waiting on any of blocks within this Deletion Marker, the signal will exit through Deletion Marker output, without causing any blockers. To Remove Deletion Marker permanently just select it and delete it again.

Patch outputs are releasing signal whenever a saved game with active block, on which you added patch output, is loaded. You can add it by clicking RMB on a block and choosing the right option.

Facts DB

This is not a tool per se, but it is a system that many quests and other systems depend on. Facts Data

Base is a base of variables with number values assigned to them. They can be added or modified, either by scripts or via quest (quest block FactsDB Change). Later on, these facts can be checked in quest, scene or script conditions.

CD Projekt RED REDkit Page

11

Journal Editor

Journal editor is used to make hierarchical entries, which later on are added to players journal from quests. Editor itself consists of two main parts: journal hierarchy and content fields.

In journal hierarchy you see nodes, which later on are displayed in game journal. The highest one is

Act, in which quest takes place. Second, there is a quest. Under the quest, there are quest journal

phases.

Each node has its own properties, displayed in content fields part of journal. Some of them are:

name - for act and quest, it is a name displayed in game journal, for quest phases it is mostly for designers

Mappin tag – if you put here a tag of an object (a character for instance), and this certain quest phase will be active and tracked by player, there will be a mappin displayed on that object.

Quest tag – this field is optional, it is used for more advanced, customized mappins.

Description – in here the full version of journal entry is written.

Short TODO – in here you write short to do which will be displayed as a direct task for the player under the minimap (when the quest is tracked).

CD Projekt RED REDkit Page

12

Attitude Groups editor

Attitude group editor is a simple tool, used to edit definitions of groups and their attitudes towards each other. For example, there is a group called player and a group called harpies, by default, these two are set as hostile. It is accessible from Main Editor Window (tools -> attitude editor).

NOTE: Attitude between groups always works both sides, so for example you define only player vs

harpies attitude, there is no point in defining harpies vs player attitude.

To add a new Attitude Group you have to open a global csv file (in The Witcher 2 it was this one globals\attitude_groups.csv). After doing that, a group is automatically added to the Attitude Groups editor. Later on Attitude Group is assigned for each NPC and monster in their entity template.

Community Editor

Community editor is a tool used to spawn characters (and occasionally monsters), create their day/night cycles, etc. It is divided into few tabs, which are: Spawnset Sheet, Timetable Sheet,

Background Scenes Sheet and Layers Sheet.

Spawnset Sheet

- Comment field where you can enter information for you and your colleagues regarding entity that this whole verse line corresponds to.

- This is an ordinal field where we can put the name of our NPC. Name that you will put here will have NO EFFECT anywhere, it's just to keep things tidy for a designer.

- In this field we include the character entity we want to spawn. You can do it by selecting your desired character entity in Asset Browser and then in Community Editor, in

"Entity Template" field you click the "include" icon ( ).

- This field purpose is to exactly pinpoint what kind of appearance your character entity should have.

It comes in handy when your Character Entity has checked i.e. 12 different appearances from which every character spawned from this entity is then randomly choosing one of those 12 appearances.

BUT we don't want that, we want him to always spawn with appearance "citizen_poor_7". So instead of creating another entity with only 1 appearance checked, we fill out this field in Community Editor and just type our desired appearance name (in this case it would be "citizen_poor_7").

We can also add more than 1 appearance in this field, and that means that when the character is spawned it will choose one by random from those 2 appearances that we typed in (instead of default

12 appearances checked in the Entity).

CD Projekt RED REDkit Page

13

- This is an unused field. Will be deleted in future iterations of the Community Editor. DO

NOT TOUCH, leave it at 1 :]

- In this field we can assign unique Tags to the entity we spawn in this verse. You can add multiple tags here. So assigned tags overwrite tags assigned in entity template.

NOTE: If you fill this field, all of the tags defined inside Character Entity will be ignored and swapped to those defined in Community Editor.

This tag corresponds with the field "Mappin" in Journal Editor

This dropdown list enables you to choose between 4 different mappin icons. They are:

CMPT_None - standard mappin with exclamation mark icon.

CMPT_Inn - Mappin icon symbolizing Inn

CMPT_Shop - Mappin icon symbolizing vendor NPC

CMPT_Craft - Mappin icon symbolizing crafting NPC

- This is a very helpful field. It allows you to assign a specific script action as soon as the

NPC is spawned without quest scripting. Another good thing is that the NPC gets to executing assigned task almost without any delay. So to set up an initializer you right click on the "Initializers" field and choose "Create Object".

A window will pop-up:

CD Projekt RED REDkit Page

14

After clicking the blue arrow another menu will pop up with available script functions. You will be able to find the description of mentioned functions in "Quest Editor" chapter.

- If this is checked as true, it means that the NPC will always spawn outside of camera's field of view. Important quest NPC's should have this left unchecked.

- another commentary field, self-explanatory.

- the name of the story phase that NPC will have their work assigned to. This should preferably be named with the number of the quest in the beginning followed by an underscore and explanatory name of the faze, regarding what this NPC will be doing. i.e.

"q109_sneaking_garden".

Every character entity verse can have multiple story phases. For example this is a screenshot of

Vernon Roche community file:

CD Projekt RED REDkit Page

15

- This field is used to manage the quantity of NPCs regarding the present hour in the world.

- amount of NPCs spawned from this verse. If we put "2" here, that will spawn 2 NPCs from the character entity assigned in "Entity Template" field.

- The time that has to flow from death of this NPC to his respawn.

- Self-explanatory, if true, than once this NPC is killed, he will never respawn again.

- This field is corresponds to the "Name" field in "Timetable" sheet in

Community editor. Basically it means what timetable will be activated once the Story Phase in this verse is activated.

- Amount of time that has to go by from spawn command (by story phase setter in the

Quest Editor) to actual appearing of the character in game.

- Here we can put in the tag of a waypoint where our character should spawn. Spawning NPCs in waypoints won't make them work in action points (this happens only by defining the Timetable), they will only appear in given location and be Idle.

NOTE: If "Start In AP" is True, then this field becomes void (and there is no reason why you should fill it up, if you are using action points).

CD Projekt RED REDkit Page

16

- Here we can put a tag of a waypoint/actionpoint where NPC will go to before despawning (after being given the command, despawn by Story Phase Setter in quest editor).

NOTE: If this field is left blank, and NPC will get a command to despawn he will disappear immediately in place where he stands at the moment.

- if true, than NPC will spawn in action point defined in his Timetable.

- if true, than NPC will keep working in action point where he first started. If we want to create patrolling NPCs this has to be false.

- if true, NPC will never turn into a stub (his graphical and script components will always be fully loaded no matter how far away are we from this particular NPC). This should be checked true only for Quest NPCs that there is a risk of losing the quest signal if the character turns into a stub.

- if true, the position on the world of this NPC will NEVER be saved. This is used for background community NPCs mostly but also to NPCs who don't move around, just stand in 1 action point.

- this field fills itself automatically when resaving community file on level with spawnpoints/actionpoints. Do not worry about it :]

- This allows you to define the radius from the NPC to the player on which the NPC will be spawned/despawned.

Timetable Sheet

- This field corresponds to the "Timetable Name" field in "Spawnset" sheet in Community editor. The name preferably should start with the quest number followed by an underscore and an explanatory name, i.e. "q101_roche_argue".

- This field is used to manage the daily cycle of routines of an NPC. You can set different jobs in different action points in time intervals divided as you please (you can make intervals every hour, even every minute).

- Here you assign the layer with the desired action point. You do it by:

CD Projekt RED REDkit Page

17

In world editor, select your desired layer, double click it should turn bold:

Now, go back to the Timetable sheet, and in "Layer name" click the include button ( ).

- this is a job category that we want our NPC to execute. Job category is defined in Action

Point editor (see the right chapter on more info). There can be more than 1 category i.e.:

This means that this woman, will (from 15:00) by random do one of those 3 defined categories. How this work in engine: spawn NPC --> find Layer defined in "Layer Name" --> find categories defined in "Category" --> by random choose 1 --> find an Action Point on the given layer with the chosen Category.

NOTE: Category defined here HAS TO BE the same as the one defined in Action point on the given layer. Otherwise NPC WILL NOT WORK IN HIS ACTION POINT.

- This is the weight of the category localized in the same verse. Following the example from above, if this peculiar woman has 3 categories "dining woman", "cooking woman" and "household" and we leave first two of them the value of 1, and then "household" will have a value of 6, that means that household category action points will be more often chosen by random then the others.

CD Projekt RED REDkit Page

18

- this defines in which peculiar Action Point NPC will spawn. This field comes in handy if on 1 layer we have 3 different action points but with THE SAME category. For example, on 1 layer we can have an action point with category "household" that has a job for washing the floor, cooking and knitting, but we want the lady to spawn ALWAYS at the beginning washing the floor. That means we have to tag the Action Point in the world, and then put the same tag in this field here ("AP Tags").

- this field fills itself automatically. Do not worry about it :]

Background scenes Sheet

This sheet will most definitely be removed in future iterations of the REDkit. Do not worry about it, do not touch :]

Layers Sheet

This sheet will most definitely be removed in future iterations of the REDkit. Do not worry about it, do not touch :]

Action Points

Action points are waypoints, in which characters are playing defined animations (animations are defined in special editor – Job Tree editor).

Creating new actionpoint

To create an Action Point we need to create an Entity. We must set its class to CActionPoint and add

CActionPointComponent. In CActionPointComponent properties we need to link JobTree file to jobTreeRes.

CD Projekt RED REDkit Page

19

To have a proper, working JobTree, we need to create a Job Tree file, set at least one category and animations we want to be used. After opening job tree we click on <sequence x1> in the left tab and in the middle tab we see its properties:

Valid Categories: array of action point categories – used in Community timetable.

Selection Mode: SM_SEQUENCE – animations will play in order, from top to bottom.

SM_RANDOM – animations will play randomly.

Iterations – defines how many times a sequence will be played.

Left Item/Right Item – we choose what item in which hand should be placed

Next we right-click on <sequence x1> and choose “Add enter animation”. On newly created node we right-click and choose “Add child node”. On the top <sequence x1> we right-click and choose “Add leave animation”. On the child <sequence x1> we right-click and choose “Add enter animation”.

We’ve created a simple job tree.

Now we click on first child (it will be pre- animation) and on the middle tab we have:

category name: we define which set of animation should be used for this node (to create a category name, we need to open globals/animations.csv, add a category name in friendlyName and path to animation set in animsetDepotPath)

Anim Name: choose which animation should be played (animations that should be played at

 the beginning have names with “start” in it)

Anim Blend In/Out: defines how long the blends between previous and next animation should be

CD Projekt RED REDkit Page

20

Is Lookat Enabled: defines if NPC will have lookat on player when playing this animation

Place: not used

Disable Path Agent: if true, NPC won’t be pushed out from AP if there’s collision (used for action points like sitting at the desk

In the settings tab we have:

Left/Right Remove at end: defines if at the end of action (whole sequence of animations)

NPC will remove item from his hands

Left/Right Drop on break: defines if when breaking the action, NPC will drop item from his hands

Can React: defines if NPC during action will have any reaction on player (reactions are defined in NPC entity template)

Setting Pre and Post animations

We can set if we want pre and post animations to play when: NPC is spawned in AP – i.e. sitting at the desk (with pre animation off he’ll spawn already on the chair without sitting on it); NPC chooses to use the same AP (with both pre and post animations off, he’ll continue to work in AP without getting up and sitting down).

Job tree preview

After creating and setting a job tree we can check in preview if everything looks good and we can check how NPC will look when using AP with this job tree in editor without starting the game. In the preview tab we right-click and choose “Use selected entity”, after selecting proper NPC entity. On the bottom we choose from drop-down list category of action point. If we want to check it in preview we click Play button. If we want to check it in the world, we must place action point entity on the location and when it’s selected, click the Globe button.

Static Camera editor

Static cameras are used mostly to make short scenes in quests. You can create them using simple editor, embedded in tools amongst level editing tools. To open this editor change tab in main editor window from “Scene” to “Tools”, and choose “Camera” tool. Static camera tool consists of four tabs, which are: Create, Configuration, Tests and Lock.

Create

In “Create” tab you can create camera from view, which means that newly created camera will have the same position, as your in-editor camera in moment of creation.

NOTE: To create camera, you must have active selection of a layer, on which this new camera object will be created.

Configuration

In “Configuration” tab you have access to all properties of selected camera (those properties can also be reached by using “Properties” tab).

CD Projekt RED REDkit Page

21

NOTE: Remember not to delete “static_camera” tag from newly created camera. If you do, it won’t be displayed on static camera list anymore.

Most important properties, aside from basic properties like tags, are:

activationDuration – a time value, means how long camera will blend from normal camera to custom camera when activated. 0 value means that it won’t blend.

deactivationDuration – a time value, means how long camera will blend from custom camera to normal camera when deactivated. 0 value means that it won’t blend.

timeout – a time value, means how long will the camera be active before it will automatically deactivate. 0 value means that it won’t deactivate automatically.

fov – desired field of view of custom camera.

animState – you can choose premade camera animation for custom camera from droplist.

guiEffect - you can choose premade camera effect for custom camera from droplist.

blockPlayer – if true then player won’t be able to move as long as custom camera is active.

resetPlayerCamera – if true then after deactivating static camera will return to its default position.

blockPlayerButtonInteractions – if true then player won’t be able to activate any interactions as long as static camera is active.

Tests

Tests tab is mostly about checking how blends between cameras look, etc. To activate a camera, simply choose it from the list and press “Activate”.

NOTE: Camera will blend to Static Camera from the position it actually is (so it will be your camera position in editor).

You can also test multiple cameras one after another, creating sequences of them. To do that, simply click “Multi test” checkbox, select correct cameras from the list at bottom of Tests tab, and press

Activate button.

Cutscene template editor

Cutscene animations are fully made in Motion Builder, however, cutscene templates may be edited in REDkit. Edition options are quite limited, as you will not have any options to change animations or cameras, but there are some options worth mentioning.

CD Projekt RED REDkit Page

22

Basics

You can use cutscene template editor to preview cutscenes in preview window (Play in preview button) or in main editor window (Play in game button).

NOTE: To play cutscene in proper place on level, you must have layers with correct Root point loaded. If you won’t, the cutscene will play in 0.0.0 point of the location.

Cutscene timeline

This part of cutscene template editor is used for two purposes – to skip parts of the cutscene, when previewing cutscene, and for placing certain events on timeline. Events are used for many purposes, such as: adding effects for cutscene, attaching sounds and music to cutscene, adding dialogue lines for cutscene, etc.

Template tab

This tab contains most interesting options from designers point of view:

Point – in here you define tag of a waypoint, which will become cutscene Root when defined.

actorsDef – in here you define what actors are going to take part in cutscene. o Tag – if you define this field, cutscene will try to get an NPC with this tag from the game, to play the cutscene. o voiceTag – if you define this field, cutscene will try to get an NPC with this Voicetag from the game, to play the cutscene. NOTE: This field must be filled, if character is talking in cutscene. o template – this field must be filled for two purposes: first, it is needed to play cutscene in preview. Second, if cutscene won’t find NPC in game it will spawn a new one, for time being of cutscene. o appearance – here, you can define a specific appearance for an actor. If filled, the newly spawned NPC will be spawned with this appearance, and when cutscene will be searching in game for actors, it will filter them by this certain appearance.

CD Projekt RED REDkit Page

23

o type – here you define, what a certain actor is. There are three categories:

CAT_Actor, when you choose this option, character will be teleported to his last position in cutscene after cutscene ends. CAT_Prop, when you choose this option, actor will not be teleported after cutscene ends. Cat_Camera, which is reserved for player camera.

finalPosition – here you can put tag of an waypoint, to which actor will be teleported after cutscene ends.

killMe – if checked true, actor will be killed after cutscene ends.

useMimic – if checked false, actor mimic animations will not be played in cutscene.

World Partition Editor

As was said in first few parts of this manual, each level consists of folders and layers, on which objects are places. World Partition editor is a tool used to create streaming partitions, which are later loaded in game (by triggers, doors, etc). A streaming partition is, simply speaking, a preset of certain folders, which are to be loaded.

Editor is divided into three parts – partitions list (here you can add or remove partitions by clicking

RMB on the list), layer groups (this list shows layer groups from currently loaded level) and partition

content (here are listed folders, which are added to selected partition).

As you can see, partitions are created hierarchically. If a partition from a lower node is loaded, then all layers from higher node are loaded as well. For example: if you will load “dwarf_city” partition, then layer groups from “common” partition will be loaded as well.

To add layer groups into partition, you have to select partition which you want to edit in partitions window, and double click LMB on the layer group which you want to add to the partition, in layer groups window.

CD Projekt RED REDkit Page

24

NOTE: Layer groups window shows only folders containing layers. Single layers are not shown on this list (they are being loaded, when folder containing them is loaded).

Later on, when the partitions list is completed, each partition has to be loaded somewhere in game

(either by using special triggers, quests, or streaming doors).

CD Projekt RED REDkit Page

25

BLOCK NAME

CD Projekt RED REDkit Page

26

Quest Editor Blocks

PROPERTIES DESCRIPTION

This QBlock is used to apply a custom behaviour to an NPC.

saveMode: if activation of this QBlock should block the possibility of saving game.

activationTimeout: how long the function should try to execute before dropping the task.

behaviour: Assigned from Asset Browser specific CBehaviourGraph file.

affectedNPCs: tags of the NPC's that this behaviour should be applied to.

expectedCount: number of NPC's with given

(in "affectedNPCs") tag on location that should be present before applying this behaviour.

This QBlock is used to activate Static Camera that is present in the world (it deactivates player camera for the time being).

cameraTag: tag of the camera present in the world that you wish to activate.

CD Projekt RED REDkit Page

27

This QBlock is used to deactivate Static

Camera that is present in the world and is active (it deactivates static camera and brings back Player Camera).

cameraTag: tag of the active camera that you wish to deactivate.

This QBlock is used to switch between two

Static Cameras present in the world, thanks to this you can smoothly swap and blend between them. First of them has to be already active.

currCameraTag: current ACTIVE camera.

nextCameraTag: the next camera that should be activated.

Those two QBlocks mark where the signal in quest starts and where it ends.

Start QBlock:

showLoadingScreen: if true then when the world is loaded and scripts are being executed there will be persistent loading screen present until something will take it off

(i.e. dialogue scene, QFadeIn script etc.).

With this Qblock you can send a signal through with checking a given Condition and then either propagating the signal with TRUE or FALSE output.

CD Projekt RED REDkit Page

28

This Qblock works on the same CONDITION basis as the previous one. The only difference is that it is latent, so it will hold signal until the condition is met (and then propagates it by output).

This Qblock is used to swap between worlds i.e. between Vergen and Loc Muine.

worldFilePath: link to the localization of the world file.

loadingPartition: Partition that will be loaded when the world starts.

loadingMovieName: if there should be an

.usm movie played during loading we can put the file path here.

Hide layers is used to show/hide whole

FOLDERS in current world

layersToShow: Folders we want to unhide

layersToHide: Folders we want to hide

syncOperation: if true quest signal won't progress until all of the folders are fully visible and loaded/invisible and unloaded

This QBlock is used to swap between streaming partitions in the currently loaded world.

worldPartition: The partition we want to change to (partition given here will be loaded after signal reaches this qblock).

CD Projekt RED REDkit Page

29

loadingScreenPath: link to the custom loading screen we want to apply

transitionMode: how and in what manner the blackscreen should be taken off (autofade in/perm blackscreen etc.)

loadingMovieName: if we want to play an

.usm while loading you put the name here.

Subtitles: subtitles for the movie. You put

StringID here for the desired subtitles.

This QBlock is used to clear a saveable Sound from an Entity (character, waypoint). Used in combo with quest functions to turn off the sound.

entityTag: the tag of the entity that the sound is playing on.

Used for enable/disable Denied Area.

entityTag: tag of the denied area

enabled: self explanatory

Used for enable/disable Exploration Area.

entityTag: tag of the exploration area

enabled: self explanatory

This is used for adding new Facts to the Facts

Database.

factID: name of the fact

value: what value should be added

__________________________________________________________________________________

__________________________________________________________________________________

__________________________________________________________________________________

Creates a save game file. EVERYTIME THAT

SIGNAL PASSES THROUGH HERE!!!

fileName: the name of the save file that will be created.

enableSaving: if false it will just pass the signal through.

ignoreSaveLocks: ignores "SaveBlocker" flags.

Qblock used to manage time.

--------------------------------------------------------

CPauseTimeFunction:

Pause: if true the time will pause.

Force: if true it will execute immediately.

--------------------------------------------------------

CSetTimeFunction:

newTime: what exact time we want to set.

callEvents: if true, then i.e. if you change the time from 08:00 to 12:00 and somewhere along quest scripts you have a pause waiting for 10:00, it will enable it to propagate the signal further.

--------------------------------------------------------

CShiftTimeFunction:

timeShift: how much we want to shift the time (how many days/hours/minutes/seconds we want to add to the current time on the clock)

callEvents: if true, then i.e. if you change the time from 08:00 to 12:00 and somewhere

CD Projekt RED REDkit Page

30

CD Projekt RED REDkit Page

31 along quest scripts you have a pause waiting for 10:00, it will enable it to propagate the signal further.

Character Customizer is used to execute special actions on Player. Mostly functions added here are focused on Virtual Containers

(see Virtual Container page for more info).

CD Projekt RED REDkit Page

32

Formation Members is used to set NPC or

NPCs as a members of specific formation marked by formationTag. Formation

Members can be used to add new members for already existing formation. It's important to know that it can operate only on existing formation.

Fields:

formationTag: tag of formation we are operating at

formationImportance: this enum indicates importance of a formations depending on other gameplay systems. For example

AIP_Normal means that formation members will start fighting when facing enemy.

AIP_Highest means that they will ignore the enemy in the same situation as mentioned above.

membersTags: it's an array of formation members tags. Those tags should indicates

NPCs.

tag: tag of a formation member. It should indicate an NPC

count: expected amount of members of given tag

backgroundTask: when set to false it will add only those members which were already spawned when the function was activated.

When set to true it will continuously be adding new members of given tag as soon as they appear on the level.

polingFrequency: this flag indicates how

CD Projekt RED REDkit Page

33 often system will ask for a member of given tag. It works only when backgroundTask is set to true.

Formation Manager is used to create new formation.

Fields:

formationTag: tag of formation we are creating

formationImportance: this enum indicates importance of a formations depending on other gameplay systems. For example

AIP_Normal means that formation members will start fighting when facing enemy.

AIP_Highest means that they will ignore the enemy in the same situation as mentioned above.

membersTags: it's an array of formation members tags. Those tags should indicates

NPCs.

tag: tag of a formation member. It should indicate an NPC

count: expected amount of members of given tag

patterns: this is a group of parameters that defines a formation.

Id: this is the input name for your formation on the Formation Manager. Formation is created by activating this input.

anchor tag: this is a tag of a point around which formation is created. It can be any entity located on the level including

CD Projekt RED REDkit Page

34 formation member. The only rule is that it must be placed on a walkable surface.

pattern: this field defines formation behavior. The most common used is

CRlativeFormationPatern. It covers most cases.

Formation Movement is used to define the way formation moves.

Fields:

movementMode: this field defines movement type. Each movement type has its one specific parameters ( names are intuitive). Movement modes are as follows:

- CMoveFPGoTo: formation moves to a point. It can be any entity placed on a walkable surface on a level.

- CMoveFPFollowPath: formation moves along a path. Path is a special entity placed on a level.

- CMoveFPFollowNode: formation follows moving entity. It can be PLAYER or an NPC.

Important: formation can move with companion - NPC or PLAYER. Following parameters are used to define how the formation should behave with companion:

companionTag: this is a tag of companion.

This field should indicate an NPC or PLAYER.

If this field is not defined other parameters regarding companion will be ignored.

maxAwayDistance: this field defines maximum distance between companion and

CD Projekt RED REDkit Page

35 formation. Formation will wait for companion if the distance is greater than the define value.

movementRestartDistance: formation will restart movement when distance between the companion and formation is equal or less than define value.

matchCompanionSpeed: when this field is set to true, formation will try to match companion movement speed.

shouldAlwaysWait: when this field is set to true formation will wait for companion when he is too far in the back or too far in the front. When this field is set to false formation will wait for the companion only when he is too far in the back.

This is used to emit an Interest Point signal with chosen type to influence Reaction

System in nearby NPCs.

(on more for Reaction System look in

Reaction Editor section).

<-- Those are the types of signal we can emit.

CD Projekt RED REDkit Page

36

This is used for any kind of rewards, but also to give items to the player.

It is pretty self-explanatory.

With this Qblock we control our NPC's.

There are 2 main actions you can take:

CActivateStoryPhase and

CDeactivateStoryPhase.

Spawnset: file path to the community file we want to activate.

Phase: story phase that we wish to activate for the spawned npcs.

streamingPartition: this is old and you

CD Projekt RED REDkit Page

37 should not touch that.

Self-explanatory

locationTag: the tag of the waypoint we want the player to teleport to.

Distance: the distance from the waypoint that player is teleported to.

actorTags: tags of actors we want to teleport.

cameraCorrectionIfPlayer: if true, then camera will always face the same way as

Geralt.

This Qblock is used to command

ActionUseDevice to an NPC, i.e. handling a lever (go to the device slot -> execute animation -> execute post animation

Logical QBlock that will propagate the signal

ONLY after all its inputs are activated.

You can add multiple inputs.

Logical QBlock that will propagate the signal from ONLY ONE input.

You can add multiple inputs.

CD Projekt RED REDkit Page

38

Quest Log Entry is used to either finish tracking journal quest with success or fail.

questLog: path for the questLog file.

entryGuid: phase name in Journal Editor

rewards: if Player should be granted any rewards with this journal progression.

ShowInfoOnScreen: show on screen notification about journal update.

Quest Log Phase is used to progress the journal phases (use "Enter" input)

questLog: path for the questLog file.

phaseGuide: phase name in Journal Editor

rewards: if Player should be granted any rewards with this journal progression.

ShowInfoOnScreen: show on screen notification about journal update.

dontTrack: by default every time journal is updated, the updated quest is set to Track unless this checkbox is FALSE (used for sidequests mostly).

Quest Log Track is used for swapping the currently tracked quest in journal.

questLog: path for the questLog file.

phaseGuide: phase name in Journal Editor

rewards: if Player should be granted any rewards with this journal progression.

infoGui: send info to Gui about changes in quest tracking

CD Projekt RED REDkit Page

39

This Qblock is used to inject quest choices into default dialogues.

Scene: path to the scene file we want to inject.

targetScene: path to the scene file we want to inject the quest choice INTO.

This is used to create an interaction dialogue

(a dialogue that will start only after coming up to the NPC and activating the "TALK" interaction)

Scene: path to the scene file we want to inject.

actorTags: Tag of the NPC we want to talk to.

Interrupt: if true this scene dialogue will have highest priority above all else (reactions, gameplay dialogues etc).

Regular scene QBlock used to activate dialogues via quest.

Scene: path to the scene file we want to inject.

forcingMode: Define dialogue strategy regarding handling npcs (if npc's are missing, should the dialogue spawn them by itself, or should it wait for them to spawn etc.)

Interrupt: if true this scene dialogue will have highest priority above all else (reactions, gameplay dialogues etc).

CD Projekt RED REDkit Page

40

This Qblock comes in handy when we want to command an NPC to move. You can tell

NPC to execute simple MoveTo command (to a tag-specific location), MoveTo on a Path placed in the World Location and many more.

This is probably the most often used Qblock in quest editor. Whatever script functionality cannot be found in other QBlocks described in this table, you most definitely will find here.

CONDITION NAME

QuestInsideTriggerCondition

Quest Editor Conditions

PROPERTIES DESCRIPTION

triggerTag: tag of the trigger we want to use

tag: tag of the NPC that should affect given trigger

isInside: if true, when character of given tag (NPC or PLAYER) is inside the trigger, signal will propagate with TRUE output, otherwise with FALSE output; if false, when character of given tag

(NPC or PLAYER) is outside of the trigger signal will propagate with

TRUE output, otherwise with

FALSE output

everyone: all of npcs with this tag spawned should be inside or outside the trigger

CD Projekt RED REDkit Page

41

QuestEnterTriggerCondition

CD Projekt RED REDkit Page

42

triggerTag: tag of the trigger we want to use

tag: tag of the NPC that should affect given trigger

OnAreaEntry: if true signal will propagate with TRUE output when character of given tag is entering the area, otherwise it will propagate with FALSE output; if false signal will propagate with TRUE output when character of given tag is leaving the area, otherwise it will propagate with FALSE output;

IMPORTANT:

CQuestConditionBlock checks condition immediately. It doesn't wait for anything. That's why checking

QuestEnterTriggerCondition with condition block is not a good idea

- it's almost impossible to match very moment of entering the trigger with activation of condition block. The best for that kind of purposes is the

CQuestPauseCondition.

QuestFactsDBCondition

CQuestQTEResultCondition

CD Projekt RED REDkit Page

43

factId: name of the fact we want to check the value of.

queryFact: math function that should be used towards value of the fact

value: Desired value we compare to the current value of the fact.

compareFunction: selfexplanatory

sinceTime: you can use this to check if lately the fact has been changed by given value.

Check if QTE condition was met.

Name: name of the QTE event localized in the cutscene file.

CQuestActorCondition

CD Projekt RED REDkit Page

44

States and conditions we want to check on a specific NPC/Player.

actorTag: tag of the NPC/Player

checkType: type of condition we want to check towards given

NPC/Player

CQuestTimeCondition

CQuestTimePeriodCondition

CQuestInteractionCondition

CD Projekt RED REDkit Page

45

Check if current time is the same as given in this condition.

Does current time fit in given period (from - to).

Checks if the given interaction is used (activated)

NOTE : this is a condition used only in latent condition, and

ONLY for Player.

interactionName: tag of the interaction we want Player to use.

ownerTags: Tag of the player.

CQuestFightCondition

CQuestReactionCondition

CD Projekt RED REDkit Page

46

Used to check combat outcomes

(killed, stunned etc)

Tag: tag of an NPC/Player we want to check

referenceValue: amount of tag holders that should be checked.

damageMode: what outcome of battle we want to check.

This is used to check if any of NPC

Reactions is active.

fieldName: type of reaction

actorTags: tag of the actor that reacts.

CQuestEngineTimeWaitForCondition

CQuestActorLifeStateCondition

CQuestCutsceneCondition

CD Projekt RED REDkit Page

47

Condition for latent pause, how long it should hold the signal before propagating it (in

EngineTime)

Used to check if an NPC/Player with given tag is alive.

actorTag: actor tag

isAlive: if false, checks if npc/player is dead.

Used only for pause Condition

(its latent)

And it will propagate the signal after the cutscene event is activated.

cutsceneName: name of the cutscene we want to check

event: event applied inside the cutscene file

CQuestTagsPresenceCondition

CQuestRealTimeDelayCondition

CQuestCameraFocusCondition

CD Projekt RED REDkit Page

48

Used to check the amount of tags present in World.

Tags: tag that we want to check quantity of.

All: gathers all the characters with this tag.

howMany: how many characters with this tag should be present.

Used only in latent pause conditions.

How long in real world (real seconds) has to pass before propagating the signal further.

nodeTag: tag of the entity that player should be looked at

angleTolerance: tolerance of the angle of Player Field Of View to pass this condition.

CQCIsPlayerMeditating

CQCIsplayerResting

CD Projekt RED REDkit Page

49

Used to check if player is meditating

isInMeditationMenu: if true it will propagate signal with TRUE output when the Meditation panel is open, otherwise it will propagate signal with FALSE output.; if false it will propagate signal with TRUE output when the Meditation panel is not opened, otherwise it will propagate signal with FALSE output.

Used to check if player is resting.

isInRestingMenu: if true it will propagate signal with TRUE output when the Resting panel is open, otherwise it will propagate signal with FALSE output.; if false it will propagate signal with TRUE output when the Resting panel is not opened, otherwise it will propagate signal with FALSE output.

CQCIsBlackscreen

CD Projekt RED REDkit Page

50

Used to check if Blackscreen is present.

M_isSceneVisible: if false, it will propagate with TRUE output when there is blackscreen visible, otherwise it will propagate with

FALSE output ; if true it will it will propagate with TRUE output when gameplay is visible, otherwise it will propagate with

FALSE output.

Download