Menu windows can be nested inside each other.
Stepwise
Dimensions and Genres
Each time you start a run, a genre is chosen from a predefined list of Dimensions. Which dimension is chosen will dictate the rules for that run, altering the map's generation and overall goals for that save file. Some talking monsters may change their dialog, or some monsters may only spawn in some dimensions but not others.
Some recurring elements will exist in all dimensions to provide some stability, but will often be warped to fit - for example, if the "fantasy" dimension has Cid, the dwarven shopkeeper, the "scifi" dimension has C.I.D., the Customer Inventory Droid.
Here's a few potential options, which will absolutely change over time:
- Sword and Sorcery (LotR, D&D)
- GitS/Neuromancer/Digitized Minds
- Steampunk/Clockpunk/Crystalpunk (deeper areas have older tech)
- Post-Post-Apocalypse (Nausicaa)
- Shakespeare, A Tragedy
- Fairy Tales and Fables (Brothers Grimm)
- Secret Agent Espionage
- Mythic Odyssey
- Dreamlands/Cthulhu Horror/Gothic Horror (accessible only during the full/new moon)
- Stargates/Sliders
- Isekai Protag Syndrome
- Gunslingers (Wild West)
Links And Resources
https://rogueliketutorials.com/
https://python-tcod.readthedocs.io/en/latest/
Setup and Scripts
#make the virtual environment
python3 -m venv venv
#useful pre-commit hook
lint_results=$(echo "$(grep -Pro '[\t]+$' */*.py)")
lint_errors=$(echo "$lint_results" | wc -w)
if [ $lint_errors -gt 0 ]; then
echo "pre-commit lint errors found: $lint_errors"
echo "$lint_results"
fi
exit $lint_errors
heapq is a thing for the speed sorting
Credits and links
Dev: Kayne Ruse
Help: Troy Brough
Font: https://2bitcrook.itch.io/44-game-boy-fonts