TileSet:SET File

From NWN1 Custom Content Guide

(Redirected from SET)
Jump to: navigation, search

Contents

The SET file

This file tries to explain the various entries in a tileset`s ".set" file.

I use the rural "ttr01.set" for this. Note that not all lines are explained. That is because I either don`t know what they do or am at least unsure about it. This is not carved in stone. If you notice an error or think something is badly explained, let me know. You`ll have to have some basic understanding on how a .set is used to understand this.

Common problems when editing a .set file:

  • The comment lines (lines that begin with ';') are only valid at the beginning of the file, anywhere else, they cause corruption
  • Counts aren`t sequential. It`s important that all entries are sequential and have the correct 'Count=' value (see below)
  • Duplicate STRREF entries will cause problems, you don`t have to use any STRREF in a .set (see below and the palstd.itp site)

General

</td> </tr>
</td>
 </tr>
 </td>
 </tr>
; NEVERWINTER NIGHTS TILESET FILE
     ; DO NOT EDIT MANUALLY - UNLESS YOU KNOW WHAT YOU ARE DOING
[GENERAL] Begin of General Section
Name=TTR01 The "internal" name. Other files like doortypes.2da and loadscreens.2da reference to it.
Type=SET Seems obvious.
Version=V1.0 I edited this once and the toolset crashed.
Interior=0 Set this to "1" to have weatherand day/night FX enabled by default
HasHeightTransition=1 If the tileset uses raise/lower and looks for height=1 in [TILE] description
EnvMap=ttr01__ref01 The default environment map (used for reflections on armor, weapons and the like)
Transition=5 The height difference of model placed (in meters) at Height
     0 and Height 1. This only describes the models height, and does
not change anything in the tilemodel itself.
You`ll have to use the raise/lower feature to make this work.
Make sure this is an integer (eg 5 ) not a float ( eg. 5,5 ) .
DisplayName=1606 The name displayed when selecting a tileset in the toolset.
     It references an entry in dialog.tlk.
Change this to "-1" and add a line
"UnlocalizedName=MY_TILESETS_NAME" to make that name appear instead.
Border=Grass The Terrain of the Area`s edges. See CityExterior Tileset for an example.
Default=Grass The default terrain that is placed everywhere when creating a new area using this tileset.
Floor=Grass The terrain placed when using the "eraser".
SelectorHeight=10 This option may not exist but does control the green placing box within toolset. For a raised tileset, raising this above 5 is recommended.

Grass

</td> </tr>
</td> </tr>
[GRASS] The settings for the grass that appears if a walkmeshnode of the tilemodel is set to "3 / grass"
Grass=1 Set this to "0" to turn of grass completely. You can then remove the following lines.
Density=5.000 How strong the grass grows.
Height=1.200 The height of the grass in meters.
AmbientRed=0.500
     AmbientGreen=0.600
AmbientBlue=0.300
The colour settings of the grass. RGB settings.
DiffuseRed=0.500
     DiffuseGreen=0.600
DiffuseBlue=0.300
 

Terrain Types

</td> </tr>
</td> </tr>
[TERRAIN TYPES]
     Count=3
The number of terrain types used in the tileset.
[TERRAIN0] First Terrain entry. Make sure ALL count entries in your tileset begin with "0" and the last entry is count-1
Name=Grass The name of the terrain as it will be used in the [TILE] entries later. (CASE SENSITIVE !)
StrRef=63635

The reference to name-string in "dialog.tlk" leave this out if you create a custom terrain and use

RESREF
RESREF
Grass
STRING
NAME
MyTerrainName

with the ITP-Tool
(See palstd.itp section)
You can use this combination with CrosserTypes, too.

   
[CROSSER TYPES]
     Count=4
Similar to [TERRAIN TYPES], just for crossers like road and stream
[CROSSER0]  
Name=Stream  
StrRef=63302  

Primary Rules

</td> </tr>
</td> </tr>
[PRIMARY RULES]
     Count=28
The primary rules section. Here is determined what terrain
     type is allowed to place, and what happens if a certain terrain
type is placed on and next to another.
[PRIMARY RULE0] The first primary rule.Again, watch the count !
 

