Skip to content

Adding new blocks

Bryn Stringer edited this page Jun 16, 2020 · 5 revisions

Block Format

[
    ["hall",0,0,0],
    [-256,-256,512,512],
    ["DweFacadeHallSm1way01",0,0,0,128],
    [
        ["Skyrim.esm",348439,0,0,0,0,0,0,100]
    ],
    [
        [0,-256,0,128],
        [0,0,0,128],
        [0,256,0,128]
    ],
    [
        ["DweFacadeHallSm1way01",0,512,0,128,0]
    ]
]

The block format contains the following data:

Block Type and Offset

["hall",0,0,0],

The Generation Algorithm looks for blocks of certain types to build up the dungeon. It goes "Entrance" -> "hall" -> "room" -> "hall" -> "exit". It then closes off any remaining exits with "end" tiles The bare minimum a set needs to have is an Enterance, a straight hall, a room and an exit.

Bounding Box

[-256,-256,512,512],

This is used to prevent blocks being placed on top of each other. It is the X,Y and the Width, Height.

Entrance

    ["DweFacadeHallSm1way01",0,0,0,128],

Each block needs an entrance. This tells Mundusform which tileset this piece can connect to. There is also an Offset here that is the position of the entrance, however it is suggested to leave it as 0,0,0.

Form list

    [
        ["Skyrim.esm",348439,0,0,0,0,0,0,100]
    ],

The form list is a list of all the objects that make up this block. Anything that can be spawned using the placeatme command works. The formid is a decimal representation of the form minus it's load order. This works the same as Undaunted Bounties: https://github.com/kaosnyrb/Undaunted/wiki/Creating-new-bounties

We then have the x,y,z positions and x,y,z rotations in degrees. Currently x and y rotations are flakey and may not produce the desired results. Finally is the scale of the object in percentage.

Navmesh

    [
        [0,-256,0,128],
        [0,0,0,128],
        [0,256,0,128]
    ],

The navmesh is defined as a series of tiles which are connected by Mundusform on build. It is X,Y,Z and Tile size. A tiles position is the centre of the tile.

It is suggested that you use only one tile size for a tileset as Mundusform may fail to connect tiles of different sizes. There is a backlog item to use a smaller standard size for the tiles

Exits

    [
        ["DweFacadeHallSm1way01",0,512,0,128,0]
    ]

Exits mark where blocks can be attached to this block. In this example we have a straight corridor so we can attach a block 512 units forward in the Y axis.

We have the entrance type that the exit needs, the X,Y,Z position, the tile size and the bearing.

A block can have a different entrance and exit types. This allows a transition from cave to dwemer for example.

Blocks in Mundus will be rotated for you based on the bearing. For example a corner turning right will have an exit like this:

["DweHallBg1way01",768,0,0,128,90]

This tells Mundus that the block attached to this exit should be turned 90 degrees. This turning applies to all forms, navmesh and the exits.

This means that we can build all our blocks with an entrance at 0,0,0 and facing north (positive Y) and Mundus will handle the rotations for us.