A tile set contains the building blocks for rooms, stairs, and hallways.
TsName | The name the user sees in the UI when selecting the tile set. |
TsType | Classifies tile sets as being "room" or "cave" tile sets. |
TsSize | The amount of x,y,z space each tile takes up. |
WallThickness | Used when placing contents (furniture, containers, etc.) into a cell. Some tile sets have thicker walls and/or curving floors that force the generator to move items further into the room. |
To be complete, a tile set must have the following tiles defined for it. When the generator reads in the XML file, it automatically creates "mirror" images of each of these tiles: ex., CornerNW is mirrored into CornerNE, CornerSW, and CornerSE. Please note that the generator specifically looks for the tiles listed below; that is, you can't specify, say, WallS and expect the generator to mirror based on that.
Required | Auto Mirrored |
---|---|
CornerNW | CornerNE, CornerSW, CornerSE |
WallN | WallS, WallE, WallW |
Center | [N/A] |
DoorwayN | DoorwayS, DoorwayE, DoorwayW |
DoorjambN | DoorjambS, DoorjambE, DoorjambW |
DoorN | DoorS, DoorE, DoorW |
HallNS | HallEW |
HallEndN | HallEndS, HallEndE, HallEndW |
Hall4Way | [N/A] |
HallCornerNW | HallCornerNE, HallCornerSW, HallCornerSE |
StairsUpN | StairsUpS, StairsUpE, StairsUpW StairsDnN, StairsDnS, StairsDnE, StairsDnW |
Used only in Cave TileSets | |
Center_2 | [N/A] |
HallNS_2 | HallEW_2 |
StairsUpN_2 | StairsUpS_2, StairsUpE_2, StairsUpW_2 StairsDnN_2, StairsDnS_2, StairsDnE_2, StairsDnW_2 |
As you can see, Cave TileSets have additional required tiles. These "_2" tiles usually map to the same Morrowind static object as their normal cousins. However, they have different OffsetXYZs. These tiles are required because not all Cave tiles are square-shaped. In order to support layouts, we need a way to turn the rectangular cave tiles into square tiles. We do this by combining, for example, a Center and a Center_2 tile in the same grid; together they make a single square center tile.
We also use these tiles to "align" larger tiles (such as the hall corner tile and the hall 4-way tile, which are both larger than normal tiles) inside the row/column confines of the layout.
All tile attributes are optional and default to 0 in most cases (except that Scale defaults to 1.0).
Area | Used only with certain cave tiles. The allowed values of Area are "HalfSize" and "QuarterSize." Corner cave tiles are almost always quartersize, and hallways and room walls are almost always halfsize. |
DeltaZ | Used for stairs and ramps, this indicates the change in height provided by the stairs. |
OffsetX, OffsetY, OffsetZ | Used mainly for Doorjambs and Doors, but sometimes for other items in a tile set. OffsetZ is used more frequently, because some tilesets are not centered around "Z=0", while others are. |
Requires | Used when one tile cannot be used without another tile also being present. We use this to connect the Center and Center_2 tiles in cave layouts; the Roof tile and Floor tile in the Daedric tileset; and the 4-way hall with the shaft cap in the Telvani tileset. --While it might seem logical, we do not connect the HallNS and HallNS_2 cave tiles in this manner. The reason is that these tiles do not always appear together. The value of the Requires attribute is the logical name (ex., "Center_2") of another tile in the tileset. |
Scale | Used mainly for Doorjambs and Doors, as I couldn't find any that fit the 512x512 tileset. |
ZRotate | The rotation required to make the specified Static element face the desired direction. |
Platforms are used in caves. Without platforms, it is very difficult to place furniture due to the heavily-sloped floor . Platforms are strange beasts, living in a halfway world between being a TileSet and a piece of Furniture.
Platforms are made up of three components: flooring, stairs, and beams.
Layouts control the shape of rooms that the generator creates. Layouts are 2D grids, with Rows (Height) and Columns (Width). Layouts can also have be nested inside each other, and can have an Offset, which is given in Rows, Columns, and Z-Units relative to their parent Layout.
Cave and room layouts are, unfortunately, not interchangeable. Cave tiles are not always square-shaped and are not all the same size. This makes it a bit more difficult to create a cave layout that "works."
If you are just starting to create new layouts, we recommend you begin with Room layouts, as they are fairly easy to create, and you can typically draw a floorplan on graph paper and translate that directly to a layout and expect it to work. With cave layouts, there is no such guarantee, and you can typically expect to do much more tweaking to get a cave layout working correctly.
Height | The number of Rows in this Layout. |
LayoutName | The name the user sees in the UI when selecting a Layout. |
OffsetX, OffsetY, OffsetZ | The number of Rows, Columns, and Z-Units this layout is offset from its parent. |
Type | Either "Room" or "Cave." |
Width | The number of Columns in this Layout. |
Rows and Columns do not have attributes of their own. A Row contains Columns, and a Column contains zero or more Tile Names. Multiple tile names are mainly useful for placing doors, which often require three tiles (doorway, doorjamb, and door). Separate multiple tile names with commas.
Trailing rows and columns that are empty can be skipped. Leading rows and columns must be specified, even if they are empty.
Nested layouts are most useful for building multi-story buildings or dungeons. All the tiles in a layout are treated as having the same Z position. To add another story or level, create a nested layout with an OffsetZ. Use OffsetZ="1.0" to create a second story. Or OffsetZ="-1.0" to create a basement. You can also use OffsetZ="0.5" to capture a bi-level structure.
Contents are all non-treasure items that get put into the cell in addition to walls, floor, etc. These include Containers, Furniture, Rugs, and Tapestries.
Our classification system is different from the game's system, because the generator needs to treat rugs and tapestries differently from other types of static items. We classify activators (ex., beds) as furniture. We classify containers in two ways, depending on whether they are being reused and not modified (classed as Furniture) or if you are going to add items to the container during editing (classed as Container).
Most content types share the same attributes:
UniqueName | is the ID/Name of the item as seen in the editor. |
SizeX, SizeY, SizeZ | The amount of space the item takes up in the game. |
Stack | Determines whether the item can have things placed on top of it and/or under it. Sacks can be stacked. Desks can have things on top of them. But corpses can't be stacked. |
ZRotate | Totation required so the item can be placed against a north wall. By default, this is assumed to be zero. |
Containers are handled specially compared to most other types of furniture.
When the generator adds a container to a cell, it always creates a unique container, so that putting items into that container won't affect other containers in the world. If you want to use a pre-existing container, place it under the Furniture section.
UniqueName | This field is only used for specifying items in a Theme (so you can call out for a specific type of container in a cell). Note that unique names must be separated by a comma. |
FName | The name the user will see whem interacting with the container in the game. |
ModelFile | The NIF file, including subdirectory, of the Net Immerse model used to display this type of container in the world. |
Weight | TES uses Weight to control how much stuff will fit into a container. So if a container as a "weight" of 200, that means it can hold 200 kilos (pounds, whatever) of "stuff." |
Themes control what kind of items get put into a cell. There are actually three types of themes. The basic "Theme" controls contents (containers, furniture, rugs, and tapestries); "CreatureTheme" controls monsters; and "TreasureTheme" controls treasure. The basic structure of all themes is very similar.
Each theme must have a name, and can have zero or more items inside it. The "Empty" theme doesn't have any items in it, for cases where you want to lay out all the contents by hand.
Most content items are placed in wall tiles, but rugs are placed in Center tiles.
Each item's Type attribute must match one of the Content tags. So if
you want containers in your cell, add a
For each item, you can specify the following attributes, but all of these attributes are optional:
Type | The type of content this item represents: one of Container, Furniture, Rug, Tapestry |
UniqueName | For cases where you want to make sure a specific
type of Furniture, Container, etc. gets used, rather than a
randomly selected one. You can specify multiple names
here, separated by commas, if you have several specif
items. The generator will select randomly from the list
E.g., for a Furniture tag, using:
UniqueName="furn_com_r_bookshelf_01, furn_de_p_bookshelf_01" lets the generator select from one of two bookshelves. If you don't specify a UniqueName, the generator will randomly select items from the set of all available items of that type. |
Min | The minimum number of items of that type to be put into the cell. If not specified, the value of Min is controlled by the Ratio. |
Max | The maximum number of items of that type to be put into the cell. If not sepcified, the value of Max is controlled by the Ratio. |
Ratio | Controls the relative number of items of that type.
This is generally better than specifying a Min and a Max,
as it will place more of that item in a larger cell and
fewer of that item in a smaller cell. If you specify both
a Min and a Max, the Ratio is ignored.
The generator counts each of the "wall" tiles in a cell, and uses this as the multiplier. So if there are, say, 12 walls (which includes North, South, East, and West walls as well as the 4 corner walls NW, NE, SW, and SE), and you put in a ratio of 0.5, this is the same as specifying a Min and Max of 6 (0.5*12). But if there are only 4 walls, it means Min/Max of 2; and if there are 40 walls, it means a Min/Max of 20. You can specify either Min (and have the generator calculate a Max) OR a Max (and have the generator calculate a Min) OR leave both undefined, and have the generator calculate both Min and Max using the Ratio. |
Chance | Controls the chance that each instance of this type will be placed. A chance of 1.0 (that is, 100%) means the generator will do its best to put down as many items as you have requested. A chance of 0.8 means that if Min is 1 and Max is 5, the average number of items put down in the cell will be 1 + (0.8 * 4) = 4.2, but the actual number of items added will be in the range of [1..5]. If this seems strange and undesireable, leave Chance undefined or define it to be 1.0 (the default). |
Please keep in mind that v 1.2 of GenMod only puts treasure into newly generated containers. So you will not see free-standing treasure, and if your Content theme does not include any newly-generated containers, you will not see any treasure at all.
Treasure is anything the player can pick up and carry off. As with Content, we classify Treasure differently from the way TES classifies it. For us, there are four main classifications, with some sub-classifications:
Treasure includes the following Morrowind categories:
TES Type | GenMod Type |
---|---|
Apparatus | Tool |
Book | Book |
Ingredient | Ingredient |
Lockpick | Tool |
Misc. Item | Misc [Mostly] |
Misc (Gold) | Gold |
Misc (Soulgem) | Gem |
Probe | Tool |
Repair Item | Tool |
All treasure items are defined in the same way that Content items were defined, but there are a few additional fields, or fields that have slightly different meanings.
Max | This field tells the generator whether it is okay for more than one item of that type to appear inside a container. By default, Max is "unlimited," but it would be strange to see, say, 1000 alembics stacked inside a chest. |
Type | Some treasure items have sub-type information. Treasure has sub-types of Book, Gem, Gold, Ingredient, Misc, and Tool. Armor, Clothing, and Weapons have sub-types that are the same as their TES sub-type: Cuirass, Helmet, Shield, etc. Type information is currently required for Treasure items. (In future version, GenMod will use sub-type information on Armor and Clothing to outfit enemy NPCs.) |
Value | This gives the generator an idea of how valuable an item is, so that GenMod can give better treasure to more difficult cells. (Eventually....) |
Weight | TES uses Weight to control how much stuff will fit into a container. When we put treasure into containers, we take into account its weight, and try to avoid putting heavy items into small containers, etc. |
The structure of the Creature tag is the same as for other Content items. However, Creatures can only appear in CreatureThemes.
We treat Leveled Creatures the same as normal creatures, so you can reference any leveled creature by UniqueName.
Our "Type" information is similar to TES, but not exactly the same. For things that swim, we make the Type="Fish". For things that fly, we make the Type="Bird". This helps us avoid putting things that swim into dry areas, and things that fly into single-story buildings. For now, GenMod avoids placing Birds and Fish, unless you call for them by UniqueName in your CreatureTheme.
Creature themese have the same fields and items as content themes, but all ThemeItem Types must be Creature.