DungeonForge 2 Axes Chart
The Two Axes View¶
---
title: Two patterns, 2 axes, one room
---
flowchart TB
R["A room needs contents"] --> Q1{"HOW MANY, and
is there a chest?"} R --> Q2{"WHICH KIND
of thing?"} Q1 --> P["FACTORY METHOD
RoomPopulator subclass"] P --> P1["Standard: 0-N, no chest"] P --> P2["Treasure: 1 guard + chest"] P --> P3["Boss: boss + escort + hoard"] Q2 --> K["ABSTRACT FACTORY
ThemeKit"] K --> K1["Crypt: skeletons, bone charms"] K --> K2["Forge: imps, slag cleavers"] K --> K3["Frost: wights, frozen tears"] P1 --> OUT["The actual room"] P2 --> OUT P3 --> OUT K1 --> OUT K2 --> OUT K3 --> OUT style P fill:#FFC49B,stroke:#C1642B,stroke-width:3px,color:#000 style K fill:#FFE08A,stroke:#B8860B,stroke-width:3px,color:#000 style OUT fill:#B7E4C7,stroke:#2D6A4F,stroke-width:2px,color:#000
is there a chest?"} R --> Q2{"WHICH KIND
of thing?"} Q1 --> P["FACTORY METHOD
RoomPopulator subclass"] P --> P1["Standard: 0-N, no chest"] P --> P2["Treasure: 1 guard + chest"] P --> P3["Boss: boss + escort + hoard"] Q2 --> K["ABSTRACT FACTORY
ThemeKit"] K --> K1["Crypt: skeletons, bone charms"] K --> K2["Forge: imps, slag cleavers"] K --> K3["Frost: wights, frozen tears"] P1 --> OUT["The actual room"] P2 --> OUT P3 --> OUT K1 --> OUT K2 --> OUT K3 --> OUT style P fill:#FFC49B,stroke:#C1642B,stroke-width:3px,color:#000 style K fill:#FFE08A,stroke:#B8860B,stroke-width:3px,color:#000 style OUT fill:#B7E4C7,stroke:#2D6A4F,stroke-width:2px,color:#000
3 populators × 3 kits = 9 kinds of room, from 6 classes. Adding a fourth kit gives you 12 from 7. That multiplication is why the patterns are worth their indirection — and it only works because the two axes are independent.