Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Entry: Journal of Applied Weirdness #9

Closed
serin-delaunay opened this issue Oct 24, 2016 · 10 comments
Closed

Entry: Journal of Applied Weirdness #9

serin-delaunay opened this issue Oct 24, 2016 · 10 comments
Labels

Comments

@serin-delaunay
Copy link

serin-delaunay commented Oct 24, 2016

Scientific journal articles about wacky sci-fi brain surgery shenanigans!
Repository: https://github.com/serin-delaunay/NaNoGenMo2016
Previews and dev diary below, also on Twitter.

@serin-delaunay
Copy link
Author

serin-delaunay commented Nov 3, 2016

Original first comment:
I think I'll be able to participate this year. Not sure if it'll interfere with my procjam plans.
Possible ideas:

  • Modifying IVAN code to output a log of observed happenings (with more detailed metadata than the in-game text log), and transforming it into a more palatable form with CFG-like productions. Play a few games and see which one produces the best story. This isn't going to work with my current C++ IDE/toolchain.
  • Making a simple(ish) turn-based game and an AI to play it, and turn its tree-searching into a breathless stream-of-consciousness overthinking of every possible outcome before the first move is made.
  • Same, but with a less adversarial setup: the narrator tries to optimise the outcome in a complex social situation, for example arranging a less-than-happy family around a table and managing the outcome.

I've played most of a game of IVAN and manually annotated it. I don't think the first idea would reach 50,000 words without excessive boring detail about irrelevant game events, made up dialogue/explanations for apparently random happenings, and/or several repetitive playthroughs (with the same quest assignment and sequence of dungeons).

For now I'm going to focus on the third idea. Communal meals will give me the opportunity to gradually introduce a variety of new characters/groups/families as they arrive, have the narrator imagine the results of possible seating arrangements, describe various sorts of procedurally generated foods and drinks, and watch/react to/intervene in various positive or negative interactions between people.
Maybe I'll do it as several independent stories, Emily-Short-style.

@serin-delaunay serin-delaunay changed the title Entry: ??? Entry: Meals and Mediation Nov 3, 2016
@serin-delaunay
Copy link
Author

serin-delaunay commented Nov 3, 2016

Spent a bit of time writing out in more detail what this project will require. The plan is to make a multi-agent system with discrete events, probably in continuous time with discrete locations. Agents should choose their actions by a shallow tree search using imperfect knowledge to model the actions of other agents (ignoring distant agents and ones that wouldn't be concerned by the action), evaluate predicted world state with personal heuristics, and use schemes like minmax or expected value to choose the best branch. Various forms of stress and forgetfulness should cause them to omit actions from consideration and misevaluate predicted world states.

The system would output a log of events and the narrator's ability to sense them, the narrator's knowledge and how it develops over time the narrator's personal simulations of the system, and the narrator's storytelling style and dialect. That would then be processed into human-readable text.

A few issues:

  • First, I need to read up on epistemic logic. https://www.youtube.com/watch?v=KVOpXJZWLC4 and http://personal.us.es/hvd/publications.html seem a good place to start. The talk on the same channel about deontic logic will probably also be helpful.
  • Ambiguities and misunderstandings are significant sources of friction in social situations, but the proposed system can't model them unless the text generator is also used in the simulation, and I can parse my generated text, subject to various conditions relating to character dialect, with decent accuracy. The alternative is to rely more strongly on differences of opinion, existing hostilities, and faux pas.
  • Many characters may have cause to lie. Randomly generating lies wouldn't be too difficult, but telling lies with any kind of objective (including mere plausibility, but especially with intent to provoke a specific reaction) may require much more advanced reasoning methods than simply simulating the system going forward.
  • Characters using their observations to update their own knowledge about other characters and the world could also require similar reasoning methods.
  • If any mysterious murders or other crimes occur during the meal, an attempt to solve it may again require reasoning more complex than just rewinding to a time before the murder and mentally simulating the evolution of the system.

I'll review some of Hans van Ditmarsch's work and see how helpful it is in developing a robust model of fallible multi-agent knowledge systems. There might even be some suitable Python/C++/Prolog libraries around.

@hugovk
Copy link
Member

hugovk commented Nov 3, 2016

You mentioned procedurally generated food; in case you want to just fetch something, or as inspiration, here's an API https://github.com/hugovk/whatsonthemenu (as used by https://github.com/hugovk/menubot).

@serin-delaunay
Copy link
Author

Awesome! Thanks :)

