User Tools

Site Tools


The material on this site is owned by Samuel Penn, and any queries should be directed there. Most of the material on this site is licensed under CC-BY-SA. You can view my profile on Google+.

Other pages:


Roleplaying and Wargaming

Glendale is an old website about gaming written by Samuel Penn. It may contain other things as well, but it's mostly related to gaming in some way. By gaming, I mean the tabletop variety - roleplaying games, wargames and sometimes boardgames. I play computer games, but I don't talk about them much (unless I'm writing them). Since some of the content here dates back to 1996 (when the address was on my bifrost domain at Demon), it can vary greatly in style.

Most of the content on here is entirely original. Some of it is based on material published by other people - e.g., game content for published RPGs or Wargames.

Campaigns Roleplaying Wargaming


Sub Sectors

In the Traveller RPG, a sub-sector of space is a 2D region of space measuring 8 x 10 parsecs. 16 of these make up a sector (32 x 40 parsecs). Each parsec is represented as a hex, which may contain a single star system. Similar to my previous version of WorldGen, I'm generating details on multiple worlds and stars in each system - a system can be a binary or triple system, and each planet can be multiple moons.

So far I've added the framework for creating basic star systems with a few planets - just enough to be able to test the sector maps. The first version of the maps is a REST API for creating a static map, an example of which is shown here.

I'm trying to display a bit more information about the star system than classic Traveller maps do. Information on the number and type of stars is shown. The star size determines it's luminosity - D for a white dwarf, VII for a brown dwarf, VI - Ia for dwarf stars up to super giants etc), the colour it's spectral type (red, orange, yellow, blue etc). The planets in the system are also shown - small or large dots for terrestrial or jovian worlds, lines for asteroid belts etc.

Since there's nothing yet to actually populate any of these worlds with a civilisation, none of the world civilisation data is shown. A summary of this will be displayed for the system's 'Main World' (probably based on population and star port type) when I get that far. How much data is shown will probably depend on the scale the map is displayed at.

The next step is a choice between drawing a map of the star system, or starting to write some proper planet generators (by far the biggest task, at least until I get to the economic model). In the meantime, here's some of what's in the database for the map shown ('sss' is a view onto the sectors, systems and stars table).

mysql> select * from planets where name like 'Oyysa%';
| id     | system_id | name            | parent_id | is_moon | distance | radius | type         |
| 145754 |    145752 | Oyysa Alpha I   |    145753 |       0 |      162 |   1054 | Selenian     |
| 145755 |    145752 | Oyysa Alpha II  |    145753 |       0 |      177 |     16 | AsteroidBelt |
| 145756 |    145752 | Oyysa Alpha III |    145753 |       0 |      220 |  29000 | SubJovian    |
3 rows in set (0.00 sec)

mysql> select * from sss;
| sector   | system        | x | y  | luminosity | type |
| Sector 1 | Imu           | 1 |  2 | VII        | T8   |
| Sector 1 | Edytre        | 1 |  3 | V          | F9   |
| Sector 1 | Tupi Minor    | 1 |  5 | VII        | T5   |
| Sector 1 | Ghuquistanu   | 1 |  6 | VI         | M8   |
| Sector 1 | Uman          | 1 |  7 | VI         | M9   |
| Sector 1 | Ghahir Minor  | 1 |  8 | VII        | T9   |
| Sector 1 | Sticanume     | 2 |  2 | VII        | L8   |
| Sector 1 | Thikytsa      | 2 |  4 | VII        | L6   |
| Sector 1 | Epsilon Acylo | 2 |  5 | VII        | L1   |
| Sector 1 | Otu           | 2 |  6 | D          | D8   |
| Sector 1 | Otu           | 2 |  6 | VII        | T6   |
| Sector 1 | Unu Yepy      | 2 |  9 | VI         | L4   |
| Sector 1 | Ghotod Prime  | 2 | 10 | D          | D5   |
| Sector 1 | Alpha Adud    | 3 |  1 | VII        | L6   |
| Sector 1 | Irehi         | 3 |  3 | VI         | L4   |
| Sector 1 | Naditi        | 3 |  5 | D          | D8   |
| Sector 1 | Naditi        | 3 |  5 | VII        | T2   |
| Sector 1 | Beta Hotonu   | 3 |  8 | D          | D8   |
| Sector 1 | Beta Hotonu   | 3 |  8 | VII        | T1   |
| Sector 1 | Oye           | 4 |  1 | VII        | L0   |
| Sector 1 | Anardu        | 4 |  4 | VI         | M0   |
| Sector 1 | Hyxuktat      | 4 |  5 | VI         | M8   |
| Sector 1 | Fity Ybew     | 4 |  7 | VII        | L2   |
| Sector 1 | Ane           | 4 |  8 | VI         | M7   |
| Sector 1 | Dahu          | 4 |  9 | VI         | M2   |
| Sector 1 | Little Eteh   | 5 |  1 | VI         | M3   |
| Sector 1 | Tayensa       | 5 |  4 | VII        | T4   |
| Sector 1 | Iquatu        | 5 |  6 | VII        | Y2   |
| Sector 1 | Oyysa         | 5 |  8 | VII        | T5   |
| Sector 1 | Oyysa         | 5 |  8 | D          | D6   |
| Sector 1 | Shaxifih      | 5 |  9 | VI         | L1   |
| Sector 1 | Noweh         | 6 |  3 | VI         | L2   |
| Sector 1 | Ebuvo         | 6 |  6 | VI         | M0   |
| Sector 1 | Sanabi        | 6 |  7 | II         | M4   |
| Sector 1 | Pheref Mege   | 6 |  9 | VII        | T5   |
| Sector 1 | Satiqugo      | 7 |  1 | VI         | M5   |
| Sector 1 | Ibe Seya      | 7 |  2 | V          | F0   |
| Sector 1 | Ahohu         | 7 |  3 | II         | M7   |
| Sector 1 | Ihodok        | 7 |  4 | VI         | L5   |
| Sector 1 | Ridefteri     | 7 |  6 | VII        | T3   |
| Sector 1 | Epsilon Yda   | 7 | 10 | VII        | L0   |
| Sector 1 | Ghotohihyyi   | 8 |  1 | VI         | M5   |
| Sector 1 | Shenana       | 8 |  2 | VII        | L6   |
| Sector 1 | Hahutuno      | 8 |  4 | VII        | L4   |
| Sector 1 | Wenahlu       | 8 |  6 | VII        | Y8   |
| Sector 1 | Wenahlu       | 8 |  6 | D          | D6   |
| Sector 1 | Odopayot      | 8 |  9 | VI         | M1   |
| Sector 1 | Nefuxdami     | 8 | 10 | V          | G7   |
48 rows in set (0.00 sec)

