Add DunGenExtender

Raphtalia 2024-07-26 07:46:13 +00:00
parent 05a8d6b058
commit 4b999176c3
1 changed files with 44 additions and 0 deletions

44
DunGenExtender.md Normal file

@ -0,0 +1,44 @@
### Dungeon Flow
The `DungeonFlow` that the `DunGenExtender` asset will influence. Each `DungeonFlow` can only one `DunGenExtender`.
### Main Path
`MainPathCount` is the amount of main paths that the dungeon try to generate. If set to 1, then the dungeon generation will default to the vanilla behaviour of, well, generating only one main path and its branching paths. If set to 3, then the dungeon generation will try to create two additional main paths from the first `MainRoomTilePrefab` tile in the base main path. It will then create the branching paths for each main path.
If the generation fails to fully create any of the main paths for any reason, it will reset the entire dungeon generation and try again. The length of these additional main paths is the same as the base main path, and its starting node for length calculation purposes is at the base main path's starting node.
`MainRoomTilePrefab` cannot be null. If set to null, the dungeon generation failsafes to the default vanilla generation behaviour. `MainRoomTilePrefab` can be located practically anywhere on the main path, but it must spawn at least once. It is highly advised that `MainRoomTilePrefab` has multiple doorways at different directions/elevations/distances etc.
Adding an additional main path is effectively adding an entire side dungeon to your interior. This is due to the fact that it not only adds a set amount of main tiles, but also branching paths with their tiles. It is highly recommended to decrease the length of the dungeon as you increase `MainPathCount`.
### Dungeon Bounds
Enable this feature by toggling `UseDungeonBounds`. This adds a bounds to your interior where the dungeon generation cannot place tiles outside of. This can help preventing the dungeon from creating paths all the way to Narnia. However this also increases the chance of the dungeon generation failing, and therefore increasing dungeon generation times. This can even make dungeon generation impossible if the bounds is too small or mispositioned.
`DungeonSizeBase` is the base size of the bounds. This influences how `DungeonSizeFactor` work. Otherwise it's self-explanatory.
`DungeonSizeFactor` is how much the base size of the bounds increases as the dungeon's size increases. If any axis is set to 1, then the base size of that axis will be multiplied by the dungeon's size. If set to 0.5, then the base size is only multiplied by half of the dungeon's size. If set to 0, then the base size is a constant and is uninfluenced by the dungeon's size.
`DungeonPositionOffset` is the positional offset applied to the bounds.
`DungeonPositionPivot` is the pivot of the bounds.
The following text is the script that calculates the Bounds:
```cs
Bounds GetDungeonBounds(float dungeonScale) {
var size = DungeonSizeBase + Vector3.Scale(DungeonSizeBase * (dungeonScale - 1), DungeonSizeFactor);
var offset = DungeonPositionOffset + Vector3.Scale(size, DungeonPositionPivot);
return new Bounds(offset, size);
}
```
### Archetypes on Normal Nodes
Enable this feature by toggling `AddArchetypesToNormalNodes`. This allows normal nodes in `DungeonFlow` to create branching paths by attaching an archetype to it.
Each element of the `NormalNodeArchetypes` list represents which node receives an archetype. The `Label` describes which normal node of the same `Label` will receive one of the archetypes in the `Archetypes` list. If the `Label` is empty or white-spaced, then it becomes the default target for any normal node who did not have a corresponding `Label` in the `NormalNodeArchetypes` list. If a normal node does not have any corresponding target, then it's spawned tile will not create branching paths like normal.
### Doorway Sisters
### Line Randomizer
### Max Shadows Request