Print Page

Wednesday, December 3, 2014

DunGen - Hoards for the Hordes!

Big treasure update in DunGen released - most of the magic types are pretty filled in now, Jewelry and special items of value are in, gems have more value options. Scrolls and books are still basic and will get attention next. Yeah, some of it got a bit silly, but hey, that's the kind of thing the edit and reroll functionality is for.

Next time I'll work one one of these aspects: Make the Delete from Storage button work. Get some detail in on scrolls and books. Add some more layout options. Give the monsters some attitude.

The URL once again is:

Have fun!

Monday, December 1, 2014

New DunGen Release - Room editing that doesn't suck

Updated DunGen tonight and I'm very happy with the improvements.

It now has the dialog box room editor I've been meaning to get in there for awhile now. This will get expanded and improved now that it is basically in place. I anticipate adding name and contents re-rollers to the dialog box, and converting BR tags to line breaks in the textarea and back again for handier editing soon. With this editor in place as is, it rounds out the basic editability so that you can randomly generate a level and tweak the contents to your satisfaction, and save it for use later for another editing session or a game.

Other features hacked in yesterday for today's release include:

  •  A 1 in 6 chance of a room "oddity", a bit of color text. This will probably get a reformat from the idea sketch to real sentences next time around.
  • Expanded treasures - there can now be more than one kind of loot in a room, and more than one magic item, with more likelihood at higher dungeon levels and bigger treasures tending to have more magic items. This will get further tweaking, especially the addition of jewelry and other kinds of valuables to the basic coinage and gems currently in place.
  • The random monster list for the level starts out by rolling for one to three "common" monster types for the level. This list is used for approximately half of the monsters of the level. So you might get an orc dominated level or a spiders and goblins level, etc. This is my first pass at giving a level a bit more thematic unity.
  • Potions get real descriptions now, the first type of magic item to get a more detailed treatment. Some are ones I like from OD&D, others made up on the fly or dredged up from other memory. I left out some of the OD&D list, ending up with an idiosyncratic list of potions I think might be fun to use. Notably, I left out a lot of the control and recon potions, and added more bad potions that are more interesting than save or die poisons. I'll be working my way through the other types of items with a similar mix of standard and added items in each list.
  • Traps have a couple of experimental additions. One third get a spelled out disarm and one half have a trigger mentioned. Since all three tables are used randomly, some combinations will be inappropriate, as a simple floor pit for instance is unlikely to have a way to "disarm" it, but it would take a lot more sophistication in the code to evaluate sensible combinations so for now, this is one of those things where you edit out the silly combinations that you don't want to rationalize.
  • The dialog box plugin I used (bootbox) needed the Bootstrap CSS library, which meant some styling changes. It's a good foundation for improving the look of the page in general, when I start taking more time on that aspect later. And it will give me a bit of practice at using Bootstrap, something I've been meaning to do for awhile.
  • If you dig into the JavaScript, you'll come across the beginnings of wilderness node and edge randomization lists, currently lying fallow like the trap triggers and disarms were before. Eventually, I'll have a toggle to generate wilderness area maps. The next step is to do another set of tables for creatures and people encountered for the wilderness, which will add some things that I didn't include in the dungeon lists.  After that will come cities. Both will probably take some thought about structuring sensible combinations of nodes and edges, so cities get coherent "neighborhoods" and the wilderness gets ports with links by sea to islands and stuff like that.

Saturday, November 29, 2014

Thanksgiving Caverns

Started painting Dwarven Forge caverns from the second Kickstarter Wednesday. My wife put up with me hogging the table for a few days* of furious painting and graciously asked me to return it to normal, and I was getting a bit tired anyway. So I cleared away the assembly line last night. Here is a quick layout of  everything painted so far. A few details left to go and I might give them all a polyurethane spray satin sealer coat after checking it on a piece.

(*Turkey dinner being at her mother's home)

Tuesday, November 25, 2014

Magic Item: Scroll of Spellstealing

A Scroll of Spellstealing can be found in any of three states: Discharged, Spellstealing, and Spellstolen. It can be either a Greater Scroll of Spellstealing that harms the spell book, or a Lesser one that merely copies from it.

When there is a spell on it, it can be used to cast that spell normally or transfer the spell to a wizard's spell book. This clears the stored as usual but unlike a conventional scroll, this does not destroy the scroll, instead it returns to the Discharged state.

Each Scroll of Spellstealing has a way of being recharged from the Discharged state to the Spellstealing state, and will show the required ritual in magical text when discharged.  Examples range from simple - cast a Detect Magic, a Read Magic, a Read Languages, and a Knock targetting the Scroll, to the complex and dangerous - 2D6 HP of blood from a summoned demon and the caster each have to be sacrificed in an hour long ritual consuming 200 GP plus the cost of the demon summoning.

In the Spellstealing state, a permanent spell upon the scroll can be read, targetting any spell book within 60 feet of the caster. This power takes time and the scroll must stay within 60 feet of the spell book for three full rounds in order to hack into the spell book and copy a random spell from it. The scroll user is using the "read scroll" action in the first round, and can take other actions in the following two rounds, while staying in range.

Spellstealing  Failures
If the target spell book is in the possession of its wizard, the wizard will get a save vs magic to resist the effect after the first round, and might then get a spellcraft check (or a roll of 1-3 on a D6 in OSR games) to discern what the threat was that needed resisting, especially useful in the case of failed resistance.  Successful understanding would allow other defensive measures. If the spell book is removed from the range of the scroll too soon or the power is resisted or otherwise interrupted by an effect like a Dispel Magic cast at it or the imposition of an Antimagic Shell, the scroll becomes Discharged and its user must save by rolling higher than the level of spell it was stealing on a D20 or the Scroll of Spellstealing is destroyed by the interrupted magical transmission. Save again in the case of destruction or the destruction is a violent burst of colorful magic side effects doing 1D6 damage per level of spell it was stealing in a radius of 5 feet per level of spell, Save vs Magic/Will Save/Wis Save depending on the edition to avoid damage, or a roll on the random magical effects table of the DM's choice in place of the raw damage.

Spellstealing Success
There are two versions, the Lesser Scroll of Spellstealing copies the spell from a spell book, leaving the spell book unharmed. The Greater Scroll of Spellstealing transfers the spell from the spell book, leaving behind a blank page, gibberish, an annoying message like "Thy Grimoire hast been Haxxored", or a subtly damaged version of the original spell that will backfire with a random magical effect on the caster if memorized and used, depending on the whim and effort expended by the creator in its crafting. The Lesser Scroll is thus more subtle and can be used to get an extra casting of a spell from your own spell book, while the Greater Scroll of Spellstealing is a weapon that will drive a targeted wizard to fits of anger and despair and a deep desire for vengeance. Greater Scroll is not much use to capture a spell from a wizard's own spell book, outside of a dire emergency, since it deletes the spell from the spell book and it would have to be used to restore the spell to the book or cast it and lose it permanently.

The easier the charging ritual is, the more expensive and valuable the scroll is. Greater Scrolls will have more difficult and expensive charging rituals than lesser scrolls.

Thursday, November 20, 2014

DunGen updated with edit and save working together

Yay! my refactoring to use the DataSet class worked great! So I have all the edit operations bound and working.

What just got done tonight:
You can now generate, edit and save dungeons done in DunGen and load them later in the same browser.

What's coming next:
Description editing is still at its most rudimentary in a prompt box for proof of concept. This is not too useful for long descriptions. Will expand to a full JS dialog box from some library. Will probably also add inline editing in the table.

Wednesday, November 19, 2014

DunGen 1st pass at Save and Load

Have dungeons saving and loading using LocalStorage. Still need to get some of the edits back into the data model so they can be saved.

Approximate order of next features:

Update deletes and edits in data model.
Add edit full node (room) contents to data model and graph.
Activate Delete dungeon button.
Have some fun growing the treasure randomizer.

Further down the road:
Add a couple more basic designs to the geometry choices.
Add a multi-level dungeon "side view" generator mode to the geometry choices.
Add either textfile export and import so you can move a dungeon to another device or get started on accounts and server sync so you can move from one device to another that way.
Add in an approach to list customization so you can select room and monster sets by tags.

Thursday, November 13, 2014

DunGen is starting to get good

DunGen dungeon generator

Here's a screenshot after tonight's work. I have addition of rooms and edges working now. Random pattern isn't leaving loose nodes. Rooms mention "hooks" that the DM can use as clue sources. There is a bit more to do on editing, like removing deleted nodes from the list, and adding editors that allow room descriptions to be changed, then I'll start on saving, or possibly on revamping room contents as data objects that render into strings rather than being saved as strings, to give more flexibility, before getting on to saving them. I want to avoid having saves be incompatible with later developments.

Minor refinements to do soon: the Redraw button does not change the canvas size when the window size changes and it should. Found a bit about that in the docs, but need to understand it better. Might want to play with the physics model and editing stuff to see about letting some edges be longer so their labels can be unhidden. Its probably a manual tweak. Alternatively, if I can toggle springs off and drag the nodes around to fixed locations, that would solve the issue too.

Sunday, November 9, 2014

Dungen Dungeon Generator is up!

It's very rough but online after two very busy days of hacking.


Leave comments here on the blog, on the Hobby Hovel, or on G+.

Haven't had this much fun programming in ages...

Working on a Dungeon Generator

Yesterday I started coding on a project that I have been mulling over for awhile. It's a JavaScript random dungeon generator that will produce both a graph linking location nodes with edges that are hallways or doors, and populate it, with OSR, D&D5e, Dungeon World and Barbarians of Lemuria as likely systems I would consider stocking for.

Here is an example of the current output using a branching algorithm to generate the edges. The names for nodes and edges are simply being randomized out of arrays so far and it is not yet stocking with monsters, traps, loot, and details. It will get smarter. I'm working now on an algorithm that will add some looping without making it too tangled.

Since I am using VisJS's graph drawing module, it will arrange itself with physics springs, with some manipulation available out of the box and with editing tweaks available, so you should be able to add/edit/move/remove links and rooms eventually.

It's pure JS/HTML/CSS, so I'll be able to put it up for you to play with pretty soon. I don't know yet the tech stack I'll be using beyond VisJS. I've been looking at Meteor lately, so that may be what I explore when I get to storage and server parts. Rails would be easiest for me serverside, but I'd like to do a project bigger than a toy that has a JavaScript server.

Here is the very rough plan, with the intention being that at the end of each sprint there is some usable new functionality, and if I should burn out, whatever is done can stand. The order of some pieces will likely change.

First sprint:
Generate a dungeon graph with some simple labelling on nodes and edges. Have a couple of selectable linking strategies, one that is more gridlike and one that builds clusters and adds sparse links between them.  Deploy to a web page for people to play with. This one is beyond half done. Should have a couple of decent algorithms for hooking things up by the end of the day.

Second sprint
Start stocking critters/traps/treasure. Include a table beneath the graph that lists the contents.  Push the repo to GitHub.

Third sprint
Flesh out editing so that changes get back to the models and include editing labels and descriptions.

Fourth sprint
Add local data saving and retrieval with an index listing of dungeons you have generated, so you can go back to them and use/edit them from the app.

Fifth sprint
Add a server layer and authentication so by making an account, you can save a dungeon to a server and retrieve it on another device. Publishing for shared/public editing?

Sixth sprint
Theming tables - modularize the randomization tables so that a level can be generated with themed sets, and add controls to dial up and down the ratios of empty/traps/monsters/treasure/features. Explore adjacency effects in the randomization, so that a level can have themed groups of areas with some coherency in how they are stocked, and possibly a layering of stuff that makes sense at the border vs the interior of a set, relations between neighbors, etc. Adding Wilderness hexcrawl theming tables would make great sense at this stage.

Seventh sprint
Open up random tables so users can create their own and "publish" tables that others could select for populating a dungeon. Or possibly hook to some of the other internet random dungeon population resources for contents, see if Abulafia has API access or accepts scraping, Dungeon Dozen links for specials, etc.

P.S. It is up and running at with most of Sprints 1 and 2 done. Further revision to balance treasure to monsters and allow level selection and refresh without page reload in the works. Also planning to make some of the rarer room and connection types be done deck of cards instead of dice table style so you can't get three gazebos like I saw once, and start towards theming by holding weaker monster types once rolled so they are more likely to reoccur. Then probably some fleshing out of the treasure and magic items tables before going on to sprints 3 and 4 for editing and saving.

Monday, October 27, 2014

Restarting the Ed's Hobby Hovel site with a reposting of Rencounter

Finally got around to reposting my Rencounter skirmish rules to the web. Had started a bit of a site on Google Sites without any significant content, so getting Rencounter up is the first thing to make it worthwhile to reopen the doors.

Rencounter  Being a Set of Rules for Ambuscades, Skirmishes, Rencounters, Affrays and Divers Small Actions Conducted with Model Soldiers

Thanks to the Wayback Machine for being a more convenient archive than my dusty backup drive, and Walt O'Hara for the ePub copy he cobbled together awhile back.