Page 1 of 8 1 2 3 ... LastLast
Results 1 to 10 of 71

Thread: Spacegate

  1. #1
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,515

    Default Spacegate

    I'm working on a Spacegate script. I'm naming it VeracitySpacegate because Ezandora already has a script named Spacegate. Mine will be better, but hers came first, so she has precedence for the simple name.

    My script will allow you specify a primary goal (and optionally a secondary goal). I'm thinking the following:

    Space Pirate
    Procrastinator
    Space Baby

    (the above are multi-day quests. Where you are in the quest is determined by current items you own and/or current language proficiency. This is the same kind of thing I do in my GingerbreadCity script.)

    Research (all rocks)
    Anomalous Plants
    Anomalous Animals
    Trophy (hostile alien rare item - blowgun, loincloth, necklace, spear, totem)
    Trade Item (food, booze, medicine, mask)
    (Maybe Spants and Murderbots; personally, I don't see the point, but if you are farming the outfit, say, why not?)

    You can specify the maximum difficulty you're prepared for - A-Z (or 0-25)
    You can specify the minimum level of language proficience before proceeding in the skill quests

    When you visit a planet with this script, it will record all the encounters and generate a "planet" record with all the things that the Spacegate terminal doesn't tell you: what kind of Spants or Murderbots, which Ancient Ruins are there, what trade item is available for how much, and so on. It will save this in SpacegatePlanetsMine.txt.

    I don't have that script coded yet because it depends on a solid planet database - and that is what I am releasing here.
    It may be useful to others, and I welcome comments and suggestions.

    Code:
    svn checkout https://svn.code.sf.net/p/veracity0/code/spacegate
    You get three scripts in "scripts"

    SpacegateData.ash - the data structures
    SpacegateExplorer - simple (for now) way to look at planets
    SpacegateImport - imports the public spreadsheet into my required data format

    You get four data files in "data"

    Spacegate.tsv - the "tab separated values" from the public spreadsheet: exported, concatenated, headers and blank lines removed
    SpacegatePlanetsPublic.txt - the result of "importing" Spacegate.txv into my "planet" data structure, indexed by coordinates
    SpacegatePlanetsPublicCompact.txt - an experimental compact representation which puts the non-cosmetic data into a single 32-bit code
    SpacegatePlanetsVeracity.txt - planets that I have personally visited over the last few weeks. Contains, for example, trophies.

    Loading data goes like this:

    Load SpacegatePlanetsPublic
    Load SpacegatePlanetsVeracity - my validated planets supersede (frequently erroneous) planets from the Public data
    Load SpacegatePlanetsMine - planets you have visited also override (possibly erroneous) Public planets - but not the built-in Veracity planets, which have trophies and such.

    Here is what SpacegateExplorer does, at the moment:

    Code:
    > SpacegateExplorer ZDPZSCS
    
    Planet Name: Sigma North VI (difficulty = 25)
    Coordinates: ZDPZSCS
    
    Environmental Hazards:
      magnetic storms
      irradiated
      high gravity
    Elemental Hazards:
      hot solar flares
      frigid zones
      nasty gases
    Plant Life: primitive
    Animal Life: none detected
    Intelligent Life: detected (hostile) (primitive alien totem}
    DANGER: Murderbot frequencies detected (drones and soldiers)
    ALERT: ANCIENT RUINS DETECTED (Procrastinators 1: That's No Moonlith, it's a Monolith!)
    Reminiscent of what the terminal tells you, but with additional annotations.

    There is a large comment at the top of SpacegateData.ash which explains my reasoning about what (non-cosmetic) data distinguishes a planet. In brief, I posit that the first letter determines the difficulty but nothing about what is on the planet, and the other 6 letters provide about 28.5 bits of information which determines everything the terminal (and the annotations) displays. Things like which images are used for plants, animals, aliens, the planet name, the flavor text of suns, moons, clouds, et.c when you visit, and so on, are constant for a particular planet - and are obviously determined from the letters, and are also procedurally generated by selecting bits from the letters. It would be fun to figure that out, but it's not worth storing that info in the planet data structure, in my opinion.

    I am sure that the encounter mix is randomized, with parameters. The spreadsheet saying "such-and-such a planet has maximum anomalous plants - 6" - is based on a sample of one visit; when I went there, there were 3, and correspondingly more of the other life forms. If you really want to "maximize" the number of a particular life type, you likely have to go to a planet which has no other kinds of life.

    Comments and suggestions welcome.
    Ph'nglui mglw'nafh Cthulhu
    R'lyeh wgah-nagl fhtagn.

  2. #2
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,515

    Default

    Regarding errors in the public spreadsheet:

    I added a lot of data checking and now get this when I import:

    Code:
    > SpacegateImport
    
    Importing Spacegate planet data from Spacegate.tsv
    1541 planets found
    
    Converting data to usable format.
    AAAAAAC: Murderbots not detected but units supposedly present.
    AAAAAAE: Spants not detected but units supposedly present.
    AAAAAAG: Murderbots not detected but units supposedly present.
    AAAAAAN: Spants not detected but units supposedly present.
    AAAAAAP: Murderbots detected but both an artifact and units supposedly present.
    AAAAAAP: Spants detected but both an artifact and units supposedly present.
    AAAAAAS: Spants not detected but artifact supposedly present.
    AAAAAAU: Murderbots not detected but units supposedly present.
    AAAAAAV: Spants not detected but artifact supposedly present.
    AAAAAAW: Spants not detected but units supposedly present.
    AAAAAAX: Murderbots not detected but artifact supposedly present.
    AAAAAAX: Spants not detected but units supposedly present.
    AAAAAAY: Spants not detected but artifact supposedly present.
    AAAAAAZ: Spants not detected but units supposedly present.
    AAAAABB: Murderbots not detected but units supposedly present.
    AAAAABE: Purported trade item: 'salad (13.4k)' but no intelligent life detected
    AAAAABF: Spants not detected but units supposedly present.
    AAAAABG: Spants not detected but units supposedly present.
    AAAAABK: Spants not detected but units supposedly present.
    AAAAABM: Purported trade item: 'booze (11.9k)' but no intelligent life detected
    AAAAABN: Spants not detected but units supposedly present.
    AAAAABO: Purported trade item: 'booze (19.9k)' but no intelligent life detected
    AAAAABP: Purported trade item: 'salad (13.6k)' but hostile intelligent life detected
    AAAAABS: Purported trade item: 'salad (14.9k)' but no intelligent life detected
    AAAAABT: Spants not detected but units supposedly present.
    AAAAABV: Spants not detected but units supposedly present.
    AAAAABX: Purported trade item: 'salad (14.4k)' but no intelligent life detected
    AAAAABY: Murderbots not detected but units supposedly present.
    AAAABAA: Murderbots not detected but units supposedly present.
    AAAABAB: Murderbots not detected but artifact supposedly present.
    AAAABAC: Murderbots not detected but units supposedly present.
    AAAABAC: Spants not detected but artifact supposedly present.
    AAAABCA: Spants not detected but units supposedly present.
    AAAABCB: Murderbots not detected but units supposedly present.
    AAAACAA: Spants not detected but units supposedly present.
    AAAACAC: Purported trade item: 'salad (19.9k)' but hostile intelligent life detected
    AAAACAC: Murderbots not detected but units supposedly present.
    AAAACAC: Spants not detected but units supposedly present.
    AAAACBB: Murderbots not detected but units supposedly present.
    AAAACBC: Purported trade item: 'booze (24.3k)' but no intelligent life detected
    AAAACBC: Murderbots not detected but units supposedly present.
    AAAACCA: Spants detected but both an artifact and units supposedly present.
    AAAACCC: Purported trade item: 'booze (22.4k)' but no intelligent life detected
    AAABAAA: Spants not detected but units supposedly present.
    AAABAAC: Purported trade item: 'salad (19.9k)' but no intelligent life detected
    AAABABA: Murderbots detected but both an artifact and units supposedly present.
    AAABABB: Spants not detected but units supposedly present.
    AAABACB: Murderbots not detected but artifact supposedly present.
    AAABACC: Spants not detected but artifact supposedly present.
    AAABBAC: Spants not detected but artifact supposedly present.
    AAABBBA: Purported trade item: 'medicine (24.7k)' but no intelligent life detected
    AAABBBC: Murderbots not detected but units supposedly present.
    AAABBBE: Murderbots not detected but units supposedly present.
    AAABBBF: Spants not detected but units supposedly present.
    AAABBBG: Purported trade item: 'Medicine (18.8k)' but no intelligent life detected
    AAABBCC: Murderbots not detected but units supposedly present.
    AAABBCC: Spants not detected but units supposedly present.
    AAABCAB: Spants not detected but units supposedly present.
    AAABCAC: Murderbots not detected but units supposedly present.
    AAABCBB: Murderbots not detected but artifact supposedly present.
    AAABCCB: Spants not detected but units supposedly present.
    AAABCCC: Spants not detected but artifact supposedly present.
    AAACAAB: Murderbots not detected but units supposedly present.
    AAACAAC: Murderbots not detected but artifact supposedly present.
    AAACAAC: Spants not detected but units supposedly present.
    AAACABA: Spants not detected but artifact supposedly present.
    AAACABC: Murderbots not detected but units supposedly present.
    AAACBAB: Spants not detected but units supposedly present.
    AAACBAC: Purported trade item: 'medicine 24k' but hostile intelligent life detected
    AAACCAB: Spants not detected but units supposedly present.
    AAACCAC: Murderbots not detected but artifact supposedly present.
    AAACCBA: Purported trade item: 'medicine 14.9k' but no intelligent life detected
    AAACCBB: Murderbots not detected but units supposedly present.
    AAACCBC: Murderbots not detected but units supposedly present.
    AAACCCB: Murderbots not detected but units supposedly present.
    AAACIJD: Murderbots not detected but units supposedly present.
    AAACIJD: Spants not detected but units supposedly present.
    AABAAAB: Murderbots not detected but units supposedly present.
    AABAAAC: Spants not detected but units supposedly present.
    AABABAC: Spants not detected but units supposedly present.
    AABABCA: Spants not detected but artifact supposedly present.
    AABACAA: Purported trade item: 'medicine (17.4k)' but hostile intelligent life detected
    AABACAA: Murderbots not detected but units supposedly present.
    AABACAB: Spants not detected but units supposedly present.
    AABACAC: Murderbots not detected but artifact supposedly present.
    AABACAC: Spants not detected but units supposedly present.
    AABACCC: Purported trade item: 'medicine (17.4k)' but no intelligent life detected
    AABACCC: Murderbots not detected but units supposedly present.
    AABBABC: Murderbots not detected but units supposedly present.
    AABBABC: Spants not detected but artifact supposedly present.
    AABBACC: Spants not detected but units supposedly present.
    AABBBBA: Purported trade item: 'booze 29.8k' but hostile intelligent life detected
    AABBBBA: Spants not detected but units supposedly present.
    AABBBBC: Murderbots not detected but units supposedly present.
    AABBBCB: Purported trade item: 'mask (235k)' but hostile intelligent life detected
    AABBBCB: Murderbots not detected but units supposedly present.
    AABBBCC: Spants not detected but units supposedly present.
    AABBCAC: Murderbots not detected but units supposedly present.
    AABBCBB: Murderbots not detected but units supposedly present.
    AABBCBC: Spants not detected but units supposedly present.
    AABBCCA: Murderbots not detected but artifact supposedly present.
    AABCAAA: Murderbots not detected but artifact supposedly present.
    AABCAAB: Spants not detected but units supposedly present.
    AABCABA: Murderbots not detected but artifact supposedly present.
    AABCABB: Spants not detected but artifact supposedly present.
    AALAAAD: Murderbots not detected but artifact supposedly present.
    AARRGHH: Spants not detected but artifact supposedly present.
    AASRPEM: Purported trade item: 'booze 27,900' but no intelligent life detected
    AASRPEM: Spants not detected but units supposedly present.
    ABAAAAB: Murderbots not detected but artifact supposedly present.
    ABABYBE: Murderbots not detected but units supposedly present.
    ABABYBE: Spants not detected but units supposedly present.
    ABACADA: Purported trade item: 'medicine 24K' but hostile intelligent life detected
    ABACADA: Murderbots not detected but units supposedly present.
    ABACADA: Spants not detected but units supposedly present.
    ABALONE: Murderbots not detected but artifact supposedly present.
    ABCABCA: Murderbots not detected but artifact supposedly present.
    ABCBCBA: Purported trade item: 'medicine 16.1k' but no intelligent life detected
    ABCBCBA: Spants not detected but artifact supposedly present.
    ABCDCBA: Murderbots not detected but units supposedly present.
    ABCDCBA: Spants not detected but units supposedly present.
    ABIGTIT: Purported trade item: 'mask (134K)' but no intelligent life detected
    ABSCOND: Murderbots not detected but artifact supposedly present.
    ADGJLMB: Murderbots not detected but units supposedly present.
    ADGJLMB: Spants not detected but artifact supposedly present.
    ADRAGON: Murderbots not detected but artifact supposedly present.
    AELEVEN: Spants not detected but units supposedly present.
    AFAIRYS: Spants not detected but units supposedly present.
    AINCCLQ: Purported trade item: 'medicine 16.2k' but no intelligent life detected
    AIRSHIP: Spants not detected but units supposedly present.
    ALCOHOL: Spants not detected but units supposedly present.
    ALPHAAZ: Spants not detected but units supposedly present.
    ALVINNN: Murderbots not detected but units supposedly present.
    AMAZONA: Murderbots not detected but units supposedly present.
    ANALPAL: Murderbots not detected but units supposedly present.
    ANALPAL: Spants not detected but units supposedly present.
    ANGUISH: Murderbots not detected but artifact supposedly present.
    ANORMAL: Spants not detected but units supposedly present.
    ANTIFAS: Spants not detected but units supposedly present.
    APOLOGY: Spants not detected but units supposedly present.
    AQUJVPN: Murderbots not detected but artifact supposedly present.
    ARABEST: Purported trade item: 'Medicine (18.8k)' but no intelligent life detected
    ARAMADA: Murderbots not detected but units supposedly present.
    ARCANUM: Spants not detected but units supposedly present.
    ARRAKIS: Spants not detected but artifact supposedly present.
    ARRRRRR: Spants not detected but units supposedly present.
    ASDFGHJ: Murderbots not detected but units supposedly present.
    ASSBUTT: Murderbots not detected but units supposedly present.
    ASSBUTT: Spants not detected but units supposedly present.
    ASSWIPE: Murderbots not detected but units supposedly present.
    ASSWIPE: Spants not detected but units supposedly present.
    ATOYOTA: Purported trade item: 'medicine 26.9K' but no intelligent life detected
    AVARICE: Murderbots not detected but artifact supposedly present.
    AVARICE: Spants not detected but artifact supposedly present.
    BABACNO: Murderbots not detected but units supposedly present.
    BAGHDAD: Spants not detected but artifact supposedly present.
    BARBARA: Murderbots detected but both an artifact and units supposedly present.
    BARBARA: Spants detected but both an artifact and units supposedly present.
    BARCODE: Murderbots detected but both an artifact and units supposedly present.
    BARCODE: Spants not detected but artifact supposedly present.
    BOSSBAT: Purported trade item: 'salad (23.3k)' but no intelligent life detected
    CACBCDC: Spants not detected but artifact supposedly present.
    DXAAAAA: Spants not detected but units supposedly present.
    ENGLAND: Murderbots not detected but units supposedly present.
    ESTONIA: Spants not detected but units supposedly present.
    FAGGOTS: Spants not detected but units supposedly present.
    FARTGAS: Spants detected but both an artifact and units supposedly present.
    IMPETUS: Spants not detected but units supposedly present.
    IOIIIOO: Murderbots not detected but units supposedly present.
    KINGDOM: Murderbots not detected but artifact supposedly present.
    KINGDOM: Spants not detected but artifact supposedly present.
    LEGOLAS: Murderbots not detected but units supposedly present.
    LIBERTY: Spants not detected but units supposedly present.
    MISFITS: Spants not detected but units supposedly present.
    Invalid coordinates: N*****S
    NEPTUNE: Purported trade item: ' ' but hostile intelligent life detected
    NONBIER: Purported trade item: 'Salad' but hostile intelligent life detected
    NONBIER: Spants not detected but units supposedly present.
    OBNOXIA: Murderbots detected but both an artifact and units supposedly present.
    OBSIDIA: Purported trade item: 'booze 16k' but no intelligent life detected
    Invalid coordinates: PANGEA
    PEACHES: Spants not detected but units supposedly present.
    QBQBQBQ: Murderbots not detected but units supposedly present.
    RAMONES: Murderbots not detected but artifact supposedly present.
    SCIENCE: Purported trade item: 'medicine, 26,900' but no intelligent life detected
    SEXDOLL: Spants not detected but units supposedly present.
    SKHQWKL: Purported trade item: ' ' but no intelligent life detected
    SOPRANO: Murderbots not detected but artifact supposedly present.
    TATGHSG: Murderbots not detected but units supposedly present.
    TATGHSG: Spants not detected but artifact supposedly present.
    TATGHSH: Spants not detected but units supposedly present.
    TELEFON: Spants not detected but units supposedly present.
    THIRTYG: Spants not detected but artifact supposedly present.
    TJSYRJS: Murderbots not detected but artifact supposedly present.
    TJSYRJS: Spants not detected but artifact supposedly present.
    VOLCANO: Purported trade item: 'medicine (27.5k)' but no intelligent life detected
    WEEABOO: Murderbots not detected but units supposedly present.
    WEIRDAL: Purported trade item: 'salad (30.0k)' but no intelligent life detected
    WHATTHE: Spants detected but both an artifact and units supposedly present.
    WILDMAN: Murderbots not detected but units supposedly present.
    WILDMAN: Spants not detected but units supposedly present.
    XFRYLWS: Murderbots not detected but units supposedly present.
    XYZABCD: Spants not detected but units supposedly present.
    YZABCDE: Murderbots not detected but units supposedly present.
    YZABCDE: Spants not detected but units supposedly present.
    ZAAAEUN: Spants not detected but artifact supposedly present.
    ZETHREE: Spants not detected but units supposedly present.
    ZFATTIE: Spants not detected but units supposedly present.
    ZGUESSS: Spants not detected but units supposedly present.
    ZUUUUUU: Spants not detected but units supposedly present.
    ZWINTER: Spants not detected but units supposedly present.
    
    Writing Spacegate planet data to SpacegatePlanetsPublic.txt
    Writing Spacegate planet data to SpacegatePlanetsPublicCompact.txt
    Aside from the invalid coordinates, everything else is conflicting data where I can't necessarily decide what to believe. So I do this:

    - If the aliens are "hostile" (or not present) and a trade item is listed, I set aliens as "detected" and list no trade item.
    - If there is a Spant or Murderbot non-combat, but drones or soldiers are present, I simply say "detected".
    - If Spants or Murderbots are NOT listed as present, but there are units (or an artifact). simply say "detected"

    Other choices are possible. For example, if there is a trade item, set the aliens as "friendly".
    But, setting to "detected" basically says "details are unconfirmed. Go check if you are interested".

    Revision 125

  3. #3
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,515

    Default

    I've actually made quite a bit of progress on this, although there is a LOT to take account of.
    For example, I can search for one goal or a primary and secondary goal.

    A few abbreviated examples:

    Code:
    > ash import <VeracitySpacegate.ash>; planets_for_goal( GOAL_PLANTS ).count()
    
    Returned: 45
    
    > ash import <VeracitySpacegate.ash>; planets_for_goal( GOAL_ANIMALS ).count()
    
    Returned: 44
    
    > ash import <VeracitySpacegate.ash>; planets_for_goals( GOAL_PLANTS, GOAL_ANIMALS ).count()
    
    Returned: 1
    There are 45 planets with Hostile Anomalous Plants.
    There are 44 planets with Hostile Anomalous Animals
    There is 1 (known) planet with both.

    I have verified the planet with both, and am gratified that it exists, since for the longest time, there was no example of a planet with both, although I posited it must exist although the Wiki knows nothing of it.

    One of the (many) things to work out is this:

    Code:
    > ash import <VeracitySpacegate.ash>; planets_for_goal( GOAL_ALL_ROCKS ).count()
    
    Returned: 20
    That's nice. If you want to maximize your research with a geological sample kit, you have 20 planets - of divers difficulty level - to choose from.

    A tricky problem is when you have a primary goal of "Anomalous Plants" or "Space Pirate quest step 2" - and you'd like to maximize rocks (for research) as your secondary goal. Which means, minimize other kinds of life - animals, plants, murderbots, spants, aliens. Don't have that coded yet. But it's coming.

    Hoping to get all that worked out, as well as the configuration options and the command line by the end of the upcoming long weekend, when I have lots of vacation days. That will allow you to run the script and say "maximize for X and Y, maximum difficulty Z, which planet should I go to?" Or "I want a random planet from K-P. Suggest one?"

    The actual "OK, given that, automate for 20 turns and save the results" comes later.

    My one question is this:

    I have no settings to record types of Rocks you can find. You can choose to not spend a turn in the Caves - so if you want to minimize total turns spent while looking for a particular quest step, say, you might prefer that. But is there really a difference in rocks? The spreadsheet tends to display the result of exactly one run on the planet. If they happened to not get rock type A, does that really mean "you won't ever find rock type A", or is it an artifact of sample size 1?

    I can certainly take 3 bits to determine which rock types appear. I wonder how that actually maps to KoL's planet model.

    I have four multis who just bought Spacegate access. I expect that essentally all of them will go for "RANDOM" - within their capabilities - which means I'll be able to add more than 1400 new planets a year to the collective database. As hosted by this script.

    (The "what happened this run" will also include the following cosmetic things:

    What the sky look like
    What the sun(s) look like
    What the moon(s) look like.
    Which plant image
    Which animal image
    Which (hostile or friendly) alien image

    Since those do not change for a given planet, they must be encoded in the 7-alphabetic-character worth of bits - but since they don't actually affect gameplay, they undoubtedly reuse bits used to encode game-affecting parameters.)

  4. #4
    Senior Member AlbinoRhino's Avatar
    Join Date
    May 2008
    Posts
    866

    Default

    This is all pretty amazing. Blows away the script I made for playing these. I think all mine does is keep a record of any planet coordinates where it saw the word "anomalous" on the terminal page. In any event, you have rekindled my interest in the spacegate, which I quit playing some time ago. I am probably going to have to install this when I get a chance.

  5. #5
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,515

    Default

    Here is the plan for command options and settings.

    Code:
    // commands:
    //   automate				// Do whatever the settings say you should do
    //   coordinates XXXXXXX		// Use specific coordinates
    //   random [difficulty]		// Choose random coordinates
    //   goal A [difficulty]		// Choose a planet with goal A and minimal other life forms
    //   goal A, B [difficulty]		// Choose a planet with goals A and B and minimal other life forms
    //
    // optional difficulty:
    //   (X)				// Difficulty level X only
    //   (X-Y)				// Difficulty level betwen X and Y inclusive
    //
    // goals:
    //   all rocks				// no lifeforms or ruins
    //   plants				// hostile anomalous plants
    //   animals				// hostile anomalous animals
    //   murderbots [type]			// murderbot [artifact, drones, soldiers]
    //   spants [type]			// spant [artifact, drones, soldiers]
    //   friendly aliens [buy] [item]	// friendly aliens [food, booze, medicine, mask]
    //   hostile aliens [item]		// hostile aliens [blowgun, loincloth, necklace, spear, totem]
    //   space pirate [step]		// Space Pirate quest [1, 2, 3]
    //   procrastinator [step]		// Procrastinator quest [1, 2, 3]
    //   space baby [step]			// Space Baby quest [1, 2, 3]
    //
    // For spants and murderbots, [type] is optional. If omitted, will choose a planet with that lifeform "detected" but type not known.
    // For aliens, [item] is optional. If omitted, will choose a plent with aliens "detected", but item not known
    // For alien races, [step] is optional. If omitted, will detect where you are in that quest and do the appropriate step.
    //
    // Settings to control the above
    //
    //   VSG.Coordinates			// If valid coordinates, that specific planet.
    //					// If RANDOM, a random planet within configured difficulty range
    //					// Default is unset
    //   VSG.Goal1				// (all rocks) Primary goal
    //   VSG.Goal2				// Default is unset
    //   VSG.BuyTradeItem			// Default is false
    //   VSG.MinimumDifficulty		// (A) Easiest planet to visit
    //   VSG.MaximumDifficulty		// (Z) Hardest planet to visit
    //   VSG.MinimumSpacePirateLanguage	// (40) Minimum language proficiency to try for step 2
    //   VSG.MinimumProcrastinatorLanguage	// (60) Minimum language proficiency to try for step 2
    //   VSG.MinimumSpaceBabyLanguage	// (50) Minimum language proficiency to try for step 2
    Obviously, if you specify a difficulty (or range) we may not be able to satisfy even one goal, much less two.
    There are so many planets, it seems likely that all combinations exist for every difficulty, but our library of planets is tiny, given the vastness of space.
    Last edited by Veracity; 11-20-2018 at 09:27 AM.

  6. #6
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,515

    Default

    For grins, revision 128 includes my (very incomplete) VeracitySpacegate.ash.
    It has the code I demoed above - where you can search for planets that match one or two goals - and get a list of them back.
    This will all change a lot, even before I get to the "automate a planet, record everything, print it (and save to settings) at end of session" part.

    So, don't count on anything - goals, data structures, functions - to remain unchanged, but it may amuse you in its present state.

    If nothing else, it shows how I incrementally develop software without necessarily having it all designed up front.

  7. #7
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,515

    Default

    Regarding the proposed commands, I have a refinement. There are two "prefix" commands:

    automate - choose a planet based on parameters and visit it
    suggest - choose a planet based on parameters and say what's known about

    "automate" is the default and you can leave it off, unless there are no other parameters, where it does whatever current settings specify

    ---

    automate - visit planets based on current settings
    suggest - suggest a planet based on current settings and describe it

    All other commands work as described above: they "automate" the specified planet.
    If you precede them the "suggest", they generate a planet and describe it.

    Suggest will be more verbose about how it chooses a planet and more forgiving of errors; nothing to abort, since it will not visit a planet.

    So, something like this:

    > VeracitySpacegate suggest goal spants, animals (K-N)

    I know about 428 planets with Spants
    Of those, 16 also have Hostile Anomalous Animals
    Of those, 4 have difficulty between K and N
    I suggest you visit LUBBOCK
    Here's what I know about it:
    ... planet description...

    Getting "suggest" planet-picking functionality by itself is a prerequisite to getting the "automate" functionality - and would be useful by itself.

    I'll work towards releasing that soonish.

    I really want the "automate" functionality since that will add new planets to SpacegatePlanetsMine.txt, where they can augment the database.
    Of course, that part only applies to visiting unknown (or RANDOM) planets - or previously know planets from the spreadsheet with incomplete info.

    Edit: And considering that I sequentially trim lists of planets based on goals, I see no reason that there need be only two goals. Heck, if you want "spent artifact" and "murderbot artifact" and "procrastinator 1" and "friendly aliens", by all means - see if such a planet is known.
    Last edited by Veracity; 11-20-2018 at 03:19 PM.

  8. #8
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,515

    Default

    Since I had nothing better to do today, I finished up all the "suggest a planet" stuff.

    Code:
    > VeracitySpacegate help
    
    Available commands:
    
    help - print this message
    
    suggest [parameters] - select a planet to visit
    visit [parameters] - select a planet to vist and go there
    automate [parameters] - (same as visit)
    
    If you do not specify parameters, the script will use current settings to control selection
    
    Available parameters:
    
    coordinates XXXXXXX - go to the coordinates you specified
    random [difficulty] - go to a random planet, as restrained by the difficulty you chose
    goal A [, B]... [difficulty] - go to a planet that satisfies all the goals you selected
    
    Difficulty is always optional; if not selected, script settings will determine it. It defauls to (A-Z)
    
    (X) - difficulty is exactly X
    (X-Y) - difficulty is between X and Y, inclusive
    
    Available goals:
    
    rocks - If this is the only goal, will find a planet with all rocks.
    plants - Hostile Anomalous plants
    animals - Hostile Anomalous animals
    trade [buy] [item] - friendly aliens selling the (optiona) item. Will find cheapest, if you want to 'buy'
    (item is one of salad, booze, medicine, mask)
    trophy [item] - hostile aliens wielding the (optional) equipment
    (item is one of blowgun, loincloth, necklace, spear, totem)
    murderbots [type] - Murderbots (optionally) with artifact, drones, or soldiers
    spants [type] - Spants (optionally) with artifact, drones, or soldiers
    ruins - any unidentified ruins
    procrastinator [step] - the next (or specified) step in the Procrastinator quest
    space baby [step] - the next (or specified) step in the Space Baby quest
    space pirate [step] - the next (or specified) step in the Space Pirate quest
    
    For spants and murderbots, [type] is optional. If omitted, chooses planet with life 'detected' but type not known.
    For aliens, [item] is optional. If omitted, chooses plent with life 'detected', but item not known
    
    Available script settings:
    
    VSG.Coordinates - coordinates or RANDOM
    VSG.Goals - set of goals. default is 'rocks'
    VSG.BuyTradeItem - true or false
    VSG.MinimumDifficulty - Easiest planet to visit. Default is A
    VSG.MaximumDifficulty - Hardest planet to visit. Default is Z
    VSG.MinimumProcrastinatorLanguage - Minimum language fluency to try for step 2. Default is 60
    VSG.MinimumSpaceBabyLanguage - Minimum language fluency to try for step 2. Default is 50
    VSG.MinimumSpacePirateLanguage - Minimum language fluency to try for step 2. Default is 40
    Parsing that makes me wish I had a command line parsing library.

    Code:
    > VeracitySpacegate goals murderbots, spants (E-K)
    
    Considering 1541 known planets.
    After filtering on 'murderbots', 566 left.
    After filtering on 'spants', 227 left.
    After filtering on planet difficulty (E-K), 25 left.
    After filtering for fewest additional combat encounters, 8 left.
    After filtering for fewest additional noncombat encounters, 5 left.
    
    I suggest that you visit the planet at coordinates JUSTINA
    Here's what I know about that planet:
    
    Planet Name: Zeta Fredfordus VI (difficulty = 9)
    Coordinates: JUSTINA
    
    Environmental Hazards:
      toxic atmosphere
      magnetic storms
    Elemental Hazards:
      hot solar flares
    Plant Life: none detected
    Animal Life: none detected
    Intelligent Life: detected (hostile) (unknown alien trophy}
    DANGER: Spant chemical signatures detected
    DANGER: Murderbot frequencies detected
    We log all the filtering stages.

    At the end, it chooses the hardest planet remaining, since that is likely to have more valuable rocks.
    (I originally had it go for a random planet, but why?)

    Code:
    > VeracitySpacegate goals rocks
    
    Considering 1541 known planets.
    After filtering on 'rocks', 20 left.
    After filtering for fewest additional combat encounters, 20 left.
    After filtering for fewest additional noncombat encounters, 20 left.
    
    I suggest that you visit the planet at coordinates ZZZZZZQ
    Here's what I know about that planet:
    
    Planet Name: Abbrevianus Waldorf I (difficulty = 25)
    Coordinates: ZZZZZZQ
    
    Environmental Hazards:
      high gravity
      irradiated
      magnetic storms
    Elemental Hazards:
      frigid zones
      scary noises
      nasty gasses
    Plant Life: none detected
    Animal Life: none detected
    Intelligent Life: none detected
    Not all filtering is useful.

    Code:
    > VeracitySpacegate goals space baby
    
    Considering 1541 known planets.
    After filtering on 'space baby 1', 83 left.
    After filtering for fewest additional combat encounters, 3 left.
    After filtering for fewest additional noncombat encounters, 3 left.
    
    I suggest that you visit the planet at coordinates ZIWTWNB
    Here's what I know about that planet:
    
    Planet Name: Phi Trixrabbitus II (difficulty = 25)
    Coordinates: ZIWTWNB
    
    Environmental Hazards:
      high gravity
      irradiated
      high winds
    Elemental Hazards:
      hot solar flares
      scary noises
      lewd rock formations
    Plant Life: none detected
    Animal Life: none detected
    Intelligent Life: none detected
    ALERT: ANCIENT RUINS DETECTED (Space Baby 1: Time Enough at Last)
    It looked at my inventory and language fluency settings and figured out where I needed to go in the Space Baby quest.

    Code:
    > VeracitySpacegate goals trade buy salad (F-O)
    
    Considering 1541 known planets.
    After filtering on 'trade salad', 37 left.
    After filtering on planet difficulty (F-O), 16 left.
    After filtering for cheapest trade item (primitive alien salad @ 14,200 Meat), 1 left.
    
    I suggest that you visit the planet at coordinates NEWYORK
    Here's what I know about that planet:
    
    Planet Name: Zeta Salisbury IV (difficulty = 13)
    Coordinates: NEWYORK
    
    Environmental Hazards:
      irradiated
      high winds
    Elemental Hazards:
      nasty gasses
    Plant Life: none detected
    Animal Life: none detected
    Intelligent Life: detected (primitive alien salad @ 14,200 Meat}
    DANGER: Spant chemical signatures detected (drones and soldiers)
    If you are looking for a trade item and actually want to buy it, it will find the cheapest price.

    Code:
    > VeracitySpacegate random (F-K)
    
    RANDOM coordinates with difficulty (F-K) -> FMJQGOD
    
    I suggest that you visit the planet at coordinates FMJQGOD
    I know nothing about that planet. Go forth and explore it. Have fun, but be careful!
    We generate our own random planet coordinates, rather than depending on KoL - which doesn't let you specify difficulty ranges, like that.

    I think this is everything I need for the planet database and choosing a planet to visit based on your goals.

    Next up will be actually visiting the planet, watching everything, and saving planet parameters in SpacegatePlanetsMine.txt.

    Comments and suggestions welcome.

  9. #9
    Senior Member AlbinoRhino's Avatar
    Join Date
    May 2008
    Posts
    866

    Default

    Code:
    > VeracitySpacegate goals animals, plants (K-Z)
    
    Considering     1541 known planets.
    After filtering on 'animals', 44 left.
    After     filtering on 'plants', 1 left.
    After filtering on planet difficulty     (K-Z), 0 left.
    I'm sorry. I don't know any planets that satisfy all of     your requirements
    I installed it and ran the above. Pretty sweet. I can deduce there is a planet with difficulty less than 'K' that has both plants and animals? I'm curious - the database is only built up by your 4 characters (and the spreadsheet)? New planet data accumulated by other players just remains in their personal data files? ie...is there any way to implement data-sharing so that the script would build its database faster? I suspect not or other scripts would probably have deployed such by now. But you're such a wiz I couldn't put it past you .

    I suspect I will have more to say after I have a had a chance to play with it more. For now, I'll just say "Bravo".

  10. #10
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,515

    Default

    The planet with both plants and animals is EGGBURT. I saw that on the spreadsheet and visited it for verification.

    The state of the database is this:

    1) The public spreadsheet, processed by SpacegateImport.ash (also released) is in SpacegatePlanetsPublic.txt
    2) The planets that I have personally visited, entered and annotated by hand, are in SpacegatePlanetsVeracity.ash

    When I say "by hand", I mean I have an ASH file with a hand-coded array of "planet" records which I map_to_file into that file. I attach that for your amusement, although I see no need to release it via svn.

    So far, my multis have been doing things like testing the quests (Procrastinator,, etc.),verifying planets like EGGBURT,, and visiting (once) all the planets that are publicly announced as having rare drops from hostile aliens.

    When I finish the "record everything you say while adventuring on a planet" part, the script will automatically do something similar: it will add a "planet" to the map of planets you, personally, have visited and will map_to_file it to SpacegatePlanetsMine.txt. As I mentioned, when my scripts load_planets(), they merge three files - SpacegatePlanetsPublic.txt, SpacegatePlanetsVeracity.txt, and SpacegatePlanetsMine.txt. The first contains "unverified" planets - many with incomplete info, because of all the data format errors reported by SpacegateImprt.ash. The latter two are considered to be "verified" and will override planets from the "Public" data file.

    Once I get the automatic discovery stuff working, I will copy my Veracity file to my Mine file and all of my multis will add to that. Periodically, I will copy it back to Veracity and release it, so that all users of this script will have my data available.

    Note that everybody will still have their own Mine file - and those can be shared, as well, by simply concatenating multiple Mine files into one.

    A thing I haven't figured out is how to easily add in knowledge about the rare hostile alien trophies. Most everybody who visits a planet will not see such - but the person who gets one will have it notated in their Mine file. Perhaps a program which will do the "concatenation" of somebody else's Mine file into yours and will compare planets that it merges in, reporting on differences (like the trophies)?

    I also want to collect the "cosmetic" planet info and save it in, perhaps, a parallel file: SpacegatePlanetCosmetics.txt, say. This will also be indexed by coordinates, but will have:

    Planet name
    Planet sky
    Planet sun
    Planet moons
    Planet animal image
    Planet plant image
    Planet alien image

    These are all things that have no effect on gameplay. Only the name is in the public spreadsheet - which is why I have that in my planet data structure, even though it is cosmetic; I wanted to import it. Hmm. Perhaps I should move it to the planet_cosmetics structure and have SpacegateImport .ash write to both files, thus keeping the "game affecting" data and the "cosmetic" data separated? I think I'll do that. The public "cosmetics" file will - like the planet data - be incomplete.

    The sky, suns, and moons are described when you first step onto a planet:

    The sky is a dim red, punctuated by mottled pale blue and pink clouds. It is twilight -- the planet's sun is just out of sight. There are no moons visible.
    The sky above the horizon is a deep blue, speckled with puffy grey clouds. The planet's sun (if it has one) is nowhere to be seen. There are no moons visible.
    The sky is blue fading into orange near the horizon. The system's twin white suns loom above you. The planet doesn't appear to have any satellites.
    The planet's sky is a deep green, dominated by a system of pale blue rings. The landscape is lit by a brilliant white sun. Several waning moons pepper the planet's ecliptic plane.
    The sky is a bleached orange. The system's single, distant sun hangs dimly near the horizon. The sky is moonless.
    The sky is yellow fading into blue near the horizon. A bright yellow, almost Sol-like sun hangs overhead. A single massive moon dominates the dome of the sky.
    The planet's sky is a pale green, dominated by a system of white rings. The system's twin blue suns loom above you. Two gaseous moons punctuate the sky.

    And so on. Always three sentences. I'm curious about what the choices are for each.

    Certainly not something to make decisions on for visiting a planet, but will augment my "planet description" to include that extra info - much as I do with kinds of spants, trade item and price, and so on.

    I spend most of yesterday coding. I'll come up with a plan for completing the "visit" part of the script and perhaps I'll start on that on Sunday; I have a lot of things I need to do today and tomorrow.
    Attached Files

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •