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!
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.
#RPG #Old School #Traveller #Traveller Subsector Generator
(Please contact me if you want to remove your comment.)
⁂
New features:
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
– 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
---
Sector Generator/Mapper:
One thing I noticed: If I provide coordinates all within a subsector, but not starting at 0101, it expands to a portion of a sector so that it can show the subsector one was describing... but that leaves whitespace. It would be nice to be able to say ’subsector A’ ’subsector C’ etc. and then have just a subsector map showing the hexes that would be in that subsector (for instance, 0911 to 1620 would be subector E if I have that right.
I mean, having blank space and my subsector in the bottom right is okay, it just looks odd and I’ll need to manually GIMP it to trim it.
Also, how/where are the routes defined? I’ve changed the UPPs of many of the systems, but the trade routes remain (skipping some very high value locations). Is there a way to allow one to either A) have some control over trade route creation or B) have a checkbox for ’no routes please’ (I can add them later in GIMP where I want them).
Just some suggestions. I like the look of what you’ve done.
I used to use Universe (BITS) and love it, but the author isn’t ready to release an updated version yet that will run on Win 10. It made amazing maps too. The planet icons that app used were amazing.
Nice work you’ve done. I salute your efforts.
– Tom B (kaladorn on COTI and other spots) 2020-04-08 07:47 UTC
Tom B (kaladorn on COTI and other spots)
---
Definitely good ideas. In order to remove the routes, all I have right now is a workaround: if you have Inkscape, you can load the map into Inkscape and easily delete the maps. All the trade routes are in one group and all the communication routes are in one group, so you just need to select one of each and delete them and they’re all gone.
The algorithm used to draw them are based on how I read the rules in the Mongoose 1st ed rules. The code in the comment says the following:
Communication routes
Trade routes
2010-05-20 Updated Traveller Mapping
– Alex Schroeder 2020-04-08 11:33 UTC
---
I have Inkscape (I was using it to help me with a fantasy mapping issue - existing raster map (paper map originally) that I wanted to import to Profantasy and Inkscape if I did a bit of work with the raster, could use its powers to create a path for me for the landmass boundaries with the seas and then I could export them). That project is at about the 55% mark but it got parked due to real life. I’m far more familiar with Gimp than Inkscape though. But deleting some stuff sounds manageable if I can find it.
I understand following the rules, but I have a hard to fathom example:
Sotretre 0101 D7A0000-0 G Ba De A [Sopr] Rhetre 0102 B592468-9 NTG Ni [Sopr] Qahofli 0105 D544445-4 G Ga Lt Ni Flitu 0106 X464130-2 G Lo Lt A Trihoqo 0108 C584689-3 CPG Ag Ga Lt Ni Ri R Dradra 0110 EAB3000-0 G Ba Fl A Scaru 0201 C110589-12 SG Ht Ni A [Sopr] Flitu 0205 A4945AF-12 NRTCG Ag Ht Ni A Kihotri 0207 D9A0000-0 G Ba De A Qaki 0208 B2227BB-8 SRTG Na Po A Prpr 0302 X9C1000-0 G Ba Fl A [Sopr] Flisci 0307 E544575-6 P Ag Ga Ni R Wriqo 0308 E302000-0 G Ba Ic Va Qotri 0309 D84A100-6 G Lo Wa A Yatre 0401 C455653-10 SG Ag Ni [Sopr] Qofli 0403 E849786-5 G Lt Qoqo 0404 C58299A-8 SRTG Hi A Qotridra 0406 C0009A7-12 SG As Hi Ht In Na Va A Hoho 0407 C210878-8 STG Na A Tridra 0408 E2009A9-8 G Hi In Na Va A Qodrasci 0409 DA89673-6 SG Ni Ri A Mesca 0501 C010559-12 RPG Ht Ni R [Sopr] Sotre 0502 D200000-0 SG Ba Va [Sopr] Fliho 0504 C402000-0 RTPG Ba Ic Va Flizi 0506 D6A0000-0 SG Ba De A Sitri 0507 E220856-8 G De Na Po Qomepr 0601 D636000-0 SG Ba [Sopr] Rustu 0602 C22037B-9 G De Lo Po A [Sopr] Tusiki 0603 A664510-8 STCG Ag Ga Ni A Tuho 0605 C639220-7 S Lo A Trisci 0607 B796214-10 STCG Ga Lo Dratri 0608 C8B0211-11 TPG De Lo R Draki 0609 C130945-12 SCG De Hi Ht Na Po Sitri 0610 B451300-8 TG Lo Po A Prme 0702 D575875-7 G Ga A [Sopr] Drasci 0704 C4016BC-10 S Ic Na Ni Va A Ziqaqo 0707 C98A59C-10 CG Ni Wa A Sikiho 0801 C8A078D-9 G De A Qofli 0803 E6568BD-2 G Ga Lt A Siqa 0805 C470203-9 G De Lo A Drakudra 0806 E675000-0 G Ba Ga Tuqawri 0807 C75A232-8 G Lo Wa Qotuqo 0809 C140878-13 G De Ht Po A Kuqotri 0810 D473778-4 SG Lt A
If you pop that in and map it, you’ll notice trade routes go to Prpr (0302) which has a starport type X (nothing) and to get there is a J-1, then a J-3 out of there. If you instead went to Yatre, Sotre or Rustu, a more sensible launch point to get to Quofli would happen. A lot of ship designs don’t have skimmers and purification gear and thus having trade routes that go through places with no gas to buy seems a bit wrong.
What would *really* be a neat feature (yes, I love suggesting work for other people... lol), if it were possible, before you generate, as we can provide a sector data which is parsed to draw the map, it would be nice for us to have another box to provide some sort of formatted routes information (if you do that, good to know if a route is communication or trade... many would be both). And export that formatted information when you generate from scratch a sector (as an example and also to keep so that one could handraulically modify it and then put it back in with the sector data to adjust the routes).
It’s a really nice tool you’ve got here.
My usage right now is a bit non-standard. Traveller’s variety of tech and populations that exist in a vacuum (and I don’t mean space here) with respect to nearby planets is unlikely. Populations will tend (if possible) to head to more prosperous, less oppressive, more economically active areas. Technology will tend to flow to lower tech places and drag them up faster than high tech places can advance. Trade will bring things from other planets - even ones without much industry or a lower tech - to higher centers which will in turn build relationships and drag up the tech in the lower ones and facilitate people movement. This will also affect Starport types/sizes. And with that, you’d get a much more logical net of trade routes (trade routes would tend to define communication routes except where strategic situations forced routes of communication through places trade isn’t likely).
With that in mind, the sector I’m hand building now tends to have most planets in a polity at about the same tech (a 3-4 TL difference at most, 1-2 being more common). Even ones outside of a polity will tend to be impacted by their neighours. And even the need for labour (see North America and Europe needing immigration for many jobs to get done) and the humanitarian aspect (people living on crappy planets and suffering) would tend to result in population size being closely related to how great (weather, atmo, water, gov’t, law level, crowding, tech level, security, etc) a planet has.
I want to try to build sectors that make sense, polities that make sense, and planets that are hard to fathom being next to one another.
In the long run, My goal is to pick a collection of planets (physical) and start from a first arrival point or homeworld, then gradually have some software model early exploration, outcomes, and further movements of people every year from planet to planet (plus natural increase/decrease/war effects/plagues/etc) to finally have a sector (or cluster let’s call it) that has sensible population modelling and tech and trade will flow from that.
I did some moderately extensive population modelling of my last D&D campaign to determine what populations could be expected where and what migrations would tend to occur over time. It was quite interesting and made a lot more sense (though hard to get setup).
Anyway, in the short run, it would be great to be able to feed in formatted route data and have that displayed instead of the stuff MgT provided. Some might just want a sector (and your generator that simulates expansions of cultures through areas is really cool) but it would be nice to be able to feed in routes to the display.
Thanks, stay safe, nice talking to you.
– TomB (kaladorn on COTI and other places) 2020-04-11 01:37 UTC
TomB (kaladorn on COTI and other places)
---
Just realized one way to approach the population modelling is to generate a sector with no population/govt/law/tech data - just the physical, then pick an initial population and go from there to see where expansion would naturally flow. One would need rules based on tech (which is a determiner of jump ranges) and exploration followed by colonization of the more promising places. One would suspect that valuable resources might need to be a factor and thus be defined for worlds as resource exploitation could well drive (or at least support or preclude) populations situation on different planets.
There’s too much there to do all once. But it is a recurrent idea to build an ATU that is different than the 3rd Imperium OTU. Something that likely would look more (in the long run) like the 2300 AD setting than Traveller’s 3rd Imperium - more technical homogenaeity and more sensible population locations.
– TomB (kaladorn on COTI and other places) 2020-04-11 01:43 UTC
TomB (kaladorn on COTI and other places)
---
Looking at the result of the trade routes is interesting. Scaru (C110589-12 SG Ht Ni A) to Prpr (0302 X9C1000-0 G Ba Fl A) looks like a bug, actually! Prpr really has nothing to offer. I added some debugging code and here’s the result of the trade routes established by the algorithm:
Scaru: Scaru → Sotretre Scaru → Rhetre Scaru → Yatre Scaru → Prpr → Qofli → Fliho Scaru → Yatre → Rustu Flitu: Flitu → Qahofli Flitu → Kihotri Flitu → Kihotri → Wriqo Flitu → Qotridra Flitu → Qoqo → Fliho Flitu → Qoqo → Flizi Flitu → Qotridra → Sitri Flitu → Qoqo → Tusiki Qoqo: Qoqo → Flitu → Qahofli Qoqo → Flitu Qoqo → Qofli → Yatre Qoqo → Tusiki Qoqo → Qotridra → Trisci Qoqo → Tusiki → Prme Qoqo → Flizi → Ziqaqo Qoqo → Tusiki → Qofli Qoqo → Tuho → Drakudra Qotridra: Qotridra → Flitu → Qahofli Qotridra → Flitu Qotridra → Kihotri Qotridra → Wriqo Qotridra → Wriqo → Qodrasci Qotridra → Qoqo → Fliho Qotridra → Flizi Qotridra → Sitri Qotridra → Qoqo → Tusiki Qotridra → Tridra → Draki Qotridra → Tuho → Drasci Qotridra → Flizi → Ziqaqo Qotridra → Tuho → Siqa Tridra: Tridra → Kihotri → Flitu Tridra → Kihotri Tridra → Wriqo Tridra → Qotridra Tridra → Qodrasci Tridra → Qotridra → Flizi Tridra → Sitri Tridra → Draki Tridra → Sitri → Ziqaqo Tridra → Draki → Qotuqo Qodrasci: Qodrasci → Qotri Qodrasci → Hoho → Trisci Qodrasci → Tridra → Trisci → Ziqaqo Draki: Draki → Tridra → Kihotri Draki → Tridra → Wriqo Draki → Tridra → Qotridra Draki → Qodrasci Draki → Trisci → Flizi Draki → Tridra → Sitri Draki → Trisci → Ziqaqo Draki → Qotuqo Qotuqo: Qotuqo → Draki → Qodrasci Qotuqo → Draki Qotuqo → Tuqawri → Ziqaqo Qotuqo → Tuqawri → Siqa
Thus, Prpr is simply on the route Scaru (Ht) → Prpr (G) → Qofli (G) → Fliho (Ic). It’s a terrible run via two systems with gas giants, but it sort of makes sense, I guess? What the map doesn’t say is that the traders probably simply skip visiting Prpr and Qofli... Harsh!
I guess for documentation purposes I need to ammend my formulation of the algorithm:
Trade routes
2010-05-20 Updated Traveller Mapping
I think that alternative systems of generating trade and communication routes *automatically* would be interesting options, if well reasoned and not too hard to implement. The kind of thing you describe is of course a labour of love that is currently incompatible with “not too hard to implement” (for me) ... 😀
It does sound interesting, but my impression from reading two Dumarest books was that the Traveller universe is probably a decaying system: there were probably other empires in the past, what we are given is simply the ruins, the remants of all that history. When you say that “Traveller’s variety of tech and populations that exist in a vacuum (and I don’t mean space here) with respect to nearby planets is unlikely,” then I think you’re expecting a far to rational setup (which might also be boring), or you’re imagining a for more complex setup (which might also be hard to fathom), and so that’s why I suspect that this a labour of love that you need to do for your own happiness, it’s not something need. It is simply that: the backstory to your campaign, it’s personal, it’s specific. But this generator is ... simply faking it, I guess. It adds details without really understanding anything and leaves it up to the table to “make sense” of it all. Part of the fun is then to rationalize the seemingly random facts. How can we explain it all? And by engaging in that, we make the subsector our own, make the setting our own, make it our personal campaign.
If you ever make a PDF or some other sort of shareable document, I’d love to read it, just so I can see how other people prepare for their games. I suspect, however, that I’m far less into the sort of setting rationalization than you appear to be. 🙂
– Alex Schroeder 2020-04-11 13:49 UTC
---
I guess part of it is that I studied Human Geography in University. There are a lot of models of migration and of population growth (basic models then tempered with a lot of complexity as you start to cover all the factors) and even in an universe with a patchwork of planets, some of the configurations just would not sustain for very long (and yet only small changes happen in most places, even the unlikely ones, if you look at different generations of the documented systems - until at least Rebellion + Virus).
A lot depends on your view of the Imperium. If you view the Imperium literally as a low-impact overlay on a whole bunch of otherwise independent planets (’We only police commerce and borders’), then a patchwork could exist. But trade would be far more brutal and far less common than it could be with a more integrated set of economies and since that usually means prosperity increases overall, that’s how it would tend to go naturally. And even then, there have to be a lot of do-gooders that would be trying to address disparities in wealth and tech. That would be easier to do with some places having the tech that could easily begin to boost other places.
We have a patchwork situation in our world principally for a small range of primary reasons:
1. Capitalism and the rich want to keep disparity and place because they can leverage cheap labour (once automation gets cheap enough, that argument vanishes)
2. Racial strife, religious strife, national strife - but these all come from individual regionalism or national visions. Traveller would have some of them, but again, most of them in our world do not cede the rights for foreign militaries or to acknowledge a higher level of governance like the 3I displays. Those things would actively threaten many planets in the Imperium with separatist movements. That doesn’t sound like a stable empire to me, but rather a powder keg where the Empire must continually suppress (by means of force - political, covert, or military). That too is a different view of the 3I than the stable 3I.
3. Lack of education or resources - but that only lasts decades once people start to make serious efforts to start to change and it is likely within our lifetimes that we’ll see a lot more advancement out of even places like Africa (still not sure about M.E.) - witness how Asia has moved form a third world stature to doing work on par with anything in the west in many places. And that’s in 40-60 years mostly.
Within our planet, between nations, we see movements all the time of people fleeing wars, oppression, and even more heading *to* the perceived *better life*/*opportunity*. This happens in quite large numbers now. I suspect we’d see this from any crappy planet where a) the planet has access to space travel and a better place to reach or b) people from a better planet setup a pipeline (think escaped Slaves from the Civil War).
I think the reason the 3I looks like it does is because: a) It models a certain point in history (which is the 1600-1800s. It has Empires that are decadent or just bloated and of limited effect (unless you get their dander up then they can bring massive local power to bear), where wars are an ongoing thing, where there are nobles and the rich, where corporations had limited checks, and where the fringes and the colonies were where most small conflagrations happened, but once in a while even the major powers would get torn up by larger scale or internal conflicts. b) The map looks as it does because it’s cool to have 11000 planets (and you can’t do that by hand, not then anyway) and because its a staple of some types of gaming (note CT was really sandboxy) to be able to do hard science, soft science, space opera, or even ’visit the barbarians using swords’ - a lot of colonial fiction too just with a sci-fi veneer. c) Practically - even back in the late 1970s, you could write code with a simple set of charts and limited die rolls to generate individual systems. You could not hope to do massive simulations well - given the constraints of hardware and software back then - unless you were NASA or the like.
You know your software best. Do you feel like it would be a fair bit of work to allow manual entry of trade routes? (for the map display)
I’m going to do some thinking about how best to determine trade routes in an alternative way (and comms routes). Maybe I can create some software that will take a sector or subsector or list of planets and do some different calculations and spit out trade routes. If I was doing it in Java, I’d use an interface so that one could plug in and out different route generating modules (then I could have one that embodied the same logic you use for instance).
The only part I don’t feel competent to do (without the large volume of work) might be the map display part.
Nice talking to you about this stuff anyway. Beats watching the news...
– TomB (kaladorn on COTI and other places) 2020-04-11 19:44 UTC
TomB (kaladorn on COTI and other places)
---
Haha, sure beats the news!
If you can describe an algorithm to create a sector or subsector in text, with no external input, I’d be interested in adding it. Essentially, though, it would have to be something that one could at least in theory, write down and do by hand. I don’t actually want to write something like a Dwarf Fortress World Generation with a past history, empires expanding and collapsing, and all of that. It would have to be simpler. 🙂
Dwarf Fortress World Generation
I’ll see about a simple trade-route and comm-route manual entry. Perhaps it can be done in a short time.
– Alex Schroeder 2020-04-11 21:36 UTC
---
OK, for now: you can use the following notation to define communication and trade routes. Doing that will prevent the automatism from jumping in.
Inedgeus 0101 D7A5579-8 G Fl Ni A Geaan 0102 E66A999-7 G Hi Wa A Orgemaso 0103 C555875-5 SG Ga Lt Solacexe 0810 D342635-4 P S Lt Ni Po R 0101-0102 C 0102-0103 T
The format is FROM-TO TYPE where FROM and TO are coordinates and TYPE is either C or T. Hope that helps. 🙂
– Alex Schroeder 2020-04-11 22:58 UTC
---
Wow, that’s amazing. I’ll try that out! Simple and effective.
Also, thanks for that Dwarf Fortress link. That’s awesome. I have no idea how I’ve never heard of it before...
When I get a chance (if this lockdown carries on), I will revisit trade in GT, MgT 1, CT & Merchant Prince, plus some other sources. I’ll see if that can be boiled down to a simple algorithm for figuring out where they would likely put the routes. Comms are a bit more finicky because those routes can exist where no merchantile sanity exists. That could serve a key utility for mail or for movement of people in non-valuable areas on the way to valuable areas.
I think it’s hard to not have to tweak this manually at some point though.
Really, what a full map (thinking of it now in a magical world that we don’t inhabit) would ideally have would be layers - a layer for physical (stars/systems), a layer for civilian facilities of different types, a layer of military facilities of different types, a layer for X-boat (mail/comms) routes, a layer for trade routes (which would tend to follow money, pop, and jump limits), and a layer for military routes (which wouldn’t necessarily be known by civilians, but would link key strategic points including bases, caches, etc and some of those might be in open space hexes).
That’d be fun knowledge to have, but anybody trying to create that themselves manually for a large area would be investing some time and to do that and output a layered format of image/doc automatically with software would also have a different, large task.
Anyway, see what I can do and thanks for the change!
Tom
– TomB (kaladorn on COTI and other places) 2020-04-11 23:45 UTC
TomB (kaladorn on COTI and other places)
---
I’m working on my sector using your little route hack.
I did look at the source and I want to ask a couple of things in that vein first:
As to the app itself based on my usage:
1. I’m having colour issues (green next to slightly green next to the other green....). It it possible that we could have a shorthand added into or added onto the end of the allegiance tag in which we could provide a string RGB value (tag(ff3377) example) and that would be what the rendering displays? That kills two stones : 1) I can tailor the colours so we don’t get conflicts or just plain fugly colours, and 2) it may be possible to use different colours even within a polity if it makes sense.
(If I get to hacking the code, having it use some of the algorithms for picking a color set for a website so colours work harmoniously might be good to but you don’t need to do this).
1. Can you possibly give size 0 planets an asteroid field representation vs a single round dot? That’s standard on traveller maps.
2. I know this thing is an SVG image. I don’t know if you can embed another SVG or a PNG? (Thinking of colourful map icons like little class M green/blue, etc.)
3. With the idea of colour tagging hexes in the allegiance tag or next to it... how about letting me colour for routes? And perhaps a weight (from 1 to 5 or something like that giving increasing line weights from a small line to a fatter one).
Ex:
2012-2014 T 2 #aa7799 2014-2015 T 2 #aa7799 2114-2214 C 1 #cc990b
Those are my requests. An awesome tool.
TomB
– TomB 2020-04-28 03:51 UTC
---
The code is written in Perl 5. There’s a free PDF of Modern Perl available somewhere on the book’s site. You know where this is going... I’m busy enough with other projects right now, so I think you’d have to do it. I’m happy to help, and happy to incorporate changes back into the code, but I’m probably not going to spend any time on it, at least until summer.
Here are some suggestions: If you look for “sub background” you’ll find the code that distributes colour codes. Based on the culture’s name, it generates CSS classes named culture1, culture2, etc. If you then search for culture1, you’ll get to the CSS itself, where every culture number gets a colour code. And there are 28 of them.
So, if you wanted to reduce or increase the number of colours, and change the colours used, this is where you would start: define the number and colours in the CSS, then change the number in “sub background” as appropriate.
And if you would want to change how the culture codes get computed (right now it’s basically 1 + a checksum of the culture’s name, modulo the number of colours, then that’s the place to do it.
If you want to provide some information from the input to “sub background”, you need to look at “sub initialize_map” – that’s where the map gets parsed. Write some code to parse a new style of line, and store the info in a member variable. Declare those up there where “package Traveller::Mapper" starts.
Something like that. 🙂
– Alex Schroeder 2020-04-28 06:31 UTC
---
I implemented something like what TomB suggested, about three years too late. Better late than never! You can now assign arbitrary background colours to hexes, overriding the ones assigned at random.
– Alex 2023-04-10 21:41 UTC