Haydee Guide

Outfits explained for Haydee

Outfits explained

Overview

Seeing some interest in character modding we decided to provide a simple explanation for the outfit system used in our game.

Outfit entity

1. There is an entity called Outfit. Each has its own name. Outfits are independent from each other. Outfit definition can be spread across multiple files. All the .outfit files loaded then merged by the outfit name inside them. So if you have two .outfit files, but the corresponding outfit names are the same – they are merged as a single outfit entity.

2. Each outfit has its own setup with different slots. Each slot is identified by its name and its value. Each time every slot has a single value. This values can be seen in the outfit menu (Hands, Head etc.). Slots are not defined directly, but the information about them is gathered from all the outfit (current outfit) components.

3. Outfits have components. The components are meshes and ragdolls. They are attached to player skeleton if their conditions are met (i.e. they are active). There are 4 predefined conditions and some slot conditions (commonly a single one).

4. Ragdoll components are defined by the only asset – the ragdoll asset and its path.

5. Mesh components are defined by three assets: mesh, skin and material. There is a special case in which there is no material asset used. Instead there is a line “clock true;”. It means that a procedural material “health clock” (back of the head) is used.

Conditions

So, there are 4 predefined conditions and some slot conditions (commonly a single one).

1. Slot condition define for which slot and which value this component would be active. Here is the place where slot info is gathered. If there is more than one slot condition – they all must be valid for the component to be active (logical multiplication).

2. Predefined conditions are boolean values which could be true or false. They are: jacket/nojacket (if armor breastplate is on/off), mask/nomask (if respirator mask is on/off), visor/novisor (if night-vision device is on/off). Also a common condition for compatibility purposes (means nojacket + nomask + novisor). They are merged as a logical addition (if any of them is met – the whole is met). Predefined conditions are mandatory. If you do not define them they are considered false.

3. Final active state of the component is defined as a logical multiplication of predefined conditions result and slot conditions result. If either of them is false then component is inactive.

Example

For example I want to expand the outfit Nude with new hair style “Bayo”. Also, I want to use different meshes in case the visor in on. How can I do that:

1. Create new folder “OutfitsHairBayo”. Place there mesh, skin, and material.
2. Create new file “OutfitsHairBayo.outfit” containing this:

HD_DATA_TXT 300 outfit { name “Nude”; mesh { mesh “OutfitsHairBayoHairBayo.mesh”; skin “OutfitsHairBayoHairBayo.skin”; material “OutfitsHairBayoHairBayo.mtl”; novisor true; slot “Hair” “Bayo”; } mesh { mesh “OutfitsHairBayoHairBayoVisor.mesh”; skin “OutfitsHairBayoHairBayoVisor.skin”; material “OutfitsHairBayoHairBayo.mtl”; visor true; slot “Hair” “Bayo”; } }

3. That’s all.

Conclusion

So there is no obligation to gather all the outfit information in a single file. For example, if you have new skin color component for a body or new hairstyle – it is easier to just create a new file containing your new meshes with desired outfit name. Also you can use new folders to store new meshes and new textures/materials. However, remember, they must be unique.

Best of luck in your modding endeavors.

SteamSolo.com