Swifty Dungeon is a native SwiftUI macOS dungeon crawler built as a playable first-person prototype.
It was created end-to-end in Codex with GPT-5.5: the native macOS app structure, SwiftUI interface, dungeon renderer, procedural game loop, telemetry, asset scripts, and README were all built through iterative Codex sessions.
The visual mood came from generated images. The initial UI concept, dungeon textures, item art, monster sprites, and animated enemy sheets were created with the Codex imagegen skill using ChatGPT Images 2.0, then refined and packed into game-ready assets inside the repo.
The current build includes:
- a raycast-style first-person dungeon viewport
- turn-based movement and combat
- procedural labyrinth generation across multiple floors
- real equipment, inventory, item pickups, potions, and leveling
- animated enemy sprites generated from image assets
- a native macOS shell with sidebars, minimap, HUD controls, and unified logging telemetry
- macOS 26 or newer
- Xcode 26 or newer
Use the included script to build the app bundle and launch it:
./script/build_and_run.shTo verify that the built app launches:
./script/build_and_run.sh --verifyYou can also build directly with SwiftPM:
swift buildUp Arrow: move forwardDown Arrow: move backwardLeft Arrow: turn leftRight Arrow: turn rightSpace: attackCommand-N: start a new run- Bottom HUD buttons: use a potion or descend when standing on stairs
Swifty Dungeon uses Apple's unified logging APIs for runtime telemetry.
Stream game telemetry while the app is running:
./script/build_and_run.sh --telemetryStream process logs only:
./script/build_and_run.sh --logsLaunch under lldb:
./script/build_and_run.sh --debugThe app currently logs launch lifecycle, floor generation, movement, combat, inventory actions, leveling, and stairs transitions.
Sources/SwiftyDungeon/App: app entry point and command menuSources/SwiftyDungeon/Stores: main game state, procedural generation, combat, inventory, and turn flowSources/SwiftyDungeon/Models: dungeon, player, monster, item, and animation modelsSources/SwiftyDungeon/Views: viewport renderer, HUD, sidebar UI, minimap, and sprite presentationSources/SwiftyDungeon/Assets: bundled textures, sprite atlases, and enemy animation sheetsscript: build helper and asset-preparation scripts
This project intentionally uses generated bitmap art as part of the prototype workflow. The goal was not to hide the AI-assisted process, but to show how far a native game prototype can be pushed when Codex handles the app implementation while imagegen and ChatGPT Images 2.0 provide the art direction and sprite material.
Current notable assets:
docs/screenshots/swifty-dungeon-app.png: current app screenshotoutput/imagegen/interface-concept.png: initial UI and mood conceptSources/SwiftyDungeon/Assets/dungeon-texture-atlas.png: wall, floor, and ceiling textures used by the first-person rendererSources/SwiftyDungeon/Assets/dungeon-sprite-atlas.png: shared sprites for hero, monsters, items, stairs, and iconsSources/SwiftyDungeon/Assets/enemy-idle-spritesheet.png: repacked transparent enemy idle animation sheet used in-gameSources/SwiftyDungeon/Assets/dungeon-tileset.png: older retained reference tileset
Asset support scripts:
script/regenerate_floor_ceiling_textures.swiftscript/generate_enemy_idle_spritesheet.swiftscript/prepare_enemy_spritesheet.py
This is a playable prototype, not a finished game. The focus right now is the core dungeon-crawling loop, native macOS presentation, and an asset pipeline built around generated images.
