Print Page

Thursday, November 19, 2015

Thugs and Ruffians

I'm at the tail end of a cold that kept me home a couple days. Looking forward to going back to work tomorrow. Whiled away some of the time painting and G+ chatting with some other minis painters in a chat organized by Kurtus Brown, muting my mic when the coughing got bad.

 Here are the guys I took from about halfway to pretty much finished in chat sessions. Also did some putty filling on the GW Oculus and sculpting stonework on a tower wrapped around a cocoa mix can. I'll show those pieces later. They're propped against the palette here to face them up into the light to cut down on shadows. They'll get a spray coat this weekend and then I need to pick out a skirmish set of rules to try with them and some older ones.



Sunday, November 15, 2015

Campaign surroundings for the dungeon, UI and data structures, urk...

The idea that some of the NPCs with places of origin in their names should share home towns weaves outward in interesting ways. With templating, it will be pretty easy to have a fair amount of description generated for each place, at least a size, and a label like village, town, city, settlement, etc. Distance and direction could be feasible, though with direction comes the need to discover how close coastlines are in each direction. Governance quality, notable figures,  economy... it starts to feel like campaign gen. Going whole hog, this would be the time to start developing the social/political network graphs, and try out the VisJS hierarchical graphing mode for some of them. And if  doing any of that, even just place names, it needs to have a way to save and reuse the lists so that the places used for naming NPCs met in the first level of a megadungeon are also used for the deeper levels, though it might be good to have some NPCs in deeper levels come from farther afield. If another dungeon is in the same campaign, it should have an overlapping set.

So far multilevel dungeons have been an implied feature, you can generate a set at different levels of opposition, and put in save names with the names matching but L1, L2, L3 or "the castle", "the pits", "the tombs" appended or some such to see in the select menu that they are related, and edit in level linkages into nodes or room descriptions. With at least NPC hometowns being shared, the saved data structure to fit the needs mentioned above starts to look like we build more than one data structure, dungeonLevel, dungeon, and world, or we build a nested data structure, a world contains dungeons and places, and possibly places are nested like dungeons, if some are taking their names from towns and some from higher levels of political organization, like kingdoms or regions. There either needs to be a way to load in starter lists to save and reuse or an editor list view that lets a DM replace random people and place names with names from the campaign. The reskinning tool can help at the current level of complexity, but there is a point at which the data flips the presentation from map of level plus room list plus free form notes field to something a bit more organized, where you can oversee and edit the various lists. The design tension is between making the additional features convenient, and not detracting from the convenience of the basic generation controls currently always at the top, map, lists, & notes.

Another area I've been muddling over using templating for is dungeon history. Pick an age since it was started, who dug or initially populated it, and if it is old enough, a brief narrative cycle of replacement, invasion, magical accident, corruption, etc that fits it with the current occupants. This could be a good source of room names in DunGen and of creatures, traps, hooks, and oddities for both DunGen and DunMap. Digressing, maybe there should also be a list of mundanities to go with the oddities, so that food stores, furniture, spare weapons, etc get more of a mention in room listings. DunMap, especially could use some of these scene setting items to replace implied atmospherics of the node labels. Anyway, potted history is more for the whole dungeon than dungeon level, but some could be done by level, perhaps with an evolving model kind of like Tony Dowler's How to Host a Dungeon. If actually building a megadungeon, it could even all be generated at one go, starting with a name and saving levels as you go, ending up with a hierarchical menu where each entry at the first level is a dungeon name and dungeon levels are nested.

So, yeah, that's at least another year's worth of stuff to do, aside from features like cultural name lists, theming on the remaining stocking lists, drawing and rescanning maps, adding graphical icons to the node style options, wikifying the stocking lists, intelligent magic items...

Postscript: Realized after posting that the natural presentation of the megadungeon is a graph of the levels and their connections in DunGen, and a classic side view with the level nodes placed on it in DunMap.

Saturday, November 14, 2015

NPC names with the new template system

