Git Product home page Git Product logo

syndaryl / dfrpgrandomdungeongenerator Goto Github PK

View Code? Open in Web Editor NEW
34.0 34.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%
gurps html-css javascript-game map procedural-generation tabletop-rpgs

dfrpgrandomdungeongenerator's Introduction

Syndaryl

Github Pages

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

Player Maps

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

Doors in hallways.

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

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.

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.

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.

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.

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.

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!

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.

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

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.

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

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

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?

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.

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!

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.

Build by themes

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

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.

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

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.

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.

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.

Treasure Distribution

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

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.

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

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.

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?

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?

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

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.

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.

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".

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.

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?

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.

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.

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.

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.