• Welcome to the new COTI server. We've moved the Citizens to a new server. Please let us know in the COTI Website issue forum if you find any problems.
  • We, the systems administration staff, apologize for this unexpected outage of the boards. We have resolved the root cause of the problem and there should be no further disruptions.

Homeworld Generation from System Data

kaladorn

SOC-14 1K
I was thinking of a new utility to take sector data files (ideally in various formats) and from them generate a homeworld for a character (and in MT terms, also determine appropriate homeworld skills).

I've run across stupidities in the MT homeworld generation rules (vacuum wet worlds... etc) and often you generate a random homeworld and then have a hard time finding a match anywhere nearby. It might be far more useful to have a program that took a sector (or if you want to restrict it, a subsector) worth of data and generated a random homeworld from that sector and told you the name and UPP.

An option for the program could be how to bias the generation (instead of 1/N odds per planet where N = number of planest), options could include a population based bias (ie a Pop 9 world gets 9 pips, a Pop 2 world 2, so your odds of coming from planet of pop P in sector of total pop PT = P/PT), a bias by TL (a range to limit it to), or limits by other factors.

Is this of interest to anyone else? Would this be useful to anyone other than me? Where in the heck could one find documentation on the various sector file data formats?
(I wish we had some parser modules that were publicly available for these, that were separate and hence easily integrable into any software project...).
 
It sounds like some utility of this sort would be generally useful, yes. I should write something in Perl that does that.

There is a branch on CPAN called Games::Traveller. There are a few people on COTI who could modularize some of their scripts and submit them.

In fact, I've got a Perl module on CPAN already that slices and dices UWPs. It accepts a line with UWP data in it, and returns a UWP object, complete with accessors and toString().

With it, you could so something like this:

</font><blockquote>code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">use Games::Traveller::UWP;

...more stuff here...

my @weightedSector;
my $file = "Spinward Marches.sec";

open IN, "$file";

my $uwp = new Games::Traveller::UWP;

foreach my $line ( <IN> )
{
$uwp->readUWP( $line );
my $weight = $uwp->popDigit;
push @weightedSector, ( ( $uwp ) x $weight );
}

my $homeworld = $weightedSector[ rand(@weightedSector) ];

print "My homeworld is ", $homeworld->name, "\n";</pre>[/QUOTE]As far as a better homeworld generator, take a peek at the T5 chargen playtest. The system works in three short phases:

1. Determine starport and TL range. This feeds into:
2. Determine trade codes. For each trade code, the player will:
3. Roll on a table specific to a trade code to receive a skill.

At any rate, it's easier to match worlds based only on Starport, TL range, and trade codes. And the trade code mixes appear to be well-considered...

In fact, that's probably what I'll do when I write my homeworld generation module: I'll probably encode the T5 algorithm, and the core engine will use the output to scan a sector for the most likely matches, then determine skills from the selected world.
 
Though I agree the T5 method may be an improvement, it still has one problem in my mind. Unless population is laid out by these factors, the distribution still doesn't map to overall population geography. Now, to some extent, population may slightly influence TL. But there is no real relationship between starport and TL if I recall in classic UWP generation. And trade codes are derivative. So you still don't get a population based distribution.

Now, OTOH, there may be an argument that says 'travellers' originate more often from higher tech worlds and so should *not* be normalized to overall population distribution. <shrug>
 
Originally posted by robject:
There is a branch on CPAN called Games::Traveller. There are a few people on COTI who could modularize some of their scripts and submit them.

In fact, I've got a Perl module on CPAN already that slices and dices UWPs. It accepts a line with UWP data in it, and returns a UWP object, complete with accessors and toString().
This seems to have been removed, unfortunatly. I would like to have seen this.
 
Originally posted by kaladorn:
Unless population is laid out by these factors, the distribution still doesn't map to overall population geography. Now, to some extent, population may slightly influence TL. But there is no real relationship between starport and TL if I recall in classic UWP generation. And trade codes are derivative. So you still don't get a population based distribution.
Those are good points - T5 chargen doesn't represent the general population distribution. Considering the high pop worlds represent 90% of the total population, it's obvious just glancing at the tables. And I think that's okay.

I suspect the tables might be related to the most common world types encountered -- as you suggested, distributing Travellers over worlds rather than population densities. While high pop worlds are significant, they only average at around 14%, ranging from 3% to 30% or so.
 
Typo in what I wrote:
Pop has slight tech effects but not vice versa.
Starport has pronounced tech effects but not pop effects, even though that might be counter intuitive.

I too would have liked to see the Perl, but perhaps Robject still has the code around.
 
I reloaded the package to PAUSE, and it is visible at CPAN now. I already have a documentation bug to squash -- the module requires YAML, but I don't mention that anywhere. Rather than fixing the docs, I will try to remove the dependency.

Alright, version 0.91 is the latest and greatest. I doubt it's visible yet. Version 0.9 is there and browsable, though.
 
Back
Top