Giter Site home page Giter Site logo

syndaryl / dfrpgrandomdungeongenerator Goto Github PK

View Code? Open in Web Editor NEW
34.0 11.0 13.0 2.08 MB

A HTML/CSS/JavaScript based random dungeon generator for GURPS. Eventual goals are to not only produce a map, but also populate the rooms with descriptions and challenges. Game statistics will be for the DFRPG / GURPS 4e.

License: Other

CSS 0.65% JavaScript 97.28% HTML 2.07%
javascript-game map tabletop-rpgs procedural-generation gurps html-css

dfrpgrandomdungeongenerator's Introduction

The DFRPG Random Dungeon Generator

WHAT THIS IS AND HOW TO USE IT:

A HTML/CSS/JavaScript based random dungeon generator for the Dungeon Fantasy RPG, and for GURPS (particularly the GURPS Dungeon Fantasy product line).

This is intended as an entirely stand-alone and cross-platform application. It does not require web hosting and it does not require installation of a scripting environment or other special software. All you need is to download, unzip, and then open "index.html" in a relatively modern web-browser (I just can't support IE6, sorry).

WHAT IT IS FOR:

The primary intent is twofold:

  • to accelerate game preparation, so the GM can minimize paperwork and maximize fun
  • to remind GMs about the many factors of dungeon design that are core parts of game balance in DFRPG and GURPS.

The most obvious two issues when GMs design their own "dungeons" are forgetting about mana and sanctity levels (making spellcasters particularly powerful), and not providing a varied enough palette of challenges (resulting in one profession becoming "the best" or another profession becoming "the worst").

The extreme use-case for this app is "push button, receive dungeon, start playing by reading out what's on the paper". It is currently possible to operate this way, but the experience will have bizarre elements introduced by the random systems and be a bit lifeless. Consider taking 30 minutes to review the output and replacing unsuitable encounters and descriptions. Or come up with a story to explain the insanity!

WHAT IT DOES:

This app produces a dungeon map image with customizable resolution (suitable for printing or for online play on a virtual tabletop) and a formatted room-by-room key.

Implemented Features:

  • Control over dungeon size, shape, room sizes, room frequency (lots of rooms packed into a small space vs rooms scattered around), hallway squigglyness, number of dead-ends, staircases, general dungeon security level, monster difficulty.
  • Hallways include height.
  • Room dimensions, including height.
  • Monster encounters keyed to party CER ("Combat Effectiveness Rating" - a starting party of four is usually in the 100-150 range).
  • Wandering monster table, populated primarily from monsters found in the dungeon.
  • Treasures keyed to encounter difficulty and overall dungeon CER (with option to produce completely random treasure using the DF8 treasure generator service, online)
  • Concealed treasures.
  • Doors with GURPS/DFRPG statistics for forcing open, picking, and breaking down. And shoving open, if they're particularly heavy.
  • Secret or concealed doors
  • Portcullises and how hard they are to lift.
  • Traps (currently handled by references to published traps).
  • Notes on general environmental conditions (Mana level, Sanctity, lighting).
  • Odd dungeon features (misty or dangerous atmospheres, weird and magical pools and fountains - and mundane ones).
  • Random dungeon junk in rooms to provide some colour and potentially interesting environments to interact with.
  • Randomize travel time to the dungeon or select manually. Further dungeons have better loot, but burn more resources to get there and back again.

TODO:

*Quick description of the enviornment, Survival checks for the trip from town.

  • Create random rumours about the dungeon to find in town.
  • Create some quest hooks - provide McGuffins to recover, kidnapped NPCs, name particularly notorious monsters, generate bounties
  • Generate some "exceptional" monsters with lenses or special abilities.
  • Have the program create completely new traps keyed to party CER, and provide statistics to the GM
  • Pit traps, and pits as an alternative to stairs to the next level. I love pit traps.
  • More dungeon environmental conditions:
    • What are the walls made of and how easy are they to climb?
    • What are the floors made of, and do they impose any interesting effects on movement and combat?
      These have implications for PCs trying creative solutions, and are key factors for determining Natures Power for druids (not currently evaluated).
  • Determine Natures Power level.
  • Traps in specific room hexes and in hallways.
  • "Setpiece" rooms and encounters - hand-crafted by a human to be guarenteed to make sense.
  • More variable hallway widths, option to force a minimum of 2 yards or 3 yards.
  • More coherent hallway digging algorithm (as an option; insane is also fun)
  • option to create "flow" in the dungeon level, adjusting difficulty according to proximity to entrance/exit.
  • match up stairs up/down to a "generate next floor" option
  • option to regenerate a room, encounter, treasure, or trap if you don't like it
  • Themed monster groups (with the option for totally insane monster groups too)
  • Dungeons (or subsections of large dungeons) entirely populated on a selectable theme
  • Cool hash-fill dungeon design
  • put water on the map
  • position dungeon junk on the map? (may never happen)

CREDIT:

This project is significantly based on version 1.0.3 of the random dungeon generator created by drow ([email protected]). We owe drow a significant debt of gratitude. Thank you for making this work possible by sharing your code.

Modifications and elaborations by Emily Smirle and Kyle Norton. Programming and data by Emily Smirle, Project Management and data by Kyle Norton. Code contributors include nasfarley88 and eggdropsoap. Pull requests are welcome!

This project is licensed under Creative Commons BY-NC 3.0

GURPS is a trademark of Steve Jackson Games, and its rules and art are copyrighted by Steve Jackson Games. All rights are reserved by Steve Jackson Games.

This game aid is the original creation of Emily Smirle and Kyle Norton and is released for free distribution, and not for resale, under the permissions granted in the Steve Jackson Games Online Policy.

dfrpgrandomdungeongenerator's People

Contributors

celti avatar eggdropsoap avatar natfarleydev avatar syndaryl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dfrpgrandomdungeongenerator's Issues

Range of room sizes?

Highland_Piper
on November 11, 2017 at 10:20 am said:
I only wish there was a way to include a range of room sizes. You know select Small to Large to add more variety. I have a heck of a time wrapping my head around the code for Inspiration Pad Pro let alone stuff like this!

Build by themes

It would be neat to encourage the generator to pull monsters and traps with a particular tag.

Traps and monster interaction

Some traps need monsters to do anything of value. They are currently tagged "companion" we should try to find a way to force those to spawn with monsters.
Related: some traps are really incompatible with monsters. I'll be tagging those "solo".

Suitable treasure for containers

We'd like to encourage containers that get rolled to be filled with suitable treasure.
Examples: weapons for a weapon rack, armor for an armor stand. and so on.

Treasure types we can currently implement are as follows:

Accoutrements
Armor
Basic Melee Weapons
Basic Missile Weapons
Books and Maps
Concoctions
Containers
Fiber and Fabric
Garments
Gems
Household Items
Jewelry
Martial Arts Melee Weapons
Martial Arts Missile Weapons
Other Materials
Rare Artifacts
Scrolls
Shields
Spices
Unusual Items

Quest generation

It would be neat to look at generating simple quests based on the following schema

  1. objective type (hostages, mcguffins, assasination etc)
  2. objective location
  3. objective timeline
  4. quest reward
  5. places to find quest in town

How to handle modifiying data files on the fly?

So recent discussion of this app on the GURPS forum thread suggests people:

  1. Want an easy way to tweak the data the generator uses, and...
  2. Want this to work on a remote/non-self-hosted copy of the generator...
  3. May or may not be comfortable directly editing Javascript to do it.

The first point is obviously already served by simply replacing the files in data/.

For the second, my initial thought was to simply tweak things to allow injecting replacement data files via an "upload" form into localStorage, but that doesn't satisfy the third point.

For all three, I see a potential path in the following:

  • Convert the various .js files in data/ into actual JSON.
  • Generate JSON schema for each of the data files.
  • Leverage something like json-editor to automatically generate and maintain UI to modify everything in the dataset, so nobody has to write and maintain individual fiddly bits.

Does anyone see any huge flaws in this idea? Anyone have a counter-proposal? Is this a subject that is better left to lie?

Loot level

Every campaign is different in terms of loot levels, Let's try to make an option to adjust how generous the generated loot is.

Update springs

Clarify on the random alchemy results that the results can be bottled, but not sold (as per Exploits, nobody buys unlabeled potions).

Decide if the random potion is random until tasted, or does taking it out of the fountain collapse the waveform.

Do we have enough magic pools?

Name of sizeArea.js is wrong

In the latest unstabale/master dungeon.html references data/sizeArea.js but in the repo there is only data/SizeArea.js.

#24 addresses this.

Add doors and door properties to room descriptions

Currently there is no text description of the doors in a room; a description of the doors would be a good place to relay door statistics, and it helps for GMs that get east-west north-south confused.

Containers and container traps

I'd like to see more containers generated to hold loot (treasure chests and the like) and to generate traps and locks for those.

Nul wandering monster table created

Dungeon Name: The Sepulcher of Ghastly Devastation
Map Style: Ink Miser
Grid: Hex
Stairs? Yes
Dungeon Layout: Rectangle
Dungeon Size: Tiny
Doors: Standard
Room Layout: Scattered7
Room Size: Medium
Party CER 500
Corridors: Organized
Trim deadends? Most
Generosity: 100%
Travel time: Randomly Selected

Detect unconnected areas and remove

Under some circumstances, sections of the dungeon may be generated unconnected.

Replication:
The Sepulcher of Bloody Woe
pyramid dungeon layout, dense room layout, dungeon size huge, room size small, corridors labyrinthian, trim most dead ends

Use flood fill technique to detect areas that are not connected to the main dungeon, and remove them, including rooms.

Label doors on map

When there are multiple doors on one wall face, the doors are numbered in the map key, which is great... but they're not labeled on the map.
We should label the map.

Decorate dead ends

Some dead ends might be trapped or whatever. Or at least have some graffiti on them. It's like a tiny 1 grid space room?

Names for Monsters

Kalzazz - Today at 2:50 PM
So instead of Bugbear 8 we will get Madlibs the Bugbear?
Kalzazz - Today at 2:53 PM
I really liked in like FFT and Disgaea random enemies all got names
Emily - Today at 2:54 PM
It's a good idea. Add it to the issue tracker!

Improved Door handling

We'd like to completely rewrite the door routines to make all 3 special characteristics (locked, secret and trapped) on the same door. The way it's handled now those can't stack.

Treasure Distribution

Boss level encounters should always generate treasure. Worthy should generate treasure regularly.

Detect unconnected areas and connect

Follow up on #22

Advanced solution: connect the separated areas rather than removing one (disregarding the dungeon layout mask).
Need to find an algorithm to find the edge of the unconnected mass, the direction to the main mass. Then ray trace between the center of both masses and use that to connect the edges of both masses via a tunnel.

Perhaps have both ends of the tunnel sealed with secret doors :)

We may want to filter particularly small areas and just nuke those rather than connect them.

Add a total CER line

Now that we sometimes get a variety of monsters, it would be nice if the generator output a total cer line for all monsters generated.

Town based dungeon connections

Things like rumors (true and false) to be had in town would be nice as well as generating tips on dungeon location and generating distance from town.

Template monster support

Things like Fungus and Ooze can change a fair bit in CER depending on random choices in creation. We need to develop a function that picks the needed subtypes and adds them to the monsters, then spits out a new CER for them. Once this works overall, it would be neat to be able to support something like adding a Warlord template to an Orc and adjust CER accordingly.

Whole Dungeon Tiles

Some traps and obstacles really need a whole tailor made room for them. We'd like to be able to include those.

Doors between rooms are not "shared"

There's two related problems here:

  • When two rooms are adjacent, both rooms may knock doors into the wall between them. This increases the number of doors in a wall shared with two rooms to approximately twice the intended value
  • Each room only manages the list of doors it opened, and does not know about doors opened by other rooms into its area, even though to a human that door is clearly part of both areas.

This results in a) a funny number of doors that b) are inevitably not completely described

EDIT:

  • Create central door registry (include door object, and co-ordinates)
  • move door creation to a separate pass after room creation
  • door creation needs to check the registry to ensure no conflict
  • write a method to determine if a room wall is shared with another room
  • door creation needs to inform the room on the other side of the wall

