Thursday, September 7, 2023

Tinkering and Tumult

 It has been a crazy week for me, readers! My youngest son started school, and I am suddenly back on the job market and trying to figure out where my skills can best serve the world after years of being focused on my children full-time. I'm pursuing a lot of different angles as I get back into figuring out what I want to do "when I grow up."

Honestly, getting back into life coaching with focusing on making lifestyle changes to help handle chronic pain might be the best way to put the last year of difficulties to good use... but I can hardly resist the lure of going back into tech.

To that end, I have been using my role-playing creations as a touchstone to working on reviving and updating old skills and developing new ones.

Machine Learning technology has been a big part of that focus. After all, engineering a good prompt and understanding how "AI" processes language is a new, and probably very useful skill. And I have learned a lot about both generating images and content that could be useful for TTRPGs.

I am going to share a bit of my AI experimentation here, and also talk about why I have decided to ditch some of it.

AI Image Generation

I've already discussed AI image generation at length, especially the objections, ethics, and the potential uses. I used to draw a lot when I was younger. I enjoyed digital art, and still draw a fair amount on my WACOM Bamboo tablet.

My brain tens to be going all the time. I am always exploring new ideas, imagining new worlds, tinkering with unusual philosophic propositions, hearing strange new songs in my head... Getting out the creative energies sometimes feels like a desperate struggle. Doodling has always been a key component to that.

Unfortunately, with the new pain issues with my hands holding and working with pencils and tablets is actually really painful some days. I have days where any fine manipulation is absolute torture. My doodling is no longer an option.

While it isn't a perfect subsititute, the challenge of finding ways of getting something close to what I am imagining out of my head an onto a screen has been a great challenge in composition, using artistic terminology, describing style and adding a touch of poetics. I have been able to develop a "style" close to what I would have liked to been able to draw for my Xen campaign book:

I have also tinkered with developing a neon-ish retro-80s vibe for art done for pleasure that I am quite chuffed with,a although the word-salad for creating it us excessive.:

And I have tinkered with creating material specificalyy for Eternal Ocean & Wreck to fix it's overall schizophrenic style.

I am fussy, and delete on average 11 out of ever 13 images I generate. Many of these still needed heavy editing with Sketchbook 3 or Adobe Photoshop elements before I was completely satisfied, but it saves me a lot of time using my fingers when they hurt, and still scratch the creative itch. itch. If you are interested, you can see most of my (SFW) work = drawn or genned - on DeviantArt.(or in Nightcafe.)

And I am still doing book covers for my D&D sessions, too:

I might be dating myself with this cover design.

AI Content Generation

As I was considering how is it best branch out into engineering effective AI prompts, I had a fascinating idea dropping to my head: what if I could use ChatGPT to generate a star system and rumor table like the one I shared last week? What if I could get it to collate random star system generation, random jobs, random cultural events, and a couple of starships for sale using parameters I described to it? I could theoretically then collate the date into a reasonably impressive star map.

I could even get it to update the jobs and rumors over time. Keep track of where certain factions were moving, and possibly even have a science fiction futures market that players could monitor for their downtime (Thanks again to McChuck for this idea). Maybe moving from system to system with commodities to give the GM fresh things to do and show them that the end of each voyage.

I sat down and design to the basics of the generation algorithm based on the article I posted last week, and then explained it to ChatGPT. I'd hoped that I could have it out put the email and there by just automatically output to blogger (no dice).

In trying this project I learned in incredible amount about how the machine learning model functions.

On the one hand, its very good at reading internally consistent ideas. Unlike using a random generators on Donjon, the missions mind up with the system. If there was an asteroid belt full of pirates, jobs for hunting pirates and down he's will be added to the list. If there was a cave complex on a planet, player characters would be invited to escort a ccartographer surveying the tunnels.

Planet names likewise were rocket it. I ended up with volcanic planets with names like Magma Forge. Ice Planets with names like Cryosis. And colonies with detailed names and ship names that suited purpose of the starships for sale.

Here's example of the early output. And another good one here:

Welcome to Starlight Haven Station!

Caution: Reports of increased pirate activity in the asteroid belt near Rockhaven. Notice: Local authorities seek information on a recent cargo heist near the gas giant, Chromastra. Advisory: Exercise caution during atmospheric entry to Draconis due to reported turbulence. Invitation: Attend the annual Planetary Arts Festival on Belarius; a cultural event for all. Alert: Radiation spikes detected near the distant companion star, Solara; take protective measures. Opportunity: Volunteers needed for a research expedition to investigate timespace anomalies near Chronos. Station Ads:

Starlight Haven Station News

  • Job: Salvage Operation near a timespace anomaly, Reward: 70,000 credits, Contact at The Starlight Cantina. Additional hazards: Astronavigational risks.
  • Starship for Sale: Model: Celestial Voyager, Location: Jax Starship Dealership, Price: 75,000 credits.
  • Cultural Event: Poetry Slam at The Cosmic Muse Cantina, Entry Fee: 10 credits, Date: Next Friday.
  • Job: Courier needed for a diplomatic package delivery to Chronos, Reward: 3,000 credits, Contact at Starcom Couriers. Additional hazards: Deception by rival courier services.
  • Job: Security detail required for a hazardous expedition to Draconis's volcanic region, Reward: 80,000 credits. Additional hazards: Hostile territory.
  • Commodity Advertisement: Freshly harvested Terrafruit now available at the Marketplace, 5 credits per kilo.
  • Starship for Sale: Model: Phoenix-class Cruiser, Location: The Red Comet Shipyard, Price: 95,000 credits.
  • Cultural Event: Religious Ceremony at the Temple of the Eternal Stars, Date: This Sunday, All Are Welcome.
  • Local Lists:

    Planet Aeloria:

    Planet Name: Aeloria Planet Type: Terrestrial with Breathable Atmosphere Points of Interest: Extinct colony, Natural beauty, Crashed starship
    • Laborers Needed: Miners required for ore extraction in the asteroid belt.
    • Discovery: Ancient ruins found on Moon 2, research team seeking archaeologists.
    • Cultural Event: Music Festival celebrating the asteroid miners' hard work.
    • Starship for Sale: Model: Voyager 7, Location: Moon 1, Price: 62,000 credits.
    • Job: Hazardous expedition to retrieve rare minerals from asteroid field, Reward: 85,000 credits.

    Planet Belarius:

    Planet Name: Belarius Planet Type: Terrestrial with Breathable Atmosphere Points of Interest: Alien artifact, Rings, Extinct colony
    • Laborers Needed: Agricultural workers required for semiautomated farm.
    • Discovery: Fossilized remains of a native species discovered on Belarius.
    • Cultural Event: Planetary Arts Festival showcasing local talents.
    • Starship for Sale: Model: Starhawk II, Location: Greenstar Dealership, Price: 58,000 credits.
    • Job: Courier needed for delivery to Chronos, Reward: 3,500 credits.

    Planet Chronos:

    Planet Name: Chronos Planet Type: Terrestrial with Thin Atmosphere Points of Interest: Timespace anomaly, Natural beauty
    • Laborers Needed: Construction workers required for new research facility.
    • Discovery: Strange temporal anomaly reported in the vicinity of Chronos.
    • Cultural Event: Religious ceremony at the Temple of Time, Date: Tomorrow.
    • Starship for Sale: Model: Nova Runner, Location: TimeWarp Shipyard, Price: 70,000 credits.
    • Job: Research expedition to study the temporal anomaly, Reward: 95,000 credits.

    Planet Draconis:

    Planet Name: Draconis Planet Type: Volcanic Rock Planet with Thin Atmosphere Points of Interest: Unique and desirable resources, Many unexplored moons, Crashed starship
    • Laborers Needed: Volcano miners wanted for resource extraction.
    • Discovery: Rare crystals found deep within Draconis's volcanic caves.
    • Cultural Event: Poetry reading at The Molten Quill Cantina, Entry Fee: 15 credits.
    • Starship for Sale: Model: Blaze Runner, Location: Inferno Starship Dealership, Price: 64,000 credits.
    • Job: Security detail required for volcanic mining operation, Reward: 75,000 credits.

    GM Notes:

    Notable factions in the star system: The Interstellar Miners' Guild, The Celestial Cult, The Planetary Preservation Society. The mysterious timespace anomaly near Chronos holds the key to unlocking ancient alien technology. Rising political tension between Aeloria and Belarius threatens the system's stability. The Starlight Cantina on Starlight Haven Station is a known hub for information brokers and smugglers. The Red Dragon Security firm is secretly controlled by a criminal syndicate operating in the system.

Trying to refine the process, however, was another matter entirely.

For example, I gave it detailed profile and every year and species in the setting, but while I asked it integrate that into the generation tables, they materialized unless I specifically asked for it. Normally, ChatGPT would default back to using its own preferred selection of Science fiction terms, and avoiding aliens all together.

I also could give the AI a series of examples and invite it to be creative, and usually got a lot of variations based on just five or six diverse example. However, the more creativity and latitude I permitted it to use and designing things like list of jobs, the less likely it was too remember to output them. Ultimately, it would generate huge numbers of tables and forget to share them with me:

No one thing I desperately wanted most, hey consistent outputs with a diverse amount of contents seem to meet early exclusive. The more creative I allowed the computer to be in generating jobs, planets, points of interest, etcetera, the more loose lead interpreted my output. The more tightly I asked for output format, the last creative that output was.

Eventually I had exchanges like this, where it kept forgetting steps of the process "we" had already established. Or ignored new input and kept doing the same thing even when I asked it to stop,. It led to series of interesting exchanges like this one, where I had to ask for more:

[ChatGPT does the exact same thing again, which looks nothing like its previous outputs]

[ChatGPT does something absolutely new, nothing like previous generations.]

[ChatGPT does the thing, but doesn't show me that it has done it...]

Half of the time, I tried showing it examples of the format I want to be output to take. It looked at these, said "okay I can do that," and promptly failed to create anything like it.

Eventually, I got better results when I stopped trying to describe the process to it, and instead described exactly what I wanted. Describing the output rather than the process by which I wanted it to generate the output got me at far better balance of creativity and consistency. I learned to tell it what I wanted not tell it what to do. Much like a really good manager does at a corporation.

Writing my Own Damn Code

Ultimately, though, realized that I would be far better off getting ChatGPT produce random tables for me and then writing my own software to exploit them and collate them to create the output I want.

And so, I have started refreshing Python, which I taught myself back around 2014. The language is much different from what I remember, and it has been slow going. But, after a couple of days, I have software with an outfit that describe the star system, planets in it, and randomly generates colonies those planets.

I have found that ultimately, I'm having more fun generating my own table is and letting a I do it, as well, turning ChatGPT into, at best a starting point.

With a little more hacking and list generating - plus some webspace and a few bucks - this could output a whole setting, and update it regularly, tracking commodities, the movement of fleets, and the tours of space rock bands, creating endlessly churning GM resources.

I even have an idea about how GMs with permissions could use an app to input their PCs actions to have repercussions on the setting for others.

Tied in with its own OSR scifi game it would be a pretty amazing project. A Game that is also a constantly updating service... but it would take a lot of resources to make happen, sadly. For the time being, I am going to do what I can with it to force me to keep updating skills.

I welcome reader feedback, if you have any thoughts!

No comments:

Post a Comment