Translation of the russian guide made by Antales
NavGraph – developed for another project. Currently not in use.
NavMesh – component used for creating navigation meshes. Bots are not able by themselves to navigate in a 3D space, therefore for their path-finding is used a triangle-shaped grid (NavMesh) that marks the space where bots are allowed to move. NavMesh component has sub-modes for creation and manipulation with the NavMesh grid.
Animation – component used for attaching animation graphs to the actor. Allows to attach an arbitrary amount of animation graphs (.anim files), set the Root Bone from which Root Motion will be calculated, and it also allows setting the default animation branch. Animation graphs animate skeleton, therefore, in order to function correctly, component Skeleton must be attached to the same actor. Skeleton in the game can be controlled by Animation, or by Ragdoll. If both components are attached to the actor, then Animation will control Skeleton only if Ragdoll is set to Kinematic. For more details check Ragdoll.
Bones – service component used for importing information about bones from .dskel files. Allows to set up the bones (default position, fixes and limits) for the subsequent skeleton compilation (.skeleton file). This component has a sub-mode for individual bone’s settings.
Head – component used for character’s head control. The head is made out of head’s and neck’s bones and an arbitrary amount of eyes, which, if required, can be added to the head. Head component grants tracking to the eyes and head on top of the active animation. The target for tracking and permission for tracking eyes and head are controlled by the script’s node TrackHead. For example, the player’s template is set to track this way Camera component.
Rotate – component used for the automatic actor’s rotation (or a separate actor’s component). Rotation is executed on the selected axis where the indicated number stands for degrees per second.
Skeleton – skeleton’s component. Skeleton is the main component used for animated actors. It’s required for the correct functioning of other components, such as SkinMesh, Animation, Ragdoll, Socket, Outfit, Track and many others. All components that use Skeleton can also use component Bones, but Bones component has no implementation inside the game code and can be used only in the editor.
Transform– component that allows to record actor’s position in 3D space. Subsequently this recorded position can be used inside the game for moving actors. Reading xTransform from this component returns the recorded position.
Audio – component that allows to play sounds (2D or 3D) on actor in the indicated channel (Game or Scene). Sounds on component are reproduced independently from each other. The sounds are provided with a script node AudioPlay.
Background – component used for playing musical theme (background music). It loads a theme automatically each time player enters a new scene. If the same theme is used already (from a previously loaded scene) then it continues to play it seamlessly.
Decal – component used for projecting decals on top of the geometrical objects. Every decal uses a material to project and for projection it uses a rectangle which sizes can be manipulated in the component’s settings. This component allows to disable individual material’s maps.
Emitter– component used for playing particles. It uses Particle Graph (.parts file). Particles can be played automatically when entering a new scene or by a script’s command (Play).
Glass– component used for making glasses. Each glass is made of a rectangle (component’s XZ plane), it’s size can be set in the component’s parameters. It is possible to add an image pattern to the glass by using an existing Material, change Opacity settings, add reflection (Reflect) and automatically generate physics (Collision) with the desired Thickness.
Lazer – component that is used for imitating laser beams. It uses laser’s texture and it’s possible to set maximum beam’s Length and colors for two ends. Laser always starts from the component’s origin and has a direction of its Z axis. In the game laser beam automatically handles obstacles.
Mirror – Mirror component is a rectangle made of XZ plane with the desired sizes. It is possible to automatically generate physics (Collision) with the desired Thickness. And it is also possible to set mirror as one or two sided.
Skybox– component used for creating skyboxes. Skybox component uses .cubemap file which can be generated by the skybox tool (Tools → Skybox Create). Currently this tool works, but is not finished and might have some bugs.
Sound– component used for playing sounds. A sound can be played as a 2D or 3D sound, and it can be played automatically (Auto Start) or by the script’s command Play.
Speaker – a component similar to Audio and it has the same settings but unlike Audio it plays one sound at a time (If a new sound starts playing the previous will be interrupted). Sounds are played by the script’s node SpeakerPlay. An example of Speaker is the announcer voice in the shuttle from Nsola7 campaign.
Sprite – a service component used in the editor for working with actors without a visible geometry. It is visible only in the editor.
Tremor – Component used for creating a shake effect of the camera (View). It has parameters for shake force (Magnitude) and radius effect (Radius). It influences View inside a sphere area.
Tremor has the most magnitude at the sphere center and it decreases while moving to the sphere bounds. Outside of the sphere it’s 0. If the radius is set to 0, then effect will be applied to the entire scene.
Approach– developed for another project. Currently not in use.
Area– Component used for making interactive 3D volume. It has settings for its size and physical filters that allow to set types of physical objects that can interact with it. This component interacts with the node OnTouch and generates events OnTouch and OnUntouch. OnTouch generates events when an object enters the Area’s volume if at that moment there are no other objects already inside it, i.e. it’s the first object entering the Area’s volume. If there is already an object in the Area’s volume then the event is not generated. OnUntouch works the same way but when the object leaves the Area’s volume. I.e. it’s the last object leaving it.
Camera – a variation of view object (View). It gives to the actor a virtual camera that is shifted from the point of attachment (Operator Params). Camera can be attached to a skeleton’s bone and can draw a crosshair sprite on the screen. Camera is manipulated by a script thanks to the parameters Yaw and Pitch.
Climb – component used for creating ledges which can be used by the player for platforming interactions. Width sets the width of the edge, while Hangs determines the type of player’s hanging animation.
Cover – created for another project. Currently not in use.
Dispatch– interactive volume similar to the Area. Dispatch works with the node OnDispatch and generates events OnEnter, OnLeave and OnDispatch. While Area works with all the objects (of the same group) at the same time (inside its volume), Dispatch works with each of them separately. Events OnEnter and OnLeave are generated for each object that enters or leaves Dispatch’s volume separately. Period parameter establishes frequency of events OnDispatch. Dispatched object is passed as pInvoker parameter to the events.
Dot– obsolete component. Not in use.
View – component used for the view object (View). Only one view object can be active at a time (Camera is a variation of view object). This view object (its position and parameters) is used for generating the main view in the game. View objects can be switched by the script’s node View.
CSG (Constructive Solid Geometry) component used for creation of the main solid geometry of the scene. This component uses the CSG principle of merging cuboid geometry (brushes) into much complex objects. It is advised to convert CSG into CSGSolid (Build Solid). CSG has 3 submodes for working with brushes.
CSGFill– service component used in the CSG conversion process to CSGSolid. During conversion only visible part of the brushes will be calculated. In order to make it work it is necessary to place CSGFill inside a hermetically closed space (by brushes) visible to the player.
Cable– component for creation of cable geometry. It has submodes that allow to create and manipulate guiding points for generating cable geometry.
Form – Form component is used for working with form resources (.form files) made of ‘stretching’ geometry. This type of geometry, thanks to the manipulators, allows to change object sizes. This component has submodes for visual groups and manipulators. Materials for visual groups are set independently one from each other and have support for UV generation.
Grass – component used for generating grass. The grass can be generated only on top of existing Terrain. At this moment Grass component is not finished and it’s not used in the main game.
Heap – component that is used for merging multiple geometrical (and physical) objects in one for easier management. At this moment it’s effectiveness is very questionable. In the main game it’s almost not used. Merging geometry can be done from the actor’s menu -> Convert To Heap.
Morpher– component used for creation of morph resources. At this moment the morph system is not finished and not used in the game.
Outfit – component that allows to manage, show and animate outfits (.outfit files). Outfits are configurable skin mesh collections. For the correct functioning the same actor must have Skeleton component. Outfit component can be managed from the editor or by scripts.
Overlay– component used for adding a secondary template and possibility to remove it later. Templates are added to a virtual slot that can be named by a string of text. If such a slot is already added to a template then it will be automatically removed. Overlay component can be manipulated by the script’s node OverlayAttach.
Player– Special outfit component that synchronizes with the active outfit that is chosen by the player from the game menu. It has no it’s own settings. Like Outfit for correct functioning it requires Skeleton component.
SkinMesh– component used for showing animated meshes. Animation of meshes is done automatically thanks to the Skeleton component and a special skin resource (.skin file).
StaticMesh – component used for showing static meshes (.mesh files).
StaticUnion – component used for showing static unions (.union files). Unions are a collection of mesh units, each unit can have its own material. Materials of the units are managed from the submodes.
Support – component used for generating “structure support” geometry. Geometry is generated automatically on the guiding points, which can be managed in the Support’s submodes. Alongside visual geometry it also generates physics for the support. Physics interactions can be managed in the component’s parameters Group and Mask. Even if this geometry is not used in the main game, it could be useful to the modders.
Terrain – component used for creating landscapes. Terrain is a XZ plane made of a polygonal grid which can be manipulated by component’s tools. It is possible to use and blend on terrain surface up to 5 different materials. Currently this component is not completed and not used in the main game.
Control – component used for interacting with the input system of the game. Control is a type of input object (Input). Unlike Input, by using WASD keys, it allows to automatically calculate movement vector and it generates events for the script’s node OnControl.
Damage – component which is used for the damage system and parameters related to it. Damage component works with nodes from the Common/Damage groups. It also allows to add arbitrary amount of gauges (Gauge) which give information to the script’s node OnGauge. Damage can have its own script like the component Director.
Director – basic component that contains director’s script. Adding this component allows in the simplest way to process actor’s events. A script can be attached as an external .dir file or as an internal graph (by toggling Embedded). When Persistent is toggled it is possible to process events even if its component or its actor is Disabled.
Equipment – component used for working with equipment slots. Slots have string names and allow to equip items and process equipment events. Equipment generates OnEquip events for the indicated slot’s name.
HUD – component for processing user interface events OnPaint. eRect parameter describes an active area for painting, and it’s passed to OnPaint event.
Input– basic input object. Only one input object can be active at a time. Input object receives information from the input devices such as keyboard, mouse or gamepad controller. It can provide to the script ‘raw’ information through the nodes OnInputAxis and OnInputKey, or through OnControlKey, by converting to control keys according to the indicated control scheme. A much more advanced version of Input is Control component, which allows to automatically process steering vectors through the use of WASD keys.
Interactive – component used for interactive objects. Thanks to this component it is possible to make player interact with interactive actors. Usually interactive actors, when inside interactive range, will be outlined. In order to work correctly Interactive requires the same actor to have a visual object (which will be outlined) and a physical component (which is interacted with). During interaction with the player Interactive component generates events OnPress/OnRelease/OnHold for the script’s node OnInteract. It also generates event OnApply during interaction with items. Object that initiated interactions is passed to the events as pInvoker parameter. Interacted Item is also passed by the mItem parameter to the event OnApply. It can have its own script like Director component.
Inventory – component used for inventory management. It is possible to set the number of columns (Cols), rows (Rows) and toolbelt slots (Toolbelt). This component generates events for the script’s node OnInventory. It can have its own script like Director component.
Item – During an actor’s creation this component allows to add to the actor’s inventory indicated item. Item is added to the Inventory component (on the same actor), which is required for the correct functioning. This component is inherited from the previous version of the game engine. The other way to pass items to the inventory is by using script’s node mGive.
Job – component for managing tasks. Task (job) is an external script (.dir file), which is registered on the component under a string name. For starting a task (and its script) it is necessary to use script’s node Job -> Set with the decided string name. Task’s script is controlled by the events OnEnter/OnLeave of the script’s node OnJob. For ending a task it is necessary to use the script’s node Job -> Clear.
Properties– basic component for registering on actor new properties to use in scripts. All properties are typed. For each of them it is possible to set a name and a description (desc). Switching between name and description is done through the component’s menu. All components that have their own script allow to add Properties.
Scanner – component that scans the environment around it’s actor for detecting other actors that have a physics mask filter set to Scanner. Different types of modules are possible to add to the Scanner component, such as climb edges (climbs), covers and interactive objects. Each module has its own name and scanner properties. Scanner component generates events for the script’s node OnScanner. Module scanned results are available by providing the module’s name through the pin pTarget of the script’s node ScannerInfo.
Sensor– component that allows bots to see (and hear) other objects. Object detection in a 3d space is not a trivial task, therefore the engine uses a simplified model. Thanks to the Trace component, actors have special points (trace points) and those points are scanned at a set frequency rate by the Sensor component. If even one of the trace points is not occluded by the scene’s geometry, then that object is marked as visible. Currently the Sensor component is able to detect only one object that is provided by the script’s node SensorTarget. Detection and loss events are generated by the script’s node OnSensor. Also for this component are generated events OnHear, which are initiated by the script’s node SensorSound.
Socket– component that allows to create insert points – sockets. Sockets are created in a special submode. Each of them has a string name and can be attached to a bone. Sockets allow to “insert” into them actors from a template. Insertion is performed by the script’s node SocketInsert by indicating socket’s name and template (.templ file).
Spawn – component used for assigning spawn parameters to the actor. Spawn parameters will be used when an actor is placed as a Dynamic. Thanks to the spawn parameters in the main game it is possible to toggle in the actor’s template dodging (dodge) and platforming mechanics (climb). Parameters are possible to add to Spawn like properties on the other components. Spawn parameters are passed to OnActor -> OnSpawn event by indicating spawn parameter names used on component.
State – component used for managing actor’s states. At each time this component can have only one active state. Each state has an external script linked to it (.dir file). While a state is active, its script can process events. State switching is performed by the script’s node State with the indicated state’s name on the component. Activate/Deactivate events are generated on the script’s node OnState.
Weapon – component that allows actors to use melee combat mechanic. Ragdolls (.ragdoll files) are used for weapon physics and are registered on the Weapon component under string names. Weapons can be enabled/disabled by the script’s node WeaponEnable by providing the weapon’s string name. If a weapon is active, then, animated by the skeleton, it will scan the space for finding any intersections with other physical objects. In the mask settings it is possible to filter types of objects that can interact with Weapons. During intersections with such objects events OnWeapon → OnStrike are generated and those objects are passed by the pTarget parameter. Skeleton component on the same actor is required for the correct functioning of this component.
AmbientLight– component for the basic background illumination. AmbientLight is achieved by interpolating two backlight colors: Front Color (upwards direction) and Back Color (downwards direction). Between two colors is realized a spherical interpolation (Slerp).
Backlight extends to the entire scene without casting any shadows. It’s not advised to use AmbientLight since there are better options available.
CascadeLight– component that imitates the sunlight and it’s used for the open spaces. Illumination is realized downwards (Axis Y-) and it extends to the entire scene.
CascadeLight is not intended to be used inside close environments since there is a ceiling. It’s a primary source of light and it contributes to the GI.
DirectionalLight – component that imitates directional source of light. Its rays are emitted downwards (Axis -Y) and parallel to the component. Basically it’s an emitting light plane, which size can be modified in the component’s settings (Size). Depth of the illumination is decided by the parameter Height. DirectionalLight is a primary source of light and it contributes to the GI.
GI– component for the advanced background illumination. It was developed for replacing AmbientLight and HemiLight. It automatically captures existing illumination in the environment and illumination of the existing objects. This component can also create the media effect. Setting for the media effect are Media Color and Media Density. It is advised to leave other parameters as they are. All the primary sources of light contribute to the GI. This contribution is decided by the GI Strength parameter, which can be modified independently for each source of light. For better illumination it is highly advised to use this component.
HemiLight – component for the background spherical source of light. It is used for making primitive backlight illumination and it doesn’t cast shadows. Like PointLight it emits light radially, fading away from its center. It’s made of two colors: Color and ColorBack. In the previous version of the engine this was the main backlight source. It is not advised to use, since there are more advanced types of light available such as GI.
PointLight – component used for making point light sources. At the current moment it’s the main component for making primary sources of light. It casts shadows, light is emitted radially and it fades away from its center. It contributes to the GI.
Reflection – component used for making primitive reflections and it adds a metallic effect to the metal materials. It represents a point in space from which it captures a spherical view of the scene. This captured view is then used as a reflection for the various materials. It affects the indicated radius size and fading away from the center. If Global parameter is checked, then the reflection effect will affect the entire scene without fading. It’s advised to use one Reflection light per scene in the brightest part of the scene and slightly above the player’s head.
SpotLight– component that imitates the light of a flashlight. Basically it’s a point light source limited by a cone shape and with a set direction downwards (Axis Y-). SpotLight allows to add a texture mask, which is an image that will be projected on the objects. It’s not advised to use cones bigger than 120 degrees. Primary source of light, it contributes to the GI.
The purpose of these components is to substitute one of the channels (Channel) of the indicated material (Source) with a new texture that will be manipulated by this component. The indicated Source material, if it’s available on any component of the same actor, will be replaced. In the current build it is necessary to place Override component before the component on which replacement takes place.
OverrideSequence – component that allows at intervals to change textures of a replaced material’s channel, making this way a primitive animation. In the Frame Time property is set the frequency of the texture replacement, while Add Item is used for adding new animation frames.
OverrideTitle – component that allows to rasterize text on the indicated material’s channel. It has parameters for the Font Name, Font Height, alignment parameters (Align) and padding (Padding). It is advised to use only fonts placed in the game folder. All door signs in Nsola 7 are made thanks to this component.
Here are gathered components that in some way are related to the physical interactions. Collision, Compound, Pawn, Physics and Ragdoll have parameters Group and Mask. Those parameters are used for filtering physical interactions. Simplified explanation: If we have an object A and an object B, then they’ll physically interact only if A is in the Mask B and if B is in the Mask A.
Physical components can be used in 3 states (State): static (so no position or orientation changes), kinematic (the object is managed by an animation, or managed externally) and dynamic (governed by physics laws). Not all the components can be in all 3 states.
Collision – component that creates a complex physical shape made of polygonal grid. It uses an external physical asset from the .collision file. It always stays only in kinematic state.
Compound – component that creates a complex physical shape made of geometric primitives. It uses an external physical asset from the .compound file. It can be in all the 3 states.
Pawn– component that creates physical character. It’s made of a vertical capsule with provided height and radius. It’s a complex component that has many parameters, internal states, it can move in space by a script and it is also required for the logic controlling bots. Description of this component’s internal logic is out of scope of this guide.
Physics – it’s a service component used for creating physical assets. It has a submode that allows to manipulate separately with geometrical primitives, making this way a complex form. In case the same actor also has Skeleton or Bones, this component allows to attach primitives to the bones. The main purpose of the Physics component is the creation of physical assets that can be exported as .compound and .ragdoll files. Although it’s a service component an in-game logic is available for it similar to the Compound.
Ragdoll – component used for managing objects with a skeleton. It uses an arbitrary amount of physical assets .ragdoll files. It can be in all the 3 possible states. If the same actor has also Animation, then the correct functioning of that actor is possible in these cases:
– Ragdoll can be in the dynamic state only if animation is Disabled, otherwise both components will compete for the skeleton control.
– If Animation is Enabled then Ragdoll can be only in kinematic state, in which it will passively calculate bones’ position for positioning accordingly his own primitives in space.
Trace– component that works together with the component Sensor. It’s made of points (that can be attached to the bones), which will try to “see” Sensor in order to detect the actor’s visibility. For making such points (trace points) the component has a submode.
Track– component, like Trace, intended for managing a set of points (that can be attached to the skeleton). It also has a submode for their creation. The difference is that these points can have names and can be used as objects by the script’s node TrackPoint. For example all the bots in NSola 7 are set to track on player a track point named “T*ts”.
Bounds– a service component used for assigning bounds (boundaries). Developed to be used by other components. Currently not in use.
Model– a service component used for importing .dmesh files and compiling them internally to resources. It is not possible to add a Model to the actor from the menu button Add Component, But is possible to add it from the main actor’s menu Spawn -> Geometry ->Model. In this case a new actor with a Model component will be created. Model has no uses inside the game and it works only in the editor.
I hope you enjoy the Guide we share about Haydee 2 – All Components + Interactive + Configuration – Walkthrough Guide; if you think we forget to add or we should add more information, please let us know via commenting below! See you soon!
- All Haydee 2 Posts List