Save settings on local browser store

The program should save your dungeon settings so you don't have to keep re-entering CER, treasure options, and whatever.
Note to self: go look at the code you wrote on your Pathfinder character sheet.

Adjustable threat levels

We don't have a good way to adjust how many of what level of encounter (ex: worthy, fodder, boss). Want to add a difficulty selector in the initial gui when possible.

Report on connected rooms with inhabitants

A room should report on nearby rooms with monsters, and if possible list a Hearing penalty for those monsters to hear what PCs are up to. Based on corridor length?

  • Handle doors (and especially open arches) on a shared wall between rooms.
  • Handle rooms that are down halls.

Set piece rooms

It would be good to be able to implement rooms that have a preset list of features and then randomized in some other ways. Things like a Barracks / guard room, library, Alchemy lab, smithy, torture chamber, prison etc

Doors in hallways.

Syndaryl:
TODO
Random doors in halways
not just at the entrance of rooms
target intersections

Add note about monster state/behavior

[4:02 PM] Colarmel: Oh! have you guys considered adding a "monster-state" feature, like, the orcs are feasting and in their cups, or the rock elementals are playing rockball or the demon is waiting for someone to disturb his long slumber?
[4:03 PM] Colarmel: you'd probably have to leave it pretty general: waiting, distracted, sleeping or the like and let the GM decide why

