Professional Documents
Culture Documents
Redkit Editor Basic Manual
Redkit Editor 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
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.
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:
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.
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.
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:
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.
Each block you add has its own properties, which can be edited in properties window. Most
important properties for scenes will be listed below.
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.
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.
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.
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.
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
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.
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.
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.
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).
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).
- 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 dropdown list enables you to choose between 4 different mappin icons. They are:
- 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".
- 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.
- 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:
- 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.
- 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).
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 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:
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.
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).
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
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)
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).
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.
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.
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.
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).
Fields:
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.
It is pretty self-explanatory.
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.
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.