→

· 10 Sep 2017 · Samuel Penn

Generating Star Maps

I'm starting to re-write my Traveller-style star system mapper, and my current step is allowing the creation of a galaxy (or at least, part of a galaxy) from a simple density map. The idea is that you can draw what you want your star map to roughly look like by creating a grey scale image which shows the relative densities of star systems in different areas. Black areas have very few star systems, white areas are densely populated with star systems.

The mapping software will then take that and generate a distribution of star systems across Sectors of space using this density map. The sample image shows dark regions which represent an underpopulated rift, with a bright densely populated region at the top right. The probability of any given hex having a star system ranges from 1% to 95%.

The centre of the image is overlaid with a grid of Sectors that shows the actual generated star systems, with the core Sector (0,0) right in the centre. Using a density map allows the geography of local space to be easily sketched out, and then procedural generation can do the rest.

Though the shown map uses quite distinct levels of grey for testing purposes, any shade of grey can be used, and the map can be as uniform or clumpy as you want (after all, it's just an image).

A similar technique could be used to define different civilisations, types of stars or level of colonisation according to image colour or intensity.

→

· 28 Aug 2017 · Samuel Penn

Character Information

Roll20 can be great at allowing the GM to track information on characters and monsters, but I've found that accessing that information can be tricky at times. Having to find the token, open up it's character sheet, and navigate to the correct tab to find some information can be time consuming, and as a GM I'd prefer to have that information available immediately.

Over the last few years that I've spent GMing on Roll20, I've written a number of API scripts to try and make that process simpler. Recently I've been tidying up these scripts to make them more consistent, and also to make better use of the Pathfinder Character Sheets that didn't exist when I started.

There's two main API commands for getting information about a token - !pfdescribe and !pfinfo. The first is designed to output information to the chat window for players. I find putting information here, rather than in another dialog, to be quicker and easier. Running !pfdescribe on a selected token will output the name, avatar image and bio of that creature, merging information from both the graphic token and character. As a bonus, it will also check for status markers on the token, and output condition information about it. For instance, the Goblin shown here is both heavily wounded and dazzled.

The !pfinfo command is for use by the GM, and displays some basic stats about the creature, which also includes any condition effects that apply to it, just like the description. If the creature has special qualities, such as SR or DR, or attack or defence notes, these will be mentioned. It's also possible to add a note to the character sheet which will appear highlighted for abilities which are really important to remember (but which I'm likely to forget in the middle of a game), such as everyone having to make fear checks as soon as they see it.

The !pfdescribe commands also works for non-combat related things. It has three different modes, for three different use cases. If the graphics token has a character associated with it, then it displays information on the character as above. However, if the token isn't linked to a character it can be used to share other types of information to players.