This reminds both GMs and PCs that options such as trickery and negotiation are options, as well as sneaking in and stealing treasure and then leaving, leaving poison/traps, etc.

Room filling sanity check

Our rooms currently output size data, but don't notice monster size to make sure they fit. This should be fixed.

bazillion doors created - only a few shown

see room 4 of the map generated with this settings for a totally degenerate case
Dungeon Name: The Barrow of Bloody Sorrows

Map Style: Standard
Grid: None
Stairs? Yes
Dungeon Size: Colossal
Dungeon Layout: Square
Room Layout: Tight
Doors Standard
Room Size: Medium
Party CER 225
Corridors: Organized
Trim deadends? Most
Generosity: 100%
Travel time: Randomly Selected

Remote treasure service disabled

using commit 88ba818

Corridors doubling back

I've noticed some corridors occasionally double back to connect to the same room at both ends without connecting to any other rooms in between.
That's not necessarily a problem by itself--it might make sense to have a secret passage inside an NPC lair or an open passage for servants to get around a busy meeting hall without causing interference to the occupants.

However, it just seems strange to have a secret door that leads to a hallway that extends 30' then doubles back to an unconcealed doorway into the same room the PCs just left.

This is a feature request to include an option for removing such passageways (similar to dead ends), and/or make matching doorways at either end.

Clean up duplicate output

Sometimes the generator picks the same monster on two different passes for the same room. Would be more elegant to get those reintegrated on the same line.

Support for online beasties

Someone asked me if they could use a monster repository from the internet. I gave him instructions on how to start entering the data but it might be helpful if the page section attempted hyperlinks in some way if it detects a website.

Player Maps

At the moment we don't have a good way to output a map for use in VTTs. Working on that now.

option to choose sourcebooks

Not everyone who would use the generator has every book. Would be nice to limit choices to books available. Maybe even look at data files available in the directory and make a list that way?

DFRPG friendly obstacles and skill checks

We'd like to add things to the dungeons to make the various skills DFRPG values make sense. Things like climbing, acrobatics and swimming. Most of this may be in description tables or whole room tiles.

Reorganize room features

Features list needs to be split or tagged to indicate what kind of feature it is.

Definite "must" categories:

  • room structure modifications (alcoves, chasms, balconies)
  • items in the room (basin, table, game board). These might be further tagged to indicate ruined items vs items in good repair - to pair up with a state of occupation by people-monsters rather than monster-monsters or Empty.

Rooms need only a limited number of structure features per room regardless of size. Item contents, however, should be at least partly proportional to room area, and possibly room occupation.

Doors are boring

At present there are no random generators for doors, so they are all nondescript. We'd like to assign specific doors (in terms of construction material) and assign specific traps to doors.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.