Floor Generation Step: Difference between revisions
From PMDOWiki
Added zone step recommendations for the spawn tables |
|||
| Line 25: | Line 25: | ||
|- | |- | ||
| 0.1 || [[Tile Border Step|TileBorderStep]] || Adds a border of the specified tiles at the edge of the map. | | 0.1 || [[Tile Border Step|TileBorderStep]] || Adds a border of the specified tiles at the edge of the map. | ||
|- | |- | ||
| 1.2 || [[Mob Spawn Settings Step|MobSpawnSettingsStep]] || Sets the rules for enemies respawning on the floor. | | 1.2 || [[Mob Spawn Settings Step|MobSpawnSettingsStep]] || Sets the rules for enemies respawning on the floor. | ||
|- | |- | ||
| 2 || [[Floor Stairs Step|FloorStairsStep]] || Places the start point and the end stairs on different rooms of the floor for RoomFloorGen or GridFloorGen. | | 2 || [[Floor Stairs Step|FloorStairsStep]] || Places the start point and the end stairs on different rooms of the floor for RoomFloorGen or GridFloorGen. | ||
| Line 65: | Line 57: | ||
|- | |- | ||
| 6.2 || [[Place Random Mobs Step|PlaceRandomMobsStep]] || Randomly places teams of mobs on the map (enemy spawns, friendly NPCs). | | 6.2 || [[Place Random Mobs Step|PlaceRandomMobsStep]] || Randomly places teams of mobs on the map (enemy spawns, friendly NPCs). | ||
|- | |||
|} | |||
== Spawn Table Steps == | |||
These steps are used to define spawn tables for the floor. | |||
{| class="wikitable" style="margin:auto" | |||
|- | |||
! Priority !! Step !! Description | |||
|- | |||
| 1 || [[Money Spawn Step|MoneySpawnStep]] || Sets the spawn table for money on this floor.<br>Its [[Zone Step]] version [[Money Spawn Zone Step|MoneySpawnZoneStep]] is recommended in most cases. | |||
|- | |||
| 1.1 || [[Item Spawn Step|ItemSpawnStep]] || Sets the spawn table for items on this floor.<br>Its [[Zone Step]] versions [[Item Zone Steps|ItemZoneSteps]] are recommended in most cases. | |||
|- | |||
| 1.2 || [[Mob Spawn Step|MobSpawnStep]] || Sets the spawn table for NPCs on this floor.<br>Its [[Zone Step]] version [[Team Spawn Zone Step|TeamSpawnZoneStep]] is recommended in most cases. | |||
|- | |||
| 1.3 || [[Tile Spawn Step|TileSpawnStep]] || Sets the spawn table for traps on this floor.<br>Its [[Zone Step]] version [[Tile Spawn Zone Step|TileSpawnZoneStep]] is recommended in most cases. | |||
|- | |- | ||
|} | |} | ||
Revision as of 16:25, 11 August 2025
Floor Generation Steps are steps that are used in floor generation. They are responsible for managing and initializing everything about a floor. The order they are performed in is dependent on each step's priority, with all steps having a standardized priority order for base PMDO.
General Steps
Below is a table of commonly used steps, what priorities PMDO places them in, and what they are used for.
| Priority | Step | Description |
|---|---|---|
| -6 | MapDataStep | Sets the music, time limit, and darkness of the floor. |
| -6 | MapNameIDStep | Gives the floor a name. |
| -6 | MapTitleDropStep | Makes the floor name appear on entry before fading in. |
| -6 | MapEffectStep | Sets event data for the floor. |
| -6 | DefaultMapStatusStep | Sets the base map status of the map. |
| -2.2 | AddDisconnectedRoomsStep | Adds disconnected rooms to the map. |
| -1 | DrawFloorToTileStep | Creates a grid of tiles and draws onto it based on the list of rooms and halls from a RoomFloorGen or GridFloorGen. |
| 0.1 | UnbreakableBorderStep | Adds a border of unbreakable tiles at the edge of the map. |
| 0.1 | TileBorderStep | Adds a border of the specified tiles at the edge of the map. |
| 1.2 | MobSpawnSettingsStep | Sets the rules for enemies respawning on the floor. |
| 2 | FloorStairsStep | Places the start point and the end stairs on different rooms of the floor for RoomFloorGen or GridFloorGen. |
| 3 | AddTunnelStep | Digs tunnels into the walls starting from a room. |
| 3 | PerlinWaterStep | Adds water/lava/etc. using Perlin Noise. |
| 3 | BlobWaterStep | Adds water/lava/etc. by placing several blobs made from cellular automata. |
| 3 | RoomTerrainStep | Sets terrain in a number of rooms to a certain value. |
| 3.1 | DropDiagonalBlockStep | If blobs of terrain are touching diagonally, then they are merged together. |
| 3.2 | EraseIsolatedStep | Replaces isolated terrain of the specified type with walls. |
| 4 | MapTextureStep | Defines the tile graphics for floors, walls, and water. |
| 4 | MapDictTextureStep | Defines the tile graphics in a more advanced way, needed if the layout uses grass. |
| 5 | Random Room Spawn Step | Spawns money, items, traps, etc. in random rooms. |
| 5 | Spaced Room Spawn Step | Spawns money, items, traps, etc. in random rooms, taking care not to place in the same room or adjacent rooms. |
| 5 | Pattern Spawn Step | Places money, items, traps, etc. on a room in specified patterns. |
| 6 | Terminal Spawn Step | Places money, items, traps, etc. in dead-end rooms. |
| 6.1 | Due Spawn Step | Spawns money, items, traps, etc. based on how far they are from the starting room. |
| 6.2 | PlaceRandomMobsStep | Randomly places teams of mobs on the map (enemy spawns, friendly NPCs). |
Spawn Table Steps
These steps are used to define spawn tables for the floor.
| Priority | Step | Description |
|---|---|---|
| 1 | MoneySpawnStep | Sets the spawn table for money on this floor. Its Zone Step version MoneySpawnZoneStep is recommended in most cases. |
| 1.1 | ItemSpawnStep | Sets the spawn table for items on this floor. Its Zone Step versions ItemZoneSteps are recommended in most cases. |
| 1.2 | MobSpawnStep | Sets the spawn table for NPCs on this floor. Its Zone Step version TeamSpawnZoneStep is recommended in most cases. |
| 1.3 | TileSpawnStep | Sets the spawn table for traps on this floor. Its Zone Step version TileSpawnZoneStep is recommended in most cases. |
Debug Steps
These steps are for debug or testing purposes.
| Priority | Step | Description |
|---|---|---|
| 0 | SpecificTilesStep | Sets the floor to specific tiles. Only used for debug. |
| 7 | DetectIsolatedStairsStep | Testing step: Looks for a path from start to end and throws an error if none can be found. |
| 7 | DetectTileStep | Testing step: Checks to see if a certain tile can be found on the map and throws an error if none can be found. |
GridFloorGen Steps
These steps are used exclusively for GridFloorGen.
| Priority | Step | Description |
|---|---|---|
| -5 | InitGridPlanStep | Initializes a grid for GridFloorGen. |
| -4 | GridPathBranch, GridPathCircle, GridPathTwoSides, etc. | Generates a path of rooms and halls for GridFloorGen. |
| -4 | SetGridDefaultsStep | Turns some rooms into halls (1 tile size), for GridFloorGen. |
| -4 | ConnectGridBranchStep | Connects some adjacent rooms, for GridFloorGen. |
| -4 | CombineGridRoomStep | Combines some rooms into larger rooms, for GridFloorGen. |
| -4 | SetGridPlanComponentStep | Tags all rooms in the grid plan as the specified components. |
| -4 | SetGridInnerComponentStep | Tags all rooms on the interior of the grid as the specified components. |
| -3 | DrawGridToFloorStep | Initializes a list of rooms and halls and populates it with the grid from GridFloorGen. |
RoomFloorGen Steps
These steps are used exclusively for RoomFloorGen.
| Priority | Step | Description |
|---|---|---|
| -3 | InitFloorPlanStep | Initializes a list of rooms and halls for RoomFloorGen. |
| -2 | FloorPathBranch | Generates a path of rooms and halls for RoomFloorGen. |
LoadGen Steps
These steps are used exclusively for LoadGen.
| Priority | Step | Description |
|---|---|---|
| -7 | MappedRoomStep | Loads a dungeon map to use as this floor's layout, including its entities and properties. |
StairsFloorGen Steps
These steps are used exclusively for StairsFloorGen.
| Priority | Step | Description |
|---|---|---|
| -1 | InitTilesStep | Sets the floor dimensions and initializes a grid of tiles, for StairsFloorGen. |
| 2 | StairsStep | Places the start point and the end stairs on different tiles of the floor, for StairsFloorGen. |
