Procedural Shadowdark Dungeon Generator

SD Dungeon Generator is a web app for creating and exploring Shadowdark-inspired procedural dungeons. A user selects a dungeon level, generates a gridded dungeon map, begins in an entrance room under fog of war, and reveals rooms, doors, monsters, treasure, and traps as they explore.

Contributors

  • Megan - Server-side
  • Charles - Client-side
  • Mario - Db-and-security

Project type

Custom variant: procedural game/tool web app. The project combines game design, procedural generation, data modeling, frontend interaction, backend deployment, and security decisions in one Flask + Postgres walking skeleton.

Endpoints planned

GET /Show the Flask home page with navigation to login, register, About, and My Site.
GET /site/Serve the dungeon frontend where users generate and explore the map.
GET /site/<path>Serve dungeon assets such as CSS, JavaScript modules, images, and JSON tables.
GET /aboutShow the shared project design spec for the team.
GET /registerShow the registration form for player accounts.
POST /registerCreate a user with a hashed password and start a session.
GET /loginShow the login form for returning users.
POST /loginVerify credentials and restore the user's session.

Web-based data source

API/platform: AWS S3 static website hosting for the team's dungeon site, with AWS API Gateway and Lambda as the planned backend path for saved dungeon runs.

Docs: Amazon S3 static website hosting and Amazon API Gateway .

Specific endpoint: /site/ for the working dungeon generator served inside the Flask walking skeleton.

Free-tier notes: AWS offers limited free-tier S3 storage/requests and monthly request allowances for API Gateway and Lambda on eligible accounts. The team will confirm current limits in the AWS console before depending on them for production traffic.

Schema sketch

Users         (id, username, password_hash, created_at)
SavedRuns     (id, user_id, seed, level, state_json, created_at, updated_at)
Tiles         (id, saved_run_id, x, y, type, room_id, hall_id)
Rooms         (id, saved_run_id, x, y, width, height, discovered, explored)
Halls         (id, saved_run_id, from_room_id, to_room_id)
Entities      (id, saved_run_id, kind, name, x, y, defeated, collected, revealed, triggered, value)
LootEntries   (id, saved_run_id, name, value, origin_tile)

Link to our team's S3 bucket

http://charlesreeder-506-hw1.s3-website-us-west-2.amazonaws.com (static website endpoint). The same content is also served inside Flask at /site/.

Link to our team's GitHub org

https://github.com/ShadowDarklings