Wednesday, May 22, 2019

Reorganizing the Blog

Now that I finally managed to get 1,000 gp and cast resurrection on myself, I'm reassessing the blog and its organization. I may be shuffling some stuff around a little, so expect some possible changes to tags, tag structure, and pages. I don't see myself pulling down any posts, but since I am currently on a two-pronged attack to content creation, I think I need to sort posts along those lines a little better. If not for your sanity, for mine.

As a side note, I am hoping to be able to return to every-other-day posting in the near future, but I'm not quite ready yet. I'm still putting together content from my Science Fiction project and my fantasy stuff. A few things to expect at some point: a lot of power-ups, an alternate approach to DF character generation, and a methodology and step-by-step setting generation for the science fiction setting.

Tuesday, May 21, 2019

A Monster a Day...

Mapping this abbey has made me realize how few demons I have statted up at present. To that end, I have done a little work on developing a couple of demon lords and am working on the kinds of demons, spirits, and undead they command. So far, I've already beefed up my list a little and am trying to maintain a pace of one to two monsters a day until I feel comfortable stocking a dungeon thematically.

A nice side benefit is that I'm accruing some Hidden Lore (Demons) and Hidden Lore (Undead) information that players might discover depending on what they investigate. Of course, even if they don't look into such things, it will provide a structure that should provide that much-needed cohesion amidst gobs of otherwise desperate monsters. I know funhouse dungeons are a staple in the genre, but I prefer there to be more internal logic. It helps maintain an ambiance.

What sort of background do you use to help seat your monsters in the worlds you create? Do they just exist on a whim or do they have deeper origins?

Monday, May 13, 2019

Mapping an Abbey

While it may not look it from my posts as of late, I have been trying to split my time between making progress on a science fiction setting and doing some mapping and worldbuilding for dungeon crawls. To will be a post on the latter.

So lately, I've been mapping up a small abbey to serve as the first level of a larger dungeon. Naturally, it is dominated by its cathedral that has two towers and a central dome. Unlike traditional catholic cathedrals, I decided the bells would go in this dome, and the entry-way towers would be spires. This just felt good when I was making the map.

The outlying buildings are a two-story affair with the usual rooms associated with a monastery - refectories, calefactories, scriptoriums, and lots of other churchy-sounding names. And like any good dungeon entrance, this abbey has a cellars and an underground burial catacomb so the monks and nuns that live there never need leave the walls of their sanctum.

So that's a quick rundown on the abbey, but how does it sit within the region? Well, for starters, it is an ancient complex perched upon a forested hill about a day's ride from what remains of the village that once supported it. Both are now abandoned, but the abbey has fared far better than the village. Many legends and superstitions attribute the abbey's well-preserved condition to any number of supernatural causes - none of them particularly holy or good.

This is what I'm currently working off of. I'm sure it will grow deeper as time progresses, just as Alnwich did when I worked on it. For now, though, I can definitively say that there is an abbey - with a map! - that definitely qualifies as a Bad Place, and under it is some sort of dungeon. How mega it will be is up in the air.

Monday, May 6, 2019

Automating Architect of Worlds Update

I feel like I haven't made much progress on my automation of Architect of Worlds project. Step Eleven has proven far more troublesome than originally anticipated, largely owing to the fact that I didn't save enough information from Step Ten - specifically how far inward the dominant gas giant migrates. I had just stored the final position for later use. Oops.

Once this was rectified, I ended up reevaluating my approach to Step Eleven to put it more in line with what Jon wrote in the first place. See, originally, I was generating all of the orbits, stocking all of the orbits, and then deciding which orbits to delete, but I realized this was just taking extra time and wasting memory. So now the Step Eleven function will run through Step Eleven then decide whether or not to place another planet, and continue from there.

There is also the matter of how I will store all of the planets' data. I am still not 100% sure about how to set up the data structure for this project in the most efficient way possible. As it stands, I have a bunch of separate objects, but I'm starting to wonder if these should go in lists in a variable in the parent or not. So, frex, System has a variable called Stars that contains a list of Star objects, and each Star object has a variable called Planets that contains a list of planet objects, and so on.

