There’s a Mastodon bot that regularly posts example maps: @traveller!

2019-10-01 Fantasy Traveller

In the vein of How about 2d6? I was recently reminded of the Traveller variants that are not based on a Science Fiction setting.

All I knew was games such as Mercator. It’s a free game by Paul Elliott:

MERCATOR is a Roman Empire setting for Classic Traveller. Marc Miller has read it and given it his seal of approval!

I also knew that the Cepheus Engine existed as a free Traveller variant, but @lskh discovered that Zozer Games has some low tech supplements:

Low Tech Weapons provides you with a huge number of new melee weapons that can be added without fuss directly into your Cepheus Engine or 2D6-based SF RPG.

Fast Magic offers a complete, improvisational magic system.

As it turns out, Zozer games is Paul Elliott, so Mercator comes from the same source. The Cepheus Engine is by Jason “Flynn” Kemp via Samardan Press.

The only other such product I know is Worlds Apart, which exists both as a free game and as a fancy game on DriveThru RPG, by Expeditious Retreat Press.

Another find by @lskh are the many dozens of products offered by Micheal Brown on DriveThru RPG, including Magic and Martial Art.

Another 2d6 fantasy game might be Fenris but when you start skimming it, it looks a lot more like a d20 system with the d20 replaced by 2d6. Just to give you an example, attributes are still 3d6. There are character levels and hit dice and all the things we know and love from D&D variants, so I’d say this is not a game in the Traveller vein.


Comments on 2019-10-01 Fantasy Traveller

There’s another one in the works as well: Sword of Cepheus.

(By the way, how exactly does your subscription system works? I don’t think I’ve been receiving e-mail notifications of comments to posts I subscribed to.)

Ynas Midgard 2019-10-02 06:00 UTC

Hm. Perhaps there’s a bug somewhere. Check your subscriptions. It should list “Comments on 2019-10-01 Fantasy Traveller”, for example. Once a day a cron job is supposed to compare these subscriptions to the list of recent changes and send mails as appropriate. Looking at my outgoing emails, it seems to be working.

– Alex Schroeder 2019-10-02 06:20 UTC

Aldreth was done for Megatraveller.

And I misremembered Wanderer as an actual game and not simply the brilliantly done mock-up with some relevant threads...

– Simon 2019-10-02 22:55 UTC

A half-step away there is also the excellent science fiction game Stars Without Number by Kevin Crawford. It is an OSR/TSR-era D&D class-and-level game with Traveller’s 2d6 skill system attached. It works very, very well. (And the GM tools/setting creation chapters are also great.)

– Blunder 2019-10-02 23:17 UTC

That blog post sounds sweet, Ynas!

Yeah, Simon, that fake fantasy Traveller The Wanderer drove me nuts back then. 🙂

And the link to Paladin in a Citadel led me to this Orcus picture that I like so much! My favorite.

I had forgotten that Stars without Number used 2d6 for skills, Blunder. Kevin is not afraid to mix and match!

– Alex Schroeder 2019-10-03 05:43 UTC

FYI I’m not getting any emails for my comment subscriptions either.

– Björn Buckwalter 2019-10-04 14:05 UTC

Hm. I just checked my mails and cron seems to print no errors:

Date: Fri, 04 Oct 2019 07:08:36 +0200 Sending Comments on 2019-08-15 Deep Carbon Observatory Day 1 to bjorn... using

Perhaps Gmail changed something about all that?

– Alex Schroeder 2019-10-04 14:38 UTC

Hm, when I setup a test and remove all the safeguards, I do in fact get an error:

invalid SSL_version specified at ... IO/Socket/ line 698.


– Alex Schroeder 2019-10-04 14:49 UTC

Wohoo! Back in business. Thank you for the heads up.

– Alex Schroeder 2019-10-04 16:31 UTC

Add Comment

2019-07-08 Square Traveller

OK, square maps instead of hex maps, for Traveller, right?

This is the sort of map the Traveller Subsector Generator creates. It’s pretty good, I like it.

Original map

If you use the same data and rewrite it somewhat, you can use Text Mapper to generate the same map, but now with rounded communication and trade lines:

Hex map

And since Text Mapper recently got the ability of creating square maps instead of hex maps, all I had to do was fiddle a bit with the data, move the black frame around, move the labels into the correct positions, and we’re nearly there:

Square map

There are still so many things wrong: the symbols overlap the coordinates and the labels; the lines intersect the labels, so basically everything is terrible and unreadable at a second glance. But it will have to do for the moment. Perhaps if square Traveller maps make a breakthrough one day! 🤪

The map generated uses a separate map, Which in turn uses a separate library. If you want to regenerate, you need to put the following in the text area:



Or take a look at the map and modify to taste.


Add Comment

2019-01-11 No Advancement

If I were to design a simple new RPG it would not have advancement. Much like Traveller. So how do you get an ever changing game experience? Different spells might be a way. But what I would like to do would be the adding of powerful named enemies. Nobody knows you at first, you have no friends, and no enemies. Later, you know more about the world, you have made friends, and you have made enemies.

Personally, I think that “inner changes” and growth as a person don’t need rule support, that just works as-is. I guess the reason I was thinking of this was a podcast episode by Ray Otus I just heard about Advanced Sellswords and Sorcery. The idea was to have some sort of “advancement” which meant being able to take more wounds (being able to have more negative tags/aspects before being taken out) and I thought to myself: but this just makes combat longer, that’s boring!