I will be uploading today's version of DunGen & DunMap in a few minutes. A few days ago I uploaded the version that plugged in a dungeon name at the top of the Notes field using it. Today, I'm adding an upgrade to NPC naming that uses it. There will still be a couple more passes at least on naming to

  1. Improve the way the actual proper names of people and places are being generated from a simple one from list A and one from list B initial system, and possibly differentiate them.
  2. Store a set of place names early in the process so some can be reused by more than one NPC.
  3. Add more to the nicknames list. Found some nice historical viking and medieval ones on the web today and put a lot of the less raunchy ones in.
  4. Maybe add a way for users to plug in character and place source names so they fit their campaign a priori rather than after editing. This would probably go a separate entry for user preferences in LocalStorage, so you only have to do it  once per device (since I am not ready to deal with the concept of accounts and persistent server side storage for this project).
I'm really enjoying the nested templating and have more uses for it in mind than I have time to implement.

Wednesday, November 11, 2015

A Very Meta Random Dungeon Generation Post

Nothing to show for it yet, but I just achieved a milestone. Got my recursive string insertion templating function working. So I can pass it a string now that has sets of templating handlebars in it, calling functions inside, whose results could be other randomly generated string that have other handlebars, and it keeps calling and replacing until the whole thing is a resolved string. This means I can now do tables that have lookups inside of entries, and get the kind of effect the random generation wikis like Abulafia get for interesting merged results. It's much simpler that serious templating engines, but designed to be just what I need, and I can grow it as necessary.

So now I am writing some of those tables & functions to test it out in actual use, not just tests. I'm starting with a set of tables and functions to generate Swords & Sorcery trope dungeon/scenario names. The nice thing is the functions and lists that go inside the insertion marks will be usable as parts for naming other things.

I hope to have some results to show tomorrow night.

Tuesday, November 10, 2015

Add Your Maps to DunMap

DunMap loads maps from the URL text field, but it also has a list in the code that populates the select menu next to the field for convenience, and a randomly selected one from the list is loaded with the web page, both by filling in that field. Currently it holds maps I drew and a couple from the British Library expired copyright images collection. If you have some maps you made posted online that you would like included in the selector, leave a comment on this post, ideally with a short title for each under about 40 characters and the URL. Or you can provide a page URL that shows maps with titles and I can copy titles and image URLs there. I will NOT download your map and store it, it is yours to host. I will add an entry to this list in the JavaScript of DunMap to link it from your site:

var imageArray= [
  ["Select a map",""],
  ["EA: Megadungeon Level 1","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwv5YNWmYJOge5lqI5MUMKgEd-G6nTweH6rkD7-FcdpoL4ukT3qMUGn9f716bJMR497cPZKUcJRXwibZlVU_GMfeecA1bAkPcSTr30xCpCvkcYA87BVDfd4K4xtqh4JTEzAT0Z2W_gmn4/s1600/Level1.png"],
  ["EA: Great Hall","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpUl5WRPk6aK4dyL-ZrmBpo7cCq_-HQmngMDlVYvll46jucGrCmAMEoS7MUTXVzK_vQtQxKGXKkieaMg14ddBjNeW9pcr1K2nJIhrXnDUFkYdz5H675Wqzxg2VgEbv8kEyeTUFw1FEjWs/s1600/great+hall-partially+edited.png"],
  ["EA: Shadowkarst", "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFJQ0epAZYPOOHEwDIG5QpDRsspWJOzPgFwJopc_j69c-PxTIENMLlzlS2XJDTgDm9-ZUkxI9cMrJH4d8m9mYJ0EoL_k7gKoy7pzwVHhOr8NY49xkkzgmRMqbFlUlrDaH4Db73r__XMxM/s1600/Shadownkarst.png"],
  ["EA: The Devil's Staircase", "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc5d_8FIqDI5Jp426m18eME1fgQiHBIauP4M4ZVlyM82WV51whzJ8G4nQUtzFDzh_xO9iBn0XWbZ-4kJInjDTN8ZiNimDgJUg1MAz-7yxSwLXiQayxE0NpWvNcM89PX9M02ZWVleDJ8eY/s1600/devils_staircase.png"],

... etc


Please only submit maps that you have stably hosted and not likely to get stuck for exceeding bandwidth caps. I don't yet have code in place to retry if maps fail to load in.

Also tell my how you want your name and blog or source site listed in Image Credits section. I plan to prefix all titles in the menu with initials that key down to an entry in the Image Credits.

Please don't send me a link to a Pinterest or other collection of maps you found on the internet. This is opt-in by the map creators only. You can opt out again at any time and I'll remove links in the next release.

Monday, November 9, 2015

DunMap & Dave's Mapper

I had fun after work playing with Dave's Mapper to generate and export maps and then importing them into DunMap.  It's a good combo. I recommend doing smallish dungeons, anything from 0 x 1 up to 2 x 2 with edges and corners, from one artist or a couple that have similar background hatching styles.

Another Dungeon Map

This one was mostly about playing with a jagged line. I like this graph paper, except the blue lines are so dark they are hard to filter out without messing up the black. Anyway, its more fodder for DunMap.



Saturday, November 7, 2015

DunMap now has my map collection

Today I fixed the map canvas to 1200 x 1200 px so the numbers stay in place at reloads. With a fixed size, centered image, and square shape, I should be able to allow for rescaling to other sizes and still keep the numbers in the right rooms.

 But perhaps more importantly, I added my whole collection of maps to a menu so there is an easy access collection of maps to populate. If other map makers want some or all of their maps to be added, I'll expand the menu.

Fixed Wandering monsters and relationships note in DunMap. Went with a simpler generation of a bigger set of WMs at the beginning and adding relationships to the bottom of the note as rooms are added. This might split up the relations above and below hand entered notes, but that should not be too much of a problem, since most nodes will be added at the beginning.

Added font size and color adjustments to the Style dialog.

Added a button to lock out addition of nodes by stray clicks.


DunMap

Thursday, November 5, 2015

DunGen and DunMap

Hm, I seem to have broken the layout of DunGen inadvertently so the graph is overlaying everything else. Probably a CSS change for DunMap that leaked. Gotta fix that.

On the bright side, I have save and restore working in DunMap, was going back to see if the little mod I had to do in DunGen's save list handling broke anything when I found the graphical weirdness.


A bit later...
Fixed the overlay bug. Save and restore doesn't place the markers right if the window, and thus the canvas, change size. Will need to work out the right solution. Probably record the rect, and apply a transform when placing the markers again. Or need to make that canvas window size independent.

Back to the checklist (what's left now)
  1. Add a select menu of map names with stored URLs so you don't have to go hunting all the time. Considering offering to list maps by other people in a hierarchical by person's name menu, including maps by people that opt in. Use a random choice from the menu as the map at load time for variety.
  2. Change oddities and hooks to use theme tagging, so that retaining Theme is not useless with room names gone. Also good for DunGen.
  3. Maybe come up with a toggle to include room names in descriptions? They can be evocative, but will be wrong a lot when tied to a map, so may not be worth including.
  4. Thinking about save and restore- The canvas sizes are currently based on the window, but they need to be independent and recorded in a save so that at reload the points end up over the same map features. Will go to square canvases (or image based shape) with centered maps, put in a canvas resize, and record the canvas size in the DG.data and use it in the load of a saved map. Stop worrying about the key being visible.
  5. Toggle button
  6. Column widths
  7. Grow wandering monsters and relation lists as nodes are added. Check monsterlist in theme for a related bug due to not initializing with a batch of rooms.



Wednesday, November 4, 2015

DunMap WIP trial release

Got a lot in tonight. There is enough there to be buggy fun to play with.  You can lay in nodes on top of the map without raising exceptions. The map even scales to fit.

Re-evaluating the checklist.
  1. The edit vs use toggle mentioned above. (Naw, it can wait a bit)
  2. Hide the save and load controls - they don't work correctly yet, and I don't want it saving partial records I'd have to deal with.
  3. Remove the button for dungeon size, since generating out of place nodes that you have to drag is more work for the user than just clicking in the right places.
  4. Move and rename the load button next to the input box for the URL. 
  5. Add a map to load at start so it doesn't initialize to a blank screen.
  6. Add a bit of explanatory How To text.
  7. Set defaults on node shape, size and color that are better for maps.
  8. Table column widths, since the labels are narrower when just numbers. (it can wait a bit)
  9. A link to DunMap from DunGen.  (it can wait a bit)
  10. SetBaseMonsters and monsterSourceList need redefinition when no rooms are being initialized at start.  (Moved the calls around a bit, working now).
Good enough, I'm uploading now. http://meta-studios.com/dg/dunmap.html

 Save map image with numbers applied by screenshot and copy out the text in the table if you want to keep anything, like in the early days of DunGen.

DunMap - What's Necessary?

I got node placement by clicking on the map working this morning. Next up is a control to toggle between a placing & dragging mode and a locked mode so stray clicks don't festoon the map with extra nodes.

So what is needed before I do a first release?
  1. The edit vs use toggle mentioned above.
  2. Hide the save and load controls - they don't work correctly yet, and I don't want it saving partial records I'd have to deal with.
  3. Remove the button for dungeon size, since generating out of place nodes that you have to drag is more work for the user than just clicking in the right places.
  4. Move and rename the load button next to the input box for the URL. 
  5. Add a map to load at start so it doesn't initialize to a blank screen.
  6. Add a bit of explanatory How To text.
  7. Set defaults on node shape, size and color that are better for maps.
  8. Table column widths, since the labels are narrower when just numbers.
  9. A link to DunMap from DunGen.
  10. SetBaseMonsters and monsterSourceList need redefinition when no rooms are being initialized at start.
  11. I'm probably forgetting something....



Shortly after initial release:
  1. Record the node position in the data object for each node, prep for making save work again. And update at every move.
  2. Record the current map URL in the data object for the graph. More prep for save and restore.
  3. Change save and restore to use namespaced LocalStorage objects, probably prefix the dungeon name with DM-, so they can be recognized relative to any other LocalStorage objects available on the page and only actual dungeon listings go into the select box. Show the save/load controls again.
  4. Add a select menu of map names with stored URLs so you don't have to go hunting all the time.
  5. Change oddities and hooks to use theme tagging, so that retaining Theme is not useless with room names gone. Also good for DunGen.
  6. Maybe come up with a toggle to include room names in descriptions? They can be evocative, but will be wrong a lot when tied to a map, so may not be worth including.
  7. Thinking about save and restore- The canvas sizes are currently based on the window, but they need to be independent and recorded in a save so that at reload the points end up over the same map features.

Tuesday, November 3, 2015

DunMap Proof of Concept

Does not save, still very rough, but... Fuck Yeah!  Now, off to work and back to this tonight.



Working on DunMap

Nothing to show yet on the map loading version of DunGen, but I have a name for it. Figured out so far how to draw into the canvas of the network, but that ends up on top and gets blown away instantly, so I figure I have to underlay a second canvas with the image, using Z-index, and find out how to make the background of the network graph transparent. Found the controls to turn off zoom and drag of the network, so the nodes should stay where they are put over the image.

So things are being a bit more difficult than I imagined, but I'm moving forward again. If this doesn't work out this way, I've been looking at the API and examples for leaflet.js, that does Google maps style tiled and zooming maps with markers. But those get to be big collections of preprocessed tiles at different zoom levels, so I'd need to use it in the load one image without zoom fashion, since I want to be able to load images from all over, and lay markers over them.

Postscript: I set the background color of the body tag to see if the graph canvas is transparent already. It is! Also, in trying the image load yesterday I noticed that Dyson's image URLs end in some GET arguments:   ? width = x height =y  I tried dropping the height and changing the width and it still got the image with it's scaling set by the width. I guess either Wordpress or a plugin to it has a feature to rescale images based on those arguments. That could be quite useful.