I'm not sure I like this and haven't committed to it, yet. But it looks like I will need to pass a list of planets out of Step Eleven, and future steps will process this list, one planet-object at a time. I am really hoping someone leaves some suggestions in the comments, below, because this is definitely pushing my understanding of data handling.

Monday, April 29, 2019

Niche Protection at the Table

Once upon a time, I played Dungeons & Dragons. A lot of Dungeons & Dragons. This was back during Third Edition, and I loved it. It was a blast. Everything felt new, and shiny, and wondrous, and everything fantasy should be.

But Third Edition had its flaws. As time progressed, the cracks in the system become more and more apparent. Wizards of the Coast released more and more bloat. And eventually, I found myself houseruling the game heavily.

It started with patching the broken bits. Then I started expanding the system with new spells, and equipment, and feats. Eventually, I moved on to making entirely new classes that offered the sorts of characters I wanted to play. But cracks in the class system itself began to show.

So it comes as little surprise that when WotC decided to release Fourth Edition – a system I did not care for –, and all of my friends updated, I went in search of a new system. This led me to GURPS. I loved the customizability of it all. Want to play a cybernetic psychic were-rabbit cyborg mage? Just convince your GM, because you can make it and the rules do support it. And that’s how I ended up playing GURPS.

Right now, you’re probably wondering what this all has to do with niche protection. See, GURPS has these things called templates in Dungeon Fantasy, and I have a love-hate relationship with them. Templates are essentially classes, but with more flexibility for the players. They greatly speed up character generation, and they ensure that PCs have minimum skill and trait levels to be viable in the game at the intended difficulty level (unless you’re gaming in Felltower). However, in DF as written, it is encouraged that players use these templates and there are even suggested mechanics for enforcing them because they, themselves, enforce niche protection.


What Is Niche Protection?

Niche protection is the practice of making sure that every PC has a role to play and that no other PCs step on that role. So using DF as an example, the barbarian template covers the role of “good at nature”, and the scout covers “good at ranged combat”. There are a ton of templates, so I won’t cover them all. The point is, these templates act very much like classes in Dungeons & Dragons.

So why don’t I just ditch them? Because there is something to be said with each player having a thing that their PC excels at. Everyone should share the spotlight and get their moments of awesome. That can be hard to do when two PCs are similarly awesome at the same thing. So niche protection is not without its up sides. And that’s what creates the quandary for me – I want players to be free to surprise me with their PC designs, but I want to make sure each player gets his Awesome Time.

What to Do about Niche Protection

So let’s begin by taking a quick look at what is good about niche protection:
  • Everyone is good at something
  • No one steps on each other’s Moments of Awesome

Now, let’s consider what is bad about niche protection:

  • Stifles creativity by restricting choices
  • Inherently meta-gamey and thus risks breaking suspension of disbelief
Lastly, what is ugly about niche protection:

  • Erodes what makes GURPS an amazing system

With these things in mind, I am going to make a couple of suggestions that might blow your mind. They may well revolutionize how you GM. TALK TO YOUR PLAYERS.

Yup. That’s it.

You don’t need to protect niches if you just have an open conversation with all of your players. Let everyone hash out what they want to play, what roles they see their PCs filling, and so on. If two players want to cover the same role, make sure they are okay sharing the spotlight. If a role isn’t covered, let the players know there is a hole in the party’s skill set. You’ll be surprised what good communication can do for a game table.

Where Does That Leave Templates in DF?

Well, for me, it doesn’t leave them much of a place. I don’t plan on enforcing niches mechanically in any way. I do plan on offering competency packages to speed up PC generation, but they are just that – competencies. Want to be good at breaking into places? Take this package. Want to be a mountaineer? Take this package. No text to suggest reasons for taking them. It’s up to the player to figure out why his master swordsman is also a world master ballet dancer.

Does this mean that players have complete and total free reign at my table to make whatever psychic blueberry muffin they want? Nope. I talk about what is appropriate. I provide guidelines and review all PCs. And I give meaningful feedback on strengths, weaknesses, and how well they fit the game. In other words, I talk to my players.

Wednesday, April 24, 2019

Free Time at Last!