Have you ever played Traveller? It doesn’t have any meaningful advancement at all. The only thing that changes over time is that you might have more money, better equipment (including a starship, of course). I still think it has long term appeal.

Same with the basic idea Fate as I see it: you might shuffle the skill pyramid around, but you’re not going to actually get better in absolute terms. And that suits me fine. Even though it’s very different from the D&D family of games. At least, that’s how I remember it. On Mastodon, @hawkjohenson remembered some sort of advancement (adding more skill points to the skill pyramid), but we both didn’t check the books. :)

The Fate rules I read and used were Spirit of the Century, Diaspora (and that Mass Effect game based on Diaspora, not the other one), and some reading of Fate 2 way back when I revised my own Mesopotamian Fate variant (in German) – and I never noticed a way to grow the skill pyramid. I just reread my own Fate variant and it mentions switching skills in the pyramid and removing consequences and the like – but not getting more skill points.

What I am looking for is the promise of changing gameplay over time. Classic D&D achieves this in a way with spell levels. The game with and without fly spell is very different. Same with a host of other spells.

To take a very different example: I love how the gameplay of A Dark Room changes over time. So breaking away from that single axis of change (in the words of @halfjack) is central.

That is also why I don’t want to play a variant of D&D where characters get more and more hit-points and it’s all about the attrition, the slog, the grind, the endless back and forth. This happens if hit points are inflated, or special attacks like level drain and various save-or-die effects (poison, petrification) are removed from the mid-level game. If these are not in effect, then all you are left with is the slow back and forth of melee. Ideally, however, combat is over in two or three rounds when I run the game: at low levels, two or three hits should take people out; at higher levels, it’s spells, save-or-die and level drain and similar attacks that speed things up.

That’s also why I don’t want the armour class of the opponents to increase as the attack bonus of the characters increases. If you do that, nothing changes. I’m fine with fighters hitting every single round at higher levels. It’s supposed to feel different!

Changing gameplay is more important than more staying power, better chances to hit, or similar “advancement”.


Add Comment

2018-11-04 Traveller Starship Geopmorphs

Wow. This free PDF with Traveller geomorphs is amazing. All your station mapping needs are taken care off, I’d say! 🙇

Linked from this blog post: The Starship Geomorphs book is finally complete!.

I always assumed that one day we’d be able to use Gridmapper to create such maps. But not with this level of detail. Such curves, structures, and more details.


Comments on 2018-11-04 Traveller Starship Geopmorphs

Definitely one for Uplinked Intelligence, the wiki that collects cool OSR Science Fiction house rules.

– Alex Schroeder 2018-11-04 19:21 UTC

Add Comment

2018-10-27 Names in Traveller

I keep wanting to go back and run a Traveller game. But this seems to be my curse: writing software for games I don’t play. Like other people reading rules for games they don’t play, or buying materials they don’t use. Well, in case you want to run a Traveller game, check out this Traveller map generator. Please note that generating the map for a whole sector takes a few moments. Subsectors are much faster.

I just added something new to it: languages. For a long time, the map generator would pick a “language” and generate names that belonged to this “language”. The name generator is also available as a separate tool. I felt that over the centuries, there must be settlements and growth, decay, something like migration. And thus the names should stick around.

Here’s what I’m doing now:

  1. After all the systems on the map are named (using the language of the ancients, I guess), I go through all the systems again.
  2. Every system has a 5% chance of having developed a dynamic culture with it’s own language and names.
  3. For every culture that’s thus generated, I determine whether it has access to Jump-1 or Jump-2 drives (50% each).
  4. And I decide for how many jumps they will spread: one to three jumps.
  5. If they arrive at a system where another culture has already taken root, there’s a 50% chance that they won’t settle and expansion stops.
  6. This expansion also renames the systems using the new “language”.
  7. When I’m done, it’s time to pick colours. Sadly, I know very little about colours and so I just have seven colours prepared and each culture gets one of them. That also means that sometimes regions with the same colour will touch and appear to form a single area. Well, I guess these are multi-lingual empires.
  8. System not touched by these expansions keep their names and the white background.

It looks quite appealing!

Sector Map

There are still unresolved questions, though: is the red area in the lower left really a merger of several larger cultures that all happened to end up red?

Here’s some debugging output. What you see is a line showing where the expansion started, the colour picked, the jump drive quality (1 or 2), and the expansion (1 to 3, going down by one with every step). I filtered the entire output for the area of interest: x coordinates from 01 to 09 and y coordinates from 30 to 49. Every line is prefixed with it’s line number, which should make it easier to spot gaps.

50 matches for "0.[34]. " in buffer: *scratch*
    127:0735 005 1 1
    128: added 0635 1 1
    129: added 0734 1 1
    130: added 0835 1 1
    131: added 0536 1 0
    132: added 0633 1 0
    133: added 0935 1 0
    134: added 0936 1 0
    182:0840 009 2 2
    183: added 0740 2 2
    184: added 0838 2 2
    185: added 0940 2 2
    188: added 0638 2 1
    189: added 0438 2 0
    190: added 0537 2 0
    191: added 0538 2 0
    192: added 0737 2 0
    195: added 0936 2 0
    414:0935 023 2 3
    415: added 0735 2 3
    416: added 0835 2 3
    419: added 0534 2 2
    420: added 0536 2 2
    421: added 0635 2 2
    422: added 0936 2 2
    423: added 0334 2 1
    424: added 0335 2 1
    425: added 0435 2 1
    426: added 0633 2 1
    427: added 0734 2 1
    428: added 0134 2 0
    429: added 0135 2 0
    430: added 0232 2 0
    431: added 0234 2 0
    432: added 0332 2 0
    433: added 0336 2 0
    434: added 0136 2 0
    435: added 0337 2 0
    436: added 0538 2 1
    437: added 0737 2 1
    438: added 0338 2 0
    439: added 0339 2 0
    440: added 0438 2 0
    441: added 0638 2 0
    442: added 0537 2 1
    452: added 0931 2 1
    453: added 0932 2 1
    459: added 0730 2 0
    460: added 0731 2 0
    461: added 0830 2 0

As you can see, there was a culture that started in 0840 and grew into 9 more systems (with some growth outside the bounds that we’re looking at) but the culture which started in 0935 gobbled half of it up. A Jump-2 drive and a drive to expand up to three jumps makes a massive difference. Just to make sure that the remaining lines did not hide anything important, I went back to the file: 63 systems!

0935 023 2 3
 added 0735 2 3
 added 0835 2 3
 added 1034 2 3
 added 1134 2 3
 added 0534 2 2
 added 0536 2 2
 added 0635 2 2
 added 0936 2 2
 added 0334 2 1
 added 0335 2 1
 added 0435 2 1
 added 0633 2 1
 added 0734 2 1
 added 0134 2 0
 added 0135 2 0
 added 0232 2 0
 added 0234 2 0
 added 0332 2 0
 added 0336 2 0
 added 0136 2 0
 added 0337 2 0
 added 0538 2 1
 added 0737 2 1
 added 0338 2 0
 added 0339 2 0
 added 0438 2 0
 added 0638 2 0
 added 0537 2 1
 added 1037 2 1
 added 1038 2 0
 added 1039 2 0
 added 1137 2 0
 added 1237 2 0
 added 1032 2 2
 added 1133 2 2
 added 1234 2 2
 added 1235 2 2
 added 0931 2 1
 added 0932 2 1
 added 1030 2 1
 added 1031 2 1
 added 1131 2 1
 added 1132 2 1
 added 1232 2 1
 added 0730 2 0
 added 0731 2 0
 added 0830 2 0
 added 1229 2 0
 added 1230 2 0
 added 1331 2 0
 added 1332 2 0
 added 1333 2 0
 added 1334 2 0
 added 1432 2 0
 added 1433 2 0
 added 1434 2 1
 added 1435 2 1
 added 1535 2 0
 added 1536 2 0
 added 1634 2 0
 added 1337 2 0
 added 1537 2 0

This culture did not “fuse” with neighbours. They reached from 01 to 16 in width and from 29 to 39 in height all by themselves. But going back to the map, a quick check shows that 1240 is also red and not in the list. How come? It belonged to another large region:

0840 009 2 2
 added 0740 2 2
 added 0838 2 2
 added 0940 2 2
 added 1039 2 2
 added 1040 2 2
 added 0638 2 1
 added 0438 2 0
 added 0537 2 0
 added 0538 2 0
 added 0737 2 0
 added 1037 2 1
 added 1038 2 1
 added 0936 2 0
 added 1137 2 0
 added 1139 2 0
 added 1237 2 0
 added 1140 2 0
 added 1240 2 1
 added 1439 2 0
 added 1440 2 0

And now we come to the colouring. This is culture 009 and 023. The CSS class is computed by taking this number mod 7 + 1, resulting in 3 for both, and the class culture3 uses the background #fff0ff (some sort of plum, I guess).

I’d say the next improvement would be adding some more colours before fiddling with the algorithm too much.

Do you think languages should spread along trade and communication lines? Or should they spread out based on how close systems are? For example: if a civilisation had mastered jump-1 but not jump-2, the language would have spread to neighbouring systems that can be reached with their ships, independently of whether the economics later warrant trade and communications?

Words for certain products like tea in our world have spread far and wide. Thus, is trade the most important aspect? It’s a good point. As a counter point I can only offer that languages often seem to be contiguous areas in the world, both rich and poor, and that the major trading centres of the world don’t all speak the same language (even if the merchant class would speak Roman, or English, or Portuguese). So the names of new products might travel with products, but language itself seems to spread organically, from family to family, as people slowly move from place to place.

I guess it also depends on whether you think that the sophonts present are there due to local evolution or due to settlement from nearby systems. If nearby systems, then the first language group to arrive is simply going to dominate, even if trade later fails, I’d assume? So, I’d argue that easy of travel is irrelevant as long as somebody did the actual travelling. Perhaps isolated worlds should simply get their own languages.

I think I need to avoid diving into this rabbit hole! No overthinking! Just focus on making a nice map that serves to inspire a referee.


Comments on 2018-10-27 Names in Traveller

New features:

  • Named the cultures in the UWP instead of simply numbering them.
  • Added more colours.
  • Colours are used in random order.

Example: subsector 1285109285.

Ruquo            0101  C546512-6     SRP   Ag Ga NI
Luphijo          0102  D363437-4       S   Lt NI
Thepru           0104  C3508A9-7     SCG   De Po A            [Kudruje]
Drufidro         0106  D544666-3      SG   Ag Ga Lt NI        [Kudruje]
Ngipe            0109  B34268C-10    SCG   NI Po A            [Kudruje]
Kudro            0110  A697435-8    SRTG   Ga NI              [Kudruje]
Lujedro          0203  C7A0887-10      S   De A               [Kudruje]
Peku             0204  E628969-7       G   Hi In A            [Kudruje]
Drupha           0205  E555367-2       G   Ga Lo Lt           [Kudruje]
Phathe           0206  B768344-6      NC   Ga Lo              [Kudruje]
Drongi           0207  C775000-0    STCG   Ba Ga              [Kudruje]
Zafi             0208  D354333-5       S   Lo Lt              [Kudruje]
Ngipha           0210  A77576B-9      TG   Ag Ga A            [Kudruje]
Zhaghe           0301  A3439EF-8    RTCG   Hi In Po A
Shewhi           0303  D659411-5           Lt NI              [Whih]
Zatheqo          0305  E864233-2       G   Ga Lo Lt           [Kudruje]
Drupe            0307  B76778A-8      NT   Ag Ga Ri A         [Kudruje]
Phaza            0308  C759664-4     SCG   Lt NI              [Kudruje]
Zaspoi           0310  D577100-7      SG   Ga Lo A            [Kudruje]
Shepru           0402  B400368-12     NT   Ht Lo Va           [Whih]
Shidu            0403  C482851-9      SC   Ri                 [Whih]
Kuiku            0406  C537510-6       G   NI A               [Kudruje]
Zazafi           0408  C644652-8      RG   Ag Ga NI           [Kudruje]
Kuiza            0409  C548510-8      TG   Ag Ga NI A         [Kudruje]
Drolu            0410  D676555-3      SG   Ag Ga Lt NI        [Kudruje]
Stili            0501  E020774-10      G   De Na Po A
Sheshe           0503  B524115-11    TCG   Lo                 [Whih]
Drodro           0505  E750788-2       G   De Lt Po           [Kudruje]
Zadrungi         0507  C656000-0       G   Ba Ga              [Kudruje]
Pruku            0510  AAA6ABC-11    RTC   Fl Hi In A         [Kudruje]
Ngicha           0604  E666210-2       G   Ga Lo Lt A         [Kudruje]
Chadru           0607  C558778-7      CG   Ag Ga A            [Kudruje]
Wraghe           0701  X94A414-5       G   Lt NI Wa           [Quughe]
Zaspo            0704  D331355-10     SG   Lo Po              [Kudruje]
Qopha            0705  C436754-11     RG                      [Kudruje]
Kujelu           0706  C100536-9      SG   NI Va              [Kudruje]
Phangi           0708  B9A0220-8      NS   De Lo A            [Kudruje]
Whoghe           0801  C000645-12      G   As Ht Na NI Va     [Quughe]
Quutra           0802  B440544-13   STCG   De Ht NI Po        [Quughe]
Ghetho           0803  D446553-6       G   Ag NI              [Quughe]
Mostughe         0805  E86A355-8       G   Lo Wa
Deprui           0807  D758102-8      SG   Ga Lo A            [Kudruje]
Druza            0809  B242453-13   NSTG   Ht NI Po           [Kudruje]
                       ||||||| |
Ag Agricultural        ||||||| |            In Industrial
As Asteroid            ||||||| +- Tech      Lo Low Population
Ba Barren              ||||||+- Law         Lt Low Technology
De Desert              |||||+- Government   Na Non-Agricultural
Fl Fluid Oceans        ||||+- Population    NI Non-Industrial
Ga Garden              |||+- Hydro          Po Poor
Hi High Population     ||+- Atmosphere      Ri Rich
Ht High Technology     |+- Size             Wa Water World
IC Ice-Capped          +- Starport          Va Vacuum

Bases: Naval – Scout – Research – TAS – Consulate – Pirate – Gas Giant

Subsector 1285109285

– Alex Schroeder 2018-10-28 22:04 UTC

And a Mastodon bot: @traveller!

– Alex Schroeder 2018-10-29 09:15 UTC

The thing I like about this is that it provides a sort of backstory inspiration. “After the fall, the Kudruje resettled most of the subsector. Their superior ships allowed them to spread far and wide. Towards the core, their progress was checked, however. The Whih cluster proved hard to penetrate and the frequent uprisings of the Quughe and their spiritualism have made any attempts at a take-over too costly. Their systems continue to languish in poverty.”

– Alex Schroeder 2018-10-29 15:50 UTC

Hm, need to think about the Trader Format. This doesn’t seem to work.

– Alex Schroeder 2018-10-29 20:22 UTC

Add Comment

2017-07-14 Name Generator

I was wondering how to give each random Traveller sector or subsector generated its own “touch” and I remembered the notes on generating names for the Twitter bot @unchartedatlas.

My generator uses a digraph based random generator, an idea going to back to the original Elite. What I’m doing now is randomly generating the list of digraphs to use for each sector or subsector, thus making the generated names more or less similar to each other. If you want to experiment with the name generator on its own, I installed it as a separate web application. Perhaps it can be useful to generate random names in fantasy languages. The Help page shows how to start with lists of digraphs based on the Japanese and Hawaiian language.

Who knows, it might be useful for your orc needs...

I then added code to parse multiple characters as one – moving from code digraphs to linguistic digraphs like “ch” or “th”. These can then be counted as a single consonant.

The Traveller generator now picks a random subset of English consonants and vowels, including some digraphs, as I said, and I think it works rather well.


Add Comment

2017-07-11 Traveller vs. Traveller

I’ve been comparing the subsector generation of Mongoose Traveller (MGT) and Classic Traveller (CT) in the incarnation of The Traveller Book.

Here’s what I noticed:

The distribution of starports is different. Note how Classic Traveller has only a bit less D and a lot more A starports.


Bases are different: Mongoose Traveller has Research, Traveller Association, Imperial Consulate and Pirate bases; Classic Traveller only has Naval and Scout bases.

Temperature is different: Classic Traveller does not have it. Then again, I was always confused by the fact that it doesn’t show up in the Mongoose Traveller Universal World Profile (UWP).

Hydro is different: Mongoose Traveller has a modifier for temperature; Classic Traveller does not. That explains why temperature doesn’t appear in the UWP: it wasn’t used by CT.

Population is the same and limited to a maximum of A when rolling, but the table in Mongoose Traveller also describes B and C. Perhaps this is a nod to Coruscant, the world city in Star Wars?

Government is the same and produces a range of -4 to 15 (F) when rolling. Both only describe governments 0 to 13 (D), however. How strange.

But reddit has the answer:

E Religious Autocracy. Government by a single religious leader having absolute power over the citizenry

F Totalitarian Oligarchy. Government by an all-powerful minority which maintains absolute control through widespread coercion and oppression

– MegaTraveller Referee’s Manual, apparently

Law is similar in that the dice throw produces a range of -5 to 15 when rolling, assuming we limit Government to 0 to 10 (A). Mongoose Traveller only describes Law 0 to 9; Classic Traveller describes Law 0 to 10 (A).

Tech is different. Mongoose Traveller has modifiers in the table for populations B and C, but you can’t get more than A so this is a bit strange. Mongoose Traveller increases Tech by +1 if you have Hydro 0. Mongoose Traveller increases Tech by +2 if you have Government 7 (Balkanisation), which is weird. Mongoose Traveller decreases Tech by -2 for Government 12 and 13 (charismatic oligarchy and religious dictatorship); Classic Traveller only does this for Government 12. No penalties for religious dictators, I guess.

Trade is also different, mainly in that some codes are missing in Classic Traveller: Barren (Ba), Fluid Oceans (Fl), Garden (Ga), High Population (Hi), High Technology (Ht), Low Population (Lo), Low Technology (Lt).

Travel Codes (Red, Amber) are not codified in Classic Traveller; Mongoose Traveller suggests when to use the Amber code.

Routes appear only in Mongoose Traveller.

The pirate bases, the travel codes, and the routes sure make the maps generated for Mongoose Traveller more interesting to look at.

Here is an example subsector generated. Notice the limited bases created.

Traveller Subsector UWP List Generator (1619343301)

Tizita           0102  C41058A-11          NI A
Vibannare        0105  D7A38A6-3           A
Nafaxe           0204  E447301-4           NI A
Zititu           0207  B648663-7       S   Ag NI
Mavifainti       0208  X3016AB-3           Na NI Va IC A
Pavima           0210  D200103-6           NI Va A
Vinxena          0301  D88A644-8       S   NI Ri Wa
Zoziq            0302  B454842-8          
Tituteluzi       0305  A310420-12          NI A
Rabama           0306  B545412-8       N   NI
Totamavi         0310  B678563-7       N   Ag NI
Zon              0401  E88A522-7           NI Wa
Qnq              0410  C87997A-11          In A
Mavota           0504  A99A977-12          In Wa A
Razutife         0505  B754867-8       S  
Zomanzi          0507  D67A355-10      S   NI Wa
Vizoetuvo        0508  B120510-12          NI Po De A
Lurinan          0509  C4555A8-9           Ag NI A
Zotato           0510  A66A632-9           NI Wa
Lunainrina       0601  B747564-6       N   Ag NI
Rizo             0604  B77A7BF-8       S   Wa A
Lutomata         0605  C9769CF-6           In A
Patoin           0607  A436784-13         
Ineratu          0608  A978753-11      S   Ag
Zozota           0610  C220202-10          NI Po De A
Femavita         0701  A302666-10          Na NI Va IC
Titutemana       0703  BA9A796-12     NS   Wa
Titezofa         0705  C99A543-6       S   NI Wa
Favorivi         0709  C130383-11          NI Po De
Qtelu            0710  AAA9000-0           NI A
Nnafema          0802  C5376B9-5           NI A
Tuzinare         0803  A564304-12          NI A
Zupaezi          0804  B210964-12      N   Na In
Zoreluzu         0805  C78A589-6           NI Wa A
Tofevomaq        0806  A200756-10      N   Na Va
Texebain         0807  C4428AE-7           Po A
Favifabafa       0808  B99A88C-11      N   Wa A
Reinxenazi       0809  B401588-8           NI Va IC
Zufate           0810  B9C8644-8           NI A
                       ||||||| |
Ag Agricultural        ||||||| |            In Industrial
As Asteroid            ||||||| +- Tech      Lo Low Population
Ba Barren              ||||||+- Law         Lt Low Technology
De Desert              |||||+- Government   Na Non-Agricultural
Fl Fluid Oceans        ||||+- Population    NI Non-Industrial
Ga Garden              |||+- Hydro          Po Poor
Hi High Population     ||+- Atmosphere      Ri Rich
Ht High Technology     |+- Size             Wa Water World
IC Ice-Capped          +- Starport          Va Vacuum

Bases: Naval – Scout – Research – TAS – Consulate – Pirate

I’ve left the Mongoose Traveller suggestions for routes in place and this is what we get:

Classic Subsector

On G+, I got linked to TRAVELLER: Out of the Box – Interlude: Two Points Where I Prefer the 1977 Edition Over the 1981 Edition talking about the old 1977 trade routes. When I tried it, not bad! (Also note this forum thread, Default CT 1977 and CT 1981, comparing the 1977 and 1981 editions; log in to see more than just the first message of the thread.)

Classic Subsector

(Classic Traveller map, with minimal spanning tree)

I decided to drop the optimising I had been doing, to get a feel for the “raw” data. This also required some rewriting and this always messes with the random number generator. That’s why this map cannot be easily compared to the one above.

Classic Subsector

I did some rewriting and added the minimal spanning tree algorithm again. It looks less busy, the clusters are still clusters. But there are some drawbacks. Take a look at the top right corner: 0802 and 0703 are connected (distance 1, shorter connections go first), 0701 and 0703 are connected (distance 2), and thus 0701 and 0802 cannot be connected because that would introduce a loop.

Classic Subsector

(Classic Traveller map, with minimal spanning tree)

I think for the time being I’ll remove the minimal spanning tree optimisation again.


Comments on 2017-07-11 Traveller vs. Traveller

There should be a space lane between 0601 and 0701 by the 1977 rules (A-B J-1 is 1+ to have a space lane). Also 0504-0505 and 0508-0607, hmm and a bunch more...

– Frank Filz 2017-07-13 07:31 UTC

Indeed! A bug!

– Alex Schroeder 2017-07-13 09:25 UTC

New code produces:


– Alex Schroeder 2017-07-13 09:35 UTC

Highlighting jump-1 routes:


Not sure about the colour scheme. And the legend at the bottom needs fixing.

– Alex Schroeder 2017-07-13 10:59 UTC

Nice, I like the red to highlight the J-1. When I did my subsectors, I ended up not rolling for the J-3 and J-4 routes. I also didn’t bother with a J-2 route that was already connected by J-1 (for example 0604-0804 above, there’s already an implied J-2 route as 0604-0705-0804). Similarly you could remove the 0305-0604 J-3 route (unless there isn’t a J-2 between 0305-0505 and that blue line is actually JUST a J-4 route 0305-0705...).

– Frank Filz 2017-07-13 16:28 UTC

Hm... Isn’t that a bit like the minimum spanning tree optimisation? As Ian Borchardt said on G+:

One problem with your optimised paths is that you are assuming that space == time, which isn’t the case with Traveller jumps, because any jump takes two weeks, regardless of distance. [IIRC]

Which means it’s not cheaper (time wise) for a starship to call in at an intermediate port. So given a choice between A-B-A and A-A most people will still choose A-A by preference because it gets there in half the time. It has a greater efficiency.

I responded with the following:

As for trade route optimisation: one might say that the trade routes indicate the most popular trade routes and thus two jump-2 segments will be more popular than a single jump-4 segment because there will be more ships that can handle it, even if that makes the route take twice the time. Well, that was my argument when I realised that too many routes just made for an ugly map.

So basically the jump-2 route 0604-0804 says that ships can and will make this jump directly – unlike the jump 0604-0703, which is also a jump-2 but somehow the dice have decided that it’s not profitable enough to do. It’s up to the referee to explain the difference. At least, that’s Ian’s argument.

For myself, I’m still undecided. All I can say is that it looks busy and messy and I don’t like it too much.

As for distance, I guess from a player perspective, at the beginning of a typical campaign all we care about are jump-1 and jump-2 routes. Perhaps I should just use a third colour for jump-2 routes.

– Alex 2017-07-13 16:52 UTC

Support for sectors, click to zoom. Note how I used a third color for jump-2 routes.

Click to zoom!

– Alex 2017-07-13 18:03 UTC

D’oh. I just noticed that my generator never generated any gas giants. Fixed!

This also means that all the random seeds will now generate different maps. Nooooo!

– Alex 2017-07-13 18:33 UTC

As for picking a subsector capital, Ian Borchardt says:

Definitely an A class spaceport (and it will have an attached Imperial naval and scout base). It probably should be a Rich world (Atmosphere 6-8, Population 6-8), and I’d assign it a Government Type of 8. The TL should be amongst the highest in the subsector (and a minimum of 12).

And regarding trade routes, he says:

This is the approach I would take.

First generate the main routes.

(1) Connect all Starport A within Jump 2 of each other.
(2a) Connect all Starport B within Jump 2 of a Starport A.
(2b) Connect all Starport B within Jump 1 or each other.
(2c) Connect an unconnected Starport B to another Starport B within Jump 2.

If a connection in step 2 connects Starport A to the sector capital then upgrade it to a main route.

Next comes the feeder routes.

(3a) Connect Starport C to a single Starport A within 1 jump.
(3b) If not connected, connect Starport C to a single Starport B within Jump 1.
(3c) If not connected, connect Starport C to a single Starport A within Jump 2.
(3d) If not connected, connect Starport C to a single Starport A within Jump 2.
(4a) Connect Starport D to a single Starport A within 1 Jump. (optional)
(5) Class E starports are never connected by a trade route.

If in need of direction, assume the shortest path to the subsector capital.

This defines the regular services (for various definitions of regular). Everything else relies on tramp freighters.

[In your example map the small disconnected group of systems to coreward might have better trade connections to coreward than it does with the subsector it is technically a part of. Or it may be a different polity. And yes, I cheated with the rosette of class A and C starports to rimward, because of a fondness for benzene rings...]

– Alex Schroeder 2017-07-13 22:31 UTC

One thing I did to simplify my route maps is that if you have three worlds, One, Two, and Three, and there is a J-1 route from One to Two, and a J-1 route from Two to Three, I also assume the J-2 route from One to Three is also regularly travelled. I also in a few places, having rolled just the J-2 route, assumed that the J-1 routes were thus also regularly travelled (this makes a world that might otherwise have had less access have more, I’m not that bothered by that, and would rather have a simpler map).

– Frank Filz 2017-07-31 16:02 UTC

Add Comment

2017-07-11 Tales to Astound

With my renewed interest in Traveller comes a new blog, Tales to Astound!

Some samples!

«And I type all this up to say–the game was written and designed to play this easy, fast, and loose play–and you can play this way too. No long, detailed introduction from the Referee about politics that the Player Characters can’t influence anyway. No thoughtfully pre-planned adventure the Player Characters are supposed to follow. No expectations of what the Players will do.» – An Improvised Classic Traveller Convention Game

«Why van Rijn, let alone anyone, would be hauling around whisky between the stars and assume to make a profit is insane, of course. But that’s exactly what the trade rules in Traveller model.» (Comes with some interesting quotes from books that are said to have inspired Marc Miller as he wrote Traveller in 1977 and 1981.) – TRAVELLER and “Hard Science Fiction” — I don’t think so…

«It really reinforces the nature of the Referee as impartial judge, the dice as oracles, and the rolls not as “skill rolls” but as impartial tools to determine outcomes. The point of the roll is not to see “How well the character did,” but to see what happened when the character did something, which in turn leads to the character having to do the next thing, based on the outcome of the roll.» – TRAVELLER: Out of the Box-An Approach to Refereeing and Throws in Original Traveller (Part I)

«It has long been noted that the Classic Traveller does not have a unified task resolution system. Instead it has an ad hoc system of Throws, with different Throws for different skills, and many of the rolls left without any sort of specific procedure or definition. For many, many people this is a problem. People want to know how the game works in a simple, consistent manner.» – TRAVELLER: Out of the Box–An Approach to Refereeing and Throws in Original Traveller (Part II)

«The dense layer of procedural generation of Worlds, Encounters (NPCs, Animals, Legal, Patron), Encounter Range, and NPC Reaction lets me generate content on the fly and help me come up with new ideas, locals, and situations I would never come up with on my own.» – My Favorite SF RPG…


Add Comment

2017-06-30 Traveller Subsector Generator

Yesterday I posted some Traveller links. Today I refactored my Traveller Subsector Generator and moved to a new web framework. I also merged my UWP Generator and my SVG Mapper for Traveller into a single web app, the Traveller Subsector Generator. I hope it’s pretty obvious how to use it, but I know that sometimes I get confused myself so here’s what it can do:

You start with an editable example UWP:

  • Generate Map gives you the SVG map
  • Communication and Trade Routes gives you a list (text)
  • Random Map gives you a random SVG map

If you’re looking at an SVG map and you got here via Random Map:

  • UWP in the bottom right gets you the read-only UWP that generated the map
  • if you do that you can click on Generate Map and get the same SVG map
  • this works because the random map has a unique id

If you’re looking at an SVG map and you got here via Generate Map:

  • since you might have edited the UWP, it doesn’t have a unique id
  • and thus you don’t get the UWP link

If you’re looking an a read-only UWP:

  • Random UWP generates a new, random, read-only UWP
  • Generate Map takes you to the SVG map, as I said
  • Edit Map takes you back to the edit screen for this UWP
  • this works because the read-only UWP has a unique id

OK, so the only weird thing is that sometimes there is no UWP link back from the map, right? Well, if you’re looking at and click on Generate Map then you can always use that id in the URL and type into the address bar of your browser. And now the missing UWP link appears!

I don’t even know why I’m posting all this. I makes me realise that the user interface needs more tinkering and I’m tired. If you have an idea for how to make it more obvious, specially if you haven’t used it before and you’re confused, I’d like to hear about it. Perhaps we can improve the web app together.


Comments on 2017-06-30 Traveller Subsector Generator

Made some changes, and added random sector generation (32x40 instead of 8x10).

– Alex 2017-07-05 06:07 UTC

How to get a random UWP from the command line:

perl get /uwp/874568503 2>/dev/null | xmllint --html --xpath '//pre/text()' - | perl -MHTML::Entities -pe 'decode_entities($_);'

– Alex Schroeder 2017-07-05 14:57 UTC

How to generate a SVG file from the command line:

perl get /map/874568503 2>/dev/null > 874568503.svg

– Alex Schroeder 2017-07-05 14:58 UTC

Generating a simple SVG file from a map on the command line (URL-escaped):

perl get --header 'Content-Type:application/x-www-form-urlencoded' --method POST --content "map=Rezufa%200101%20E310000-0%20Ba" /map 2>/dev/null

– Alex Schroeder 2017-07-05 15:09 UTC

Generating an SVG map from UWP in a text file:

perl get --header 'Content-Type:application/x-www-form-urlencoded' --method POST --content map=$(cat 874568503.txt|encodeURIComponent) /map

This assumes you defined the following alias:

alias encodeURIComponent='perl -pe '\''s/([^a-zA-Z0-9_.!~*()'\''\'\'''\''-])/sprintf("%%%02X",ord($1))/ge'\'

– Alex Schroeder 2017-07-05 15:21 UTC

Amazing! I am doing a piece on my podcast discussing Traveller maps and will def be mentioning this. What a gift!

Froth 2019-03-12 16:05 UTC

Hah, cool! Please link instead of this blogpost, though. I don’t think most people would want to know how to generate maps on the commandline using Perl, haha. 🙂

– Alex Schroeder 2019-03-12 16:09 UTC

Add Comment

2017-06-30 Traveller Links

Traveller Subsector Generator

Why is classic Traveller the simple generic system that drives adventure? My Favorite SF RPG… talks about all that.

The PCs can’t do everything, of course. The character generation tables offer a limited set of skills, and PCs will only have a few of those per PC. But this means that if the PCs don’t have the skill set available they will have to come up with adventure-driven schemes and shenanigans to keep going: steal the part they need to fix their ship because they don’t know how to fabricate it; get to the professor of ancient languages held against his will on the estate of the noble to translate the alien tablet they found; sneak into the government building using a clever ruse because this group doesn’t have someone with Computer skills; and so on.

Deciphering the Text Foundations of Traveller is a rabbit hole about the literary sources of Traveller.

The creators of CT wanted the anarchic, amoral, and violent adventure of fantasy role playing translated into a science fiction setting.

An excerpt by Paul Czege from a long comment on the article above on a thread by Martin Ralya on Google+:

Travellers in a country that isn’t open for tourism, ex-military guys, characters in Tales of the Quintana Roo, can’t resist someone saying, “Man, you have to see the Erradeca temple ruins! A group of us found a guy who can show us the way.” Ex-military guys are rootless, have time on their hands, a certain confidence and hunger for new experiences, and have skills most other folks don’t have. I think Marc Miller originally designed a game that’s truly about the kinds of characters who love travel and new experiences, like military folks he knew. This closely matches Andre-Driussi’s take. Screw the focus on owning a starship. These characters aren’t about being in space. They’re about experiences on planets. The original focus of the game is why you have stuff like the Traveller’s Aid Society and ship passages that no one ever does anything with. The characters don’t want to own ships. They just want to get from place to place. It’s called Traveller! I’ve thought a lot about why it got drifted to a tramp merchant thing in the first place. I think the answer may be that it’s not easy at all for players to get excited about seeing an alien ruins, or a once-in-a-hundred-years creature migration that has to exist entirely in their imaginations.

Here’s a Classic Traveller Character Generator by Paul Gorman.

I wrote a Traveller Subsector Generator. See the screenshot at the top of this page. Or you can use Text Mapper.

I think you could run a campaign just looking at concept ships all day.

Oh, and if you’d prefer a fantasy game instead, Paul Elliott has Mercator for you.

An Interview with Marc Miller.

Jeff Rients has you covered: Traveller: Where to Start. Basically, one of the old sets. These days, you can also use Mongoose Traveller. As far as I can tell, it’s main benefit is that it has a unified task resolution system. Just roll 2d6, add all the modifiers and get 8 or better. But Jeff says: «I think a single resolution system for all actions is not the right way to run Traveller. Detractors of the original rules like to say that Classic Traveller’s big flaw was lack of unified resolution mechanics. I consider that a feature, not a bug.» I guess it makes it more obvious that the referee sets the difficulty level of all rolls. That works for me.


Comments on 2017-06-30 Traveller Links

I think the post you quoted from Martin Ralya gets to what I’ve always felt was the core of the Traveller game.
Instead of characters who work to travel from interesting port to interesting port, in many cases a starship becomes the characters’ new home, which fails to capture the itinerant nature of the setting.
This is fine as far as it goes, and of course people should play the style of game they like, but I think the game is much more interesting when players look to their characters’ backgrounds as a way of dealing with ever-changing circumstances of all types, than as a straitjacket to lock characters into a specific campaign style, be that paramilitary or trading or empire-saving.
Frotz 2017-07-05 14:01 UTC

All I can say is that my Traveller campaign folded. I got charmed by Diaspora and half a year later we switched away from Traveller. Micro management of the wrong kind of things was part of the problem: no body cared about trade and payments, and yet we felt this is what the game is all about.

– Alex Schroeder 2017-07-05 14:28 UTC

I bought The Traveller Book (1982). According to Guide To Classic Traveller: «The Traveller Book consolidated the core rules (Books 1-2-3) into a single 8.5 x 11 book and added additional material on how-to-play the game. It also added the short adventures Shadows (from Double Adventure 1) and Exit Visa. 159 pages hardcover with dust jacket, or softcover.» As my campaign ran using Mongoose Traveller, I am interested in the differences.

Google has some forum threads for me to look at... but they make me tired. I’ll just browse the PDF, now.

– Alex Schroeder 2017-07-10 20:27 UTC

Add Comment



Please make sure you contribute only your own work, or work licensed under the GNU Free Documentation License. Note: in order to facilitate peer review and fight vandalism, we will store your IP number for a number of days. See Privacy Policy for more information. See Info for text formatting rules. You can edit the comment page if you need to fix typos. You can subscribe to new comments by email without leaving a comment.

To save this page you must answer this question:

Please say HELLO.