Generate playable Doom WAD files from AI-friendly JSON descriptions.
aidoomd/
├── skills/
│ ├── map-design-consultation/ # Brainstorm map ideas
│ ├── map-generation/ # IR → WAD compiler
│ │ ├── scripts/generate.py # Generation tool
│ │ └── references/ir-schema.md
│ └── map-qa-validation/ # Validate IR JSON
│ └── scripts/validate.py
└── agents/
└── map-qa-reviewer.md # Thorough QA review agent
# Generate demo map
uv run skills/map-generation/scripts/generate.py demo -o my_map.wad
# Play it
/Applications/uzdoom.app/Contents/MacOS/uzdoom -file my_map.wad -iwad DOOM.WAD +map MAP01[AI/LLM] → IR JSON → [Compiler] → UDMF → [WAD Builder] → .wad file
- AI generates IR - High-level room/connection descriptions
- Compiler handles geometry - Ensures valid closed sectors
- WAD packager - Creates playable .wad file
# Demo map
uv run skills/map-generation/scripts/generate.py demo -o output.wad
# From IR JSON
uv run skills/map-generation/scripts/generate.py from-ir my_map.json -o output.wad
# Print schema
uv run skills/map-generation/scripts/generate.py schemauv run skills/map-qa-validation/scripts/validate.py my_map.json
# Print schema
uv run skills/map-qa-validation/scripts/validate.py --schema{
"name": "MAP01",
"title": "Tech Incursion",
"rooms": [
{
"id": "start",
"template": "medium_room",
"things": [
{"type": "player_start", "count": 1},
{"type": "shotgun", "count": 1}
]
},
{
"id": "arena",
"template": "large_octagon",
"things": [
{"type": "imp", "count": 5},
{"type": "stimpack", "count": 2}
]
}
],
"connections": [
{"from_room": "start", "to_room": "arena", "width": 64}
]
}small_room,medium_room,large_room,arena- Rectanglessmall_l,medium_l,large_l- L-shapedsmall_octagon,medium_octagon,large_octagon- Roundersmall_outdoor,large_outdoor- Open sky
| Skill | Purpose |
|---|---|
| map-design-consultation | Brainstorm themes, difficulty, flow |
| map-generation | Convert designs to valid IR JSON |
| map-qa-validation | Quick validation checks |
| Agent | Purpose |
|---|---|
| map-qa-reviewer | Thorough scored review with design feedback |
- uv — Python package runner
curl -LsSf https://astral.sh/uv/install.sh | sh
- GZDoom extended thing types
- Custom texture themes/presets
- Door mechanics
- Lifts and stairs
- Secret sector tagging