I really abhor writing these fluff posts, but I want to at least make my current once-a-week posting schedule. My schedule is lightening after one hellacious semester, and I think I can work back up to an every-other-day posting schedule in a little time. I won't try to do it right away, because I need to maintain a buffer of at least a couple of weeks. So for now, I'll keep posting weekly while I build up a backlog of posts.

To those of you have stuck with me through this drought, I thank you. You're interest and support is greatly appreciated. Hopefully, I can pull back those who left and even grow this blog a bit. So if you know anyone who stopped coming around because of lack of activity, let them know I'm back and will be posting content again regularly. Cuz I'm back!

Saturday, April 20, 2019


I am taking note of some general trends today. It has been about a year since I started making a solid effort to post regularly on this blog, and since then, my viewership has gone up significantly. Similarly, since life has torn my attention away from the blog this past month or so, readers have also left my blog. I am left to believe that my posting is then, positively correlated with people reading this blog. No real surprise there. Who reads that which they've already read anyway?

So where does that leave the blog? Well, I am still struggling to get free time to really post here. With my degree wrapping up, that time should start flowing in about two weeks, but as in the past, I will need to built up a backlog of posts to provide a cushion for life-hiccups. That might result in a few missed posts until I get that buffer. Also, life will be rearing its head again at some point in the coming months while I move. I don't know when that will be, and hopefully I'll already have my cushion written by then.

As for blog direction, I plan on splitting it fairly evenly between a science fiction project (a genre GURPS truly excels at while that other systems just fall on their faces) and fantasy (not straight DF, because while I love me some Diablo, if I want to play that, I'll play it on my computer - not at my table).

So expect more posts on worked examples of adapting GURPS to a science fiction setting - specifically one with space opera overtones and hard scifi sensibilities - and GURPS fantasy that will involve dungeons and hex crawling and such. I hope this is of interest to people.

Monday, April 8, 2019

Automating Architect of Worlds: Update

I recently reached Step 10 - Place Dominant Gas Giant in my quest to automate Jon Zeigler's Architect of Worlds star system generation system when I read his post on how reality is impinging on his development plans. While I agree with his approach, it got me thinking about how I want to deal with this particular issues and future updates to the program.

Monday, April 1, 2019

AI, Software, and Databases in GURPS

Obligatory Abstract "Cyberspace" Artwork
I recently found this post on computers and software over at Orbital Vagaries, and thought he hit on a few things that have always really gotten to me about how GURPS Ultra-Tech addresses computers:

  1. The in-game difference between different types of AI
  2. The cost of software
  3. The effect of databases

Types of AI

I've always liked the different categories of AI, but the functional dividing line between Non-Volitional AI and Dedicated AI was always blurry to me. Christian Blouin's description of how characters might interact with each really breathes life into these differences and codifies it in my mind. For me, that is critical, because if the GM can't visualize it, how can he describe it to the players?

The Cost of Software

The software pricing in GURPS Ultra-Tech is low. Very low. By it's measure, a modern copy of Windows or MS Office should be virtually free. Do you hear Satya Nadella laughing in Seattle? Yeah. And that doesn't even begin to address more niche software like ANSYS or MATLAB. And we still haven't gotten into highly-niche or classified military hardware that is exorbitantly expensive.

While Christian is right that Traveler prices are better, but I'd argue that there should be  modifiers for software that address competition, standards, etc. This is probably as simple as having set that addresses overall competition strength - e.g., Monopoly (x5 price), Minimal Competition (x2 price), Moderate Competition (x1 price), and Highly Competitive (half price) - and another set that covers the degree of robustness and rigor required by the end user - e.g., Extreme (x5 price), High (x2 price), Moderate (x1 price), Low (half price).

Thus, military software that is expected to be extremely robust and whose author has minimal competition due to the political nature of the contract awarding process would charge 10 times as much for the software as what a similar commercial product sold to civilians who can shop around and don't require extreme robustness might pay. And if there is only one company who can meet the needs for that military software, it would run a full 25 times cost!

I might also argue for a third multiplier for availability, but that is likely rolled into any rolls to obtain software illegally from black market sources. I think I would use legality class to set a penalty to the black market roll and let the margin of success determine how much the seller gouges the buyer.

Also, because the robustness/rigor modifier does represent how reliable the software is, this should provide a bonus to the integrity of that software, should it ever come up. Any time software might be required to make something akin to a Malfunction check or roll to resist being corrupted or hacked, it should get a +2 bonus for Extreme Robustness, +1 for High Robustness, and -1 for Low Robustness.

Effects of Databases

While he doesn't specifically spell out the mechanics of it, tying a skill cap provided by a database to a database gives them a nice mechanical benefit other than, "If you don't have one, you can't use Research." I also like that they go out of date as time passes, and if I'm reading the rule correctly, I love that it is logarithmic. I do think to should be logarithmic based on skill cap, though, and not skill type. The type should set a category for the timeliness of information, and the step down should be skill-based.

Overall Thoughts

I really like what's been done here and will take some time to digest it. I think there are some tweaks and additions I'd like to make, probably including rolling what's there into what Thomas Weigel presents in Thinking Machines (Pyramid #3/37 - Tech and Toys II).

Thursday, March 28, 2019

It's Been a While

It's been a while since I last posted, so I thought I would drop a line to those of you who haven't drifted away. Life continues to consume a good portion of my time, but I think I can eek out a post per week, minimum, for the next month, after which, I should be able to get back to my every-other-day posted schedule, barring any unforeseen circumstances. I know it's bad form to post that you're going to post, but I'd rather keep posts as topical as possible. Expect a proper post this weekend. It might be about mapping, or it might be about science fiction stuff.

In the meantime, check out some of my recommended reading or the posts from blogs I follow!

Saturday, March 16, 2019

A Short Hiatus

I am getting inundated with work as I wrap up my second degree and won't be able to maintain my every-other-day posting schedule in the coming couple of weeks. As such, I will be taking a short break while I clear out some work. I'll be back to it in two weeks, though, with more hexy goodness, and maybe some ruminations on science fiction gaming.

Until then, have fun and enjoy the onset of spring!

Thursday, March 14, 2019

Mapping Update: Placing Locations - not Encounters

I have been working to place interesting locations on my hex map, and I've come to a conclusion. I am placing locations, not encounters. Why make that distinction? Because "encounters" has a specific connotation that revolves around conflict and implies a degree of railroading. If you enter this hex, the GM rolls and if the dice come up Encounter, the players have to deal with something predetermined by the GM. That isn't good GMing, in my view.

So instead of placing encounters that unfold a predetermined way, I place locations where something might be happening. I will roll to see if the players stumble on the location, and if so, give them information based on what they witness. What happens from there is 100% up to them. It might be a dungeon entrance. It might be a gnarled tree with a rope tied about its trunk. It might be a pile of rotting corpses. Whatever.

That doesn't mean there aren't random encounters rolled for hexes. These represent stumbling on an event that potentially provokes action. These could be combat-oriented like a dozen orcs charging a wagon with drawn swords, or they could just be creepiness like catching a glimpse of fish-men playing pipes in the distant fog. Again, these provide the opportunity for the players to make decisions. They don't exist to force players into a specific course of action...unless they really mess up a Perception check and get ambushed by a hostile encounter. But even then, there is a string of rolls that create that situation - Reaction rolls by the hostile party that indicate it will attack, opposed Stealth checks to see if they can sneak up and waylay the party, failed Perception rolls by the party, etc. The players get their chance to avoid it, dice gods willing.

So that's a whole lot of ranting about a concept, but how has it been implemented in the hex map? I have placed several locales in the uncivilized parts of the map so far. These are, for the most part, stationary (with one fun exception that might move once per week). I'm generally picking locations that scream out for something initially and then going back to fill in other ideas afterward. So far, Alnwich is pretty well covered, so I'm starting to expand the adventure bubble outward.  This method seems to be working well, so far.

Tuesday, March 12, 2019

Mapping Update: Alnwich

I have finished filling in terrain and towns for the entire northeast corner of my hex map. I started out going this direction because it provides natural barriers to PC exploration. To the north are the Skaldafjoll, which as subarctic to arctic mountains, present something few prepared high level PCs will easily cross, let alone starting PCs. Of course, the foothills and forests to their south are definitely good adventuring sites.

Mapping this corner first also gives me some ideas about how Alnwich relates back to Northmarch and Usk. It has already become apparent that there is a main road that leads back southeast toward civilization, and there is a full-blown town town around a week or two away.

I'm also starting to see what the edge of civilization looks like in Usk. There are a string of fortified villages that run along the wilderlands' edge in the north and the west. These are largely supported by market villages one to two day's ride away, depending on the sparsity of the local forest. Trails connect these village-forts to each other, and roads connect them to their supporting market villages. this suggests that they can shift resources to support each other as needed, but not very quickly.

We also see that where the forest has been cleared or grows thin, dirt roads tend to replace footpaths and trails and villages tend to be about five miles apart, instead of ten or more. Furthermore, the land tends to be cultivated with small patches of woodland still presenting physical barriers to travel.

I suspect that as one travels deeper into Usk, villages tend to reach their maximum packing density and the map becomes far less interesting from an adventuring standpoint. This also provides a barrier to PCs. If you move into Usk, there are fewer opportunities to get rich, achieve glory, etc. because there just aren't many monsters sitting on hordes of treasure left. So if players want a game of intrigue and cunning, head to Usk. If they want game of exploration, violence, and adventure, head to the wilderlands. And that's exactly the point!

Sunday, March 10, 2019

Naming Conventions for Stars, Planets, and Moons

As you all know, I have been working on automating Jon Zeigler's Architect of Worlds system, and I've come to realize recently that I need a nice, coherent naming convention for stars, planets, and moons.

As far as I am aware, the current convention is that individual stars get names A, B, C, etc. in order of mass from most massive to least massive, and planets append a lower-case letter on that based on the size of their obit, from innermost to outermost. In this convention, Earth would be designated Sol c. The second planet around the second most massive star in a binary would be [StarName] B b. I am not aware of any standing convention for naming moons around exoplanets.

I have a couple of issues with this convention. Firstly, it lacks a means by which to address moons. I need that because I will be generating moons. Furthermore, I dislike that both the star and planet are designated by letters. This just sounds weird when said aloud. It will also invariably become the butt of jokes at some point - there are just too many combinations that will elicit a giggles (Planet B-j?). So let's take a look at some alternatives.

Immediately, alternating between letters and numbers for unnamed planets comes to mind. So the third planet around the second star would either be 2-C or B-3. I kind of like keeping the stars designated by letter, so I'm going to opt for the second in this case. Also, that number might be designated by Roman numeral or by Arabic numeral. Using the previous example, we get either B-3 or B-III. Again, I like the latter - mostly because it looks cool.

So now I have a way to deal with stars and planets, but what about moons? Again, we want to avoid repeating what just preceded it because that looks weird and sounds weirder. So the current form is <letter>-<number>. This suggests the next should be a letter. Let's consider that moons are small, so let's make this a lower case letter. Taking the first moon about B-III, we get B-III-a. This is easy to read but in text, it's a little aesthetically lacking. So let's drop that last hyphen. Now we have B-IIIa. That looks good to me.

That covers moons around planets around single stars, but what about planets that orbit entire binaries...or trinaries...or quaternaries? I suggest the letter grouping for the cluster being orbited be used in the first spot. So a planet orbiting a binary would start with 'AB', and one orbiting the second binary in a quaternary would be 'CD'. If a planet orbits an entire trinary, it'd start with 'ABC'.

With this, we can describe any planet, moon, or star in a star system, and at a glance, know the basic nature of its orbit. I think that's a good start for now.

Friday, March 8, 2019

Automating Architect of Worlds

I've been using the Architect of Worlds system as a small side project to get some extra experience doing non-numerical-solving things in Python, and I am up to Step Eight of the Star System Creation bit. So far, its going amoothly, but I think I'm reaching a point where I need to sort out how to handle all the data being generated.

I'm currently thinking that I'd like some sort of parent-child structure so moons belong to their planets, and planets belong to their primaries, which in turn belong to their systems. I've never had to do this sort of data handling before, so this will be a good learning experience.

I'm also hoping to round out the sequence by generating as much of the non-gaming-information available on a typical Wikipedia page as possible - stuff like flattening, surface area, etc. Ultimately, I'd love for this to output a database I can keep in Access and use to generate pretty system reports for players with a couple of button clicks. I have no idea if I can pull that off, but I'll definitely learn a lot trying.