The first is if the token has the same name as a handout, in which case any graphics and text from the handout are displayed instead. In this example, The Celwynvian Charge is a point of interest on a map. My current campaign is set in the city of Magnimar, and so one page consists of a map of the city. Various icons on the map can be clicked on by players to get information on the site.

If the token doesn't match a handout name, then the notes from the token are displayed. This was mainly designed for putting room descriptions on the map for dungeons and the like. It's also possible to reference images from the description, in order to show a picture. For basic text, I don't want to have to create a handout for every room, so instead just have a simple token (in the GM layer) with some text that I can run a macro against. This outputs the room description to the chat window. This allows me to give a quick freeform description of the room, and use the text for a more formal description which the players can read at their leisure.

I haven't got around to putting the scripts into the official list yet, but PfInfo and PfDescribe are currently available on GitHub. PfInfo is the core script which is depended on by PfDescribe.

→


A while back I wrote a mapper for the Traveller SF universe. By mapper I mean mapping every planet and moon in that universe. I went through various methods of generating world maps (aiming for quantity and descriptive accuracy, rather than quality), eventually settling on Icosahedral maps for simplicity.

These are similar in style to the original Traveller world templates, but using triangles rather than hexes for the internal grid. Basically, the Icosahedron (a twenty sided solid) crudely approximates a sphere, but is easier to flatten into a 2D map. Each of the twenty faces is a large triangle, and in turn I split these up into smaller triangles.

The last iteration of that code hardcoded splitting each face into 4 rows of smaller triangles. I got sidetracked for a few years after that, and now I've started looking again at re-writing things from scratch. I've started with the world mapper, and now have a basic generic framework that allows me to generate maps of any resolution. Those shown here start at 5 rows/face, going up through 8 rows, 12, 24 and 48.

The larger the number of triangles, the better the end result should look, but the harder it will be to auto-generate a consistent world map.

I'll probably start with gas giants, since I only need to create cloud formations. Barren ice or desert worlds are a bit harder, and Earth-like worlds are the hardest. As before, I'll want to be able to generate a textual description of the world alongside the map, so simply creating a random fractal map (which most world generators do) isn't the easiest option, since they're hard to describe.

→

· 25 May 2017 · Samuel Penn

In Search of Sanity

Our weekly 7th Sea game finished a few weeks back, and we have now started on another Pathfinder adventure path - this time Strange Aeons. For those who don't know, it's effectively a Lovecraftian horror scenario which begins with the characters waking up in an insane asylum with no memory of how they got there.

We've been playing Pathfinder on and off for the last few years now (some of us are in a monthly Serpent's Skull campaign that has been running for 3 years, and I've been running Rise of the Runelords on and off for about as long during our weekly game nights, one chapter at a time), so we're reasonably comfortable with the basic classes to want to begin experimenting a bit. I've taken a Spiritualist (so trying out the Occult classes as well), and we've also got an Inquisitor, a Shaman and a Swashbuckler with only the Rogue being a standard class (and even they are heading towards being an Arcane Trickster).

It does leave us with some interesting gaps in our line up, but then Strange Aeons could potentially be a non-standard adventure path so we might do okay if we're careful. The big range of mechanics options during character generation is one of the things I like about Pathfinder, but given the limited number of campaigns we've started there hasn't been much opportunity to try different options.

Our GM is very keen on all things Lovecraft, so was keen to run this path as soon as she heard about it (given how little interest there is from the rest of the group to play actual Call of Cthulhu, it seemed a reasonable compromise). I'm interested to see how much it plays like a Horror game rather than the kill-monsters-for-xp game that Pathfinder often is. Horror is also often about there actually being a serious risk of getting killed, whilst an Adventure Path sort of assumes that characters will survive (or at least, enough of them) for all six chapters in order for the story to play out. Pathfinder APs also assume that the PCs will win in the end - another difference to Horror games.

Though we're playing face-to-face, the GM has a lot of the notes and creatures defined in Roll20, using that to manage the game (much like I did for the previous episode of my Rise of the Runelords game). We still use tabletop miniatures for combat and mapping, so we get the advantage of streamlining the combat along with the advantage of real physical items on the table.

So far we've made it to second level, and are beginning to try to find out what has happened in the asylum. It does feel a bit horror-like at the moment, given that we have no clue what is going on and many of the things that we're meeting do seem to be quite insane. Only one of us has gone insane so far - my spirit, who turns out to be really bad at dealing with insanity. Since she's probably our best front line fighter at the moment, losing her could be bad.

The first two sessions have gone well, and it's been a lot of fun. We'll see how it progresses over the next few weeks.

For a somewhat abstract (probably spoiler filled) account of our adventures, I have a diary written from the point of view of my character. Assuming they survive long enough, I intend to keep it updated as our adventures continue.

→

· 14 May 2017 · Samuel Penn
index.txt · Last modified: 2014/02/16 15:20 by sam