@serin-delaunay
Copy link
Author

serin-delaunay commented Nov 3, 2016

http://pdkb.haz.ca looks like a really good Python library for epistemic/doxastic logic programming. And has papers and slides documenting it.

@serin-delaunay serin-delaunay changed the title Entry: Meals and Mediation Entry: Journal of Applied Weirdness Nov 15, 2016
@serin-delaunay
Copy link
Author

serin-delaunay commented Nov 15, 2016

Change of plans! Fictional scientific papers!

Procjam took up basically half the month! Making a social simulation that translates events to text is feeling a lot less feasible in two weeks than four. So, new plan:
A collection of fictional scientific journal papers, like the output of snarxiv or scigen. Less emphasis on producing plausible-looking papers that reference real concepts, and more on producing amusing accounts of outlandish methods, phenomena, and results. Candidate fields of study:

  • Bizarre new species - environmental adaptations, behaviour, appearance, ...
  • Trying to explain vampires, werewolves, zombies, sasquatches, etc. (without using those words).
  • Weird physics - successful or semi-successful experiments with time travel, teleportation, parallel universes, faster than light travel, possible Lovecraftian horrors appearing as a result.
  • Ideological literary criticism - the author chooses an existing or fictional work of fiction, and argues either that its content advocates for their own ideology, or that it doesn't and is morally corrupt.
  • Chemistry (well, alchemy) - ridiculously convoluted processes used to produce slightly-to-unbelievably useful substances from various ingredients, and all the things that went wrong while developing the process.
  • Neuroscience (the easy sci-fi version) - mind-machine interfaces used to extract/implant/delete information/skills/habits/preferences, augment/inhibit/disinhibit various sorts of processing, facilitate communication, or produce ridiculously complex epistemic/doxastic situations.

I expect some of these fields will be easier than others to translate into an at-least-semi-coherent IMRAD format. So the next task will be to identify what sort of details need to be made up in each case, what kinds of logic they will need to conform to to make sense, and what kind of translation work will be required.

@serin-delaunay
Copy link
Author

Had a closer look at the snarXiv for inspiration regarding how to procedurally generate studies about physicsy things like time travel/teleportation/FTL, and the conclusion was "nope". Going to try to generate neuropunk studies in the style of Dollhouse and Stitchers. But with less plot and more white coats. Probably with an expert system to plan focussed experiments where everything satisfies relevance constraints.

@serin-delaunay
Copy link
Author

Threw together a simple CFG generator to assist with translating information into text. Still needs options to process capitalisation, plurals, etc. Sample output:
'the cat complains with Aerith. a terrible postbox licks Aerith near the terrible doorbell. the wonderful cat licks the doorbell. a postbox sleeps on the doorbell. Macavity trusts Klaatu. the brand new cat dies near Bob. Klaatu convinces Aerith near a brand new glistening terrible harpy. Boo sleeps near a brand new brand new second-hand wonderful brand new harpy. Windle Poons dies. Aerith convinces Macavity. Klaatu trusts Boo with a barnacle-infested wonderful schooner. Macavity pontificates on Klaatu. Aerith convinces a pokemon with Macavity. Bob trusts Klaatu. Macavity flollops near Macavity. a barnacle-infested postbox flollops. the barnacle-infested harpy flollops on a postbox. a wonderful schooner calls Aerith. the wonderful wonderful postbox pontificates with a glistening brand new museum. the wonderful bee licks Aerith with a wonderful pokemon. Aerith licks the postbox. a second-hand museum trusts the glistening second-hand glistening postbox with Klaatu. the bee sleeps. Klaatu complains with a postbox. Bob dies'

@serin-delaunay
Copy link
Author

The repository for my entry is now online. I'm using PyDDL (forked to add Python 3 compatability, and with a few wrapper classes) to solve surgery planning tasks as STRIPS problems. So far just a basic example operation, but it's working:
brain surgery plan

@serin-delaunay
Copy link
Author

I think there's a bit too much work to do on this project before December, and I'm happy with how #125 turned out so I'll finish this some other time. Maybe for NaNoGenMo 2017, or after my PROCJAM project is done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants