Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 50

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...........................................................................................................................7
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.......................................................................................................20
Job tree preview...............................................................................................................................20
Static Camera editor.............................................................................................................................21
Create...............................................................................................................................................21

CD Projekt RED REDkit


Page 1
Configuration....................................................................................................................................21
Tests.................................................................................................................................................21
Cutscene template editor.....................................................................................................................22
Basics................................................................................................................................................22
Cutscene timeline.............................................................................................................................22
Template tab....................................................................................................................................22
World Partition editor..........................................................................................................................23
Quest Editor Blocks..............................................................................................................................25
Quest Editor Conditions.......................................................................................................................40

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.

CD Projekt RED REDkit


Page 3
 NOTE: this applies for all users if you submit it to the server, it’s local option only.
 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:

CD Projekt RED REDkit


Page 5
 Scene script (most important tab, in which dialogue is written, etc)
 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
Quest Editor Blocks
BLOCK NAME 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 26
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 27
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 28
loadingScreenPath: link to the custom
loading screen we want to apply
transitionMode: how and in what manner
the blackscreen should be taken off (auto-
fade 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

CD Projekt RED REDkit


Page 29
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
__________________________________________________________________________________

CD Projekt RED REDkit


Page 30
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.

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).

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.

CD Projekt RED REDkit


Page 31
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
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:

CD Projekt RED REDkit


Page 32
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
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.

CD Projekt RED REDkit


Page 33
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
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.

CD Projekt RED REDkit


Page 34
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 35
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
should not touch that.

CD Projekt RED REDkit


Page 36
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.

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

CD Projekt RED REDkit


Page 37
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 side-
quests 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
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.

CD Projekt RED REDkit


Page 38
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 39
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.

CD Projekt RED REDkit


Page 40
Quest Editor Conditions

CONDITION NAME PROPERTIES DESCRIPTION


QuestInsideTriggerCondition 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 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 factId: name of the fact we want


to check the value of.
queryFact: math function that

CD Projekt RED REDkit


Page 42
should be used towards value of
the fact
value: Desired value we compare
to the current value of the fact.
compareFunction: self-
explanatory
sinceTime: you can use this to
check if lately the fact has been
changed by given value.

CQuestQTEResultCondition Check if QTE condition was met.

Name: name of the QTE event


localized in the cutscene file.

CD Projekt RED REDkit


Page 43
CQuestActorCondition 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

CD Projekt RED REDkit


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

CQuestTimePeriodCondition Does current time fit in given


period (from - to).

CQuestInteractionCondition 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.

CD Projekt RED REDkit


Page 45
CQuestFightCondition 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.

CQuestReactionCondition This is used to check if any of NPC


Reactions is active.

fieldName: type of reaction


actorTags: tag of the actor that
reacts.

CD Projekt RED REDkit


Page 46
CQuestEngineTimeWaitForCondition Condition for latent pause, how
long it should hold the signal
before propagating it (in
EngineTime)

CQuestActorLifeStateCondition Used to check if an NPC/Player


with given tag is alive.

actorTag: actor tag


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

CQuestCutsceneCondition 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

CD Projekt RED REDkit


Page 47
CQuestTagsPresenceCondition 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.

CQuestRealTimeDelayCondition Used only in latent pause


conditions.

How long in real world (real


seconds) has to pass before
propagating the signal further.

CQuestCameraFocusCondition 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 Used to check if player is


meditating

CD Projekt RED REDkit


Page 48
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.

CQCIsplayerResting 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 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

CD Projekt RED REDkit


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

CD Projekt RED REDkit


Page 50

You might also like