The use of Primary Rules is hard to explain. You got to know that terrain is always determined
using the corners (NOT the edges) and if you place something, all tiles adjacent are placed again, too.
(That`s why tiles change around a placed one, even if you just place basic floor tiles)
According to BioWare`s TilesetTutorial, these aren`t really needed and just add some logical pattern to the .SET ( ?! ) .

I`ll explain it the way I read it:

Placed=Grass If "Grass" is placed....
PlacedHeight=0 ...and the height of the Tile is 0
Adjacent=Grass
AdjacentHeight=0
...and the adjacent tile`s corner is "Grass" with a height of "0"
Changed=Grass
ChangedHeight=0
...the terrain at the adjacent gets changed to "Grass" with a height of "0".

Secondary Rules

[SECONDARY RULES]
     Count=0
UNKNOWN - it`s never used in any tileset
   

Tiles

</td> </tr>
</td> </tr>
[TILES]
     Count=259
Begin of the [TILE] section. The settings in this section
     mainly describe the looks and use of a given tilemodel.
We`ll use ttr01_a11_01 for this example.
  Image:Tileset set1.jpg
The same tile from above and aligned to fit [Tile] entry....
[TILE9] The number of the tile entry
Model=ttr01_a11_01 The file reference to ttr01_a11_01.mdl and it`s walkmesh file "ttr01_a11_01.wok"
WalkMesh=msb01  
TopLeft=Grass
     TopLeftHeight=0
TopRight=Water
     TopRightHeight=0
BottomLeft=Grass
BottomLeftHeight=0
BottomRight=Grass
BottomRightHeight=1
The tile-description section.
     Take a look at above picture and you`ll understand how it`s read.
Remember tiles are always read over corners and if you place a tile, adjacent corners are placed, too.
This starts a "snowball system" of placing tiles.
Note the edges that are left out. It looks like they aren`t affected if you place something, but in fact
the tiles there are affected by the tiles placed at the corners.
Top=
     Right=
Bottom=
Left=
Here are the entries for crossers.
Crossers are additionally used over edges, not only over corners.
MainLight1=1
     MainLight2=1
SourceLight1=1
     SourceLight2=1
AnimLoop1=1
AnimLoop2=1
AnimLoop3=1
This section is used to turn the various tile options on and
     off.
The options have to be set in the model, else nothing will happen.
     If there are no "sl" nodes in the model , no sourcelight (torches) 
     will appear for example.
You`ll see the checkboxes for this section if you rightclick on a tile.
Doors=0 The number of doors in the tile. I`ll do an door example further down....
Sounds=0 This is never used in any tileset .. I wonder what it does.
PathNode=Q This is a descriptor for the walkmesh type and is used in
     the pathfinding routines.
     Image:Tileset pathnode.jpg
The lines describe on which edge the tile can be left/entered.
Orientation=180 Turn the Pathnodes with this (in +/- 90 degrees) to tell the
     engine how the tile can be passed through.
Positve values are Counter-Clockwise Rotations,
Negative Values are Clockwise.
VisibilityNode=A Same as PathNode, but for Line-Of-Sight only - Can be left out if same as PathNode
VisibilityOrientation=0 Same as Orientation, but for Line-Of-Sight only- Can be left out if same as PathNode
DoorVisibilityNode= Visibility Orientation for tiles that contain doors, this node sets Visibility for closed doors
DoorVisibilityOrientation= see above
ImageMap2D=MITR01_A11
This is the reference to the image that is displayed on the
     map for this tile.
(MItr01_a11.tga in this case)
It should be 16x16 px , 24bit TGA, but it can be larger/smaller.

Doors

</td> </tr>
</td> </tr>
     ON DOORS
Remember the Doors=0 entry above ?
Let`s assume it would have been Doors=1 or more.
In that case the [TILE] entry must be directly followed by
[TILE9DOOR0] This is the entry for the FIRST door in a given tile.
     The first part "[TILE9" references to the tile, while "DOOR0]" is the sequential number of the door.
     If there would be more than one door in the tile, the next would have to 
be [TILE9DOOR1] and so on.
Type=65 This references to the entry number in "doortypes.2da".
     If it`s not "=0" it is a TilesetSpecific door.
     Entries of "=0" let you place doors from "genericdoors.2da" 
     (simple doors).
Tileset specific doors get auto-placed when the tile is placed, while you
have to place simple doors by hand.
X=2.78
     Y=0.00
Z=0.00
The position of the door. Values are in meters.
Orientation=-90.0 The facing of the door.

Groups

</td> </tr>
</td> </tr>
[GROUPS]
Count=63
The Groups section and it`s count.
     Everything that is not bound in a group is subject to be placed either through
Terrain or Crosser placement and is either considered a Feature or Group,
based on your ITP entry.
[GROUP3] The FOURTH group entry (remember, 0 is the first !)
Name=DragSkel_1x2 The name of the group. It`s "for your eyes only" as it`s not used elsewhere.
StrRef=63637 The reference to dialog.tlk entry.
     You can leave this line out if you use a STRING NAME combination with ITP 
tools.
Rows=1
Columns=2
The size of the Group.
     When placing a group it first reads all row "Tile=" entries and 
     then the collumns.
(hope to be right on this)
Tile0=127

The first Tile to be placed with a group and the tile that you have to reference to
with the ITP-entry.
[Tile0] is always the tile in the lower left corner of your group.
So look up the model name of [TILE127], what is "ttr01_o06_01"
And create your ITP:
RESREF
RESREF
ttr01_c06_01
STRING
NAME
DragonSkeleton_1x2

Tile1=128 The subsequent tiles. Once a tile is bound, it`s unavailable for Terrain/Crosser placement.
  A small trick: if you set a "Tile#=" to "-1" (example: Tile3=-1), a random tile will be placed, according to terrain.
Personal tools