The following are some notes I made early in development that helped me make more sense of big abstract concepts like "Combat" and "Dungeon Generation" which initially seemed like too big and insurmountable. After making these notes, I had a clear plan of action and an easy roadmap to follow.
Where I found a really nice implementation of a weighted random
How I learned to remove specific elements in an array
Background Music - Candledeep - Tabletop Audio
Header Font - Jacquard 12
Body Font - Micro 5
Generative AI, specifically Microsoft Copilot, was used in the creation of this project. The only thing that it was used for was as a first step for trying to understand how to implement a random walk algorithm for the dungeon generation as well as some debugging help for the same system. No code was directly created by the AI and none of the creative elements were created by generative AI.
The game is completely functional in terms of code related errors. There are no Javascript errors that were thrown after a thorough playtest. The game is fun and easy to use with 2 control schemes.
The graphic design is reminiscent of an old school computer terminal with minimal but aesthetically pleasing design. A prompt comes up on load telling the player how to view all available commands, making sure they know how to play the game. While the game is not responsive, the game fits for most of, if not all 16:9 displays
There are no images aside from the favicon but there is background music as well as attacking and defending sound effects. Aside from that, all the text on screen has a font unique to the project.
Both the HTML and the CSS pass validation. The CSS is in an external file, along with all the Javascript files, and the HTML is semantically structured.
ES6 classes are used constantly throughout the entire project with things like the entity system, dungeon generation system, and item system all using ES6 classes. Code is also separated into multiple different files and all functions are all commented with their purpose and use.