dariusk / NaNoGenMo

National Novel Generation Month. Because.
184 stars 16 forks source link

"The Swallows of Summer" by Cat's Eye Technologies #39

Open catseye opened 10 years ago

catseye commented 10 years ago

Fifty thousand words, huh? I do fear that the plot will begin to suffer partway through no matter how cleverly I code, but I'll give it a whirl.

catseye commented 10 years ago

Well, the important thing is to get something out, right? So here is the first chapter of my first novel meta-written for NaNoGenMo, The Swallows: https://gist.github.com/catseye/7289762

As I feared, the plot does begin to suffer partway through (like, partway through = in the second paragraph.)

I feel the characters are somewhat underdeveloped, as well. Perhaps I'll write a sequel where they talk to each other.

dariusk commented 10 years ago

I mean it's not the worst story I've read.

erkyrath commented 10 years ago

Maybe add a little bit of not-very-smart logic for substituting "he" and "she" for names, most of the time? (Ensuring the explicit names appear first, and not-too-widely spaced thereafter.)

(Hope such suggestions are okay.)

catseye commented 10 years ago

@dariusk Thank you for saying so. I am myself simply pleased that the word "story" can be applied, however loosely, to refer to the output of this program.

I know I have a sequel in me! It's three years later, and Alice and Bob now live in a much bigger house, and... well, I'll post a chapter shortly, maybe even the code if I clean it up a bit.

Since other NaNoGenMo participants have talked about their methods and in case it's not obvious: it's a text adventure game, without a player, but with two NPC's. They occasionally have very short-term goals -- such as picking up treasure when they see it -- but they're mostly driven by Brownian motion.

@erkyrath Sure, that's a good suggestion. But the whole "narrator talks like some kind of robot barbarian while the main characters sure do seem to have short memories" feel this has, it's kind of charming, you know? But yes, I should probably try to improve on the diction in one of the sequels.

catseye commented 10 years ago

Alright, the first four chapters of the sequel, The Swallows of Summer, are here: https://gist.github.com/catseye/7293648

To convince yourself that the plot does indeed develop (after a fashion) over the course of the story, it may be easier if you search the page for the word "shoot" instead of trying to actually read through it.

btw @dariusk Thank you for both having this NaNoGenMo idea and actually doing it. I find this very entertaining.

dariusk commented 10 years ago

My entire M.O. is: get a silly idea and then follow through with it. Glad you're enjoying it.

dariusk commented 10 years ago

Also, I'm dying with laughter here, what a great set of chapters

catseye commented 10 years ago

Oh, so I'm not the only one for whom this is really quite entertaining? That's very reassuring.

Unfortunately most of my visions for a further sequel (working title: Swallows and Sorrows) are perhaps a bit too grand to get to soon. I feel very strongly that the police ought to be involved in this story at some point. Or at least, they should do something about the dead body in the bathroom. But November's still young, right? As my "official" submission so far, here are all 15 chapters of The Swallows of Summer, and the code:

https://github.com/catseye/The-Swallows/

dariusk commented 10 years ago

My favorite passage:

Alice went to the bathroom. Alice shouted at the sight of the dead body! Alice went to the upstairs hall. Bob examined the mailbox carefully. Bob went to the garage. Alice went to the bathroom. It was so nice being in the bathroom again! Alice shouted at the sight of the dead body!

catseye commented 10 years ago

Hmm, yes, yes. I do suppose the first step in doing something about a dead body in your bathroom is remembering that you saw it. A sound observation!

catseye commented 10 years ago

I see that a number of people have reacted positively to the The Swallows of Summer. I don't know what to say. I'm pleasantly surprised. I should re-state, I don't really have any idea what I'm doing -- the most important thing about NaNo*Mo is just to get something out, right?

Also, they say, if you want to start writing, you should write what you know. And what I know is: text adventure games and programming language implementation techniques. More to the point, I barely know anything about literature. (I'm going to have to go look up who Beckett is now.) And I don't think I could write a story, myself, to save my life. I do find the whole concept of "writing" to be fascinating, though.

(btw, I'm intentionally using the phrase "text adventure games" because I do think there is a relevant distinction between those, and works of "interactive fiction". IF has plots and characters, while text adventures have, uh, treasures and puzzles...)

I do like the idea that the plot should be emergent from the elements in the world, somehow. Then again, it doesn't have to have "a plot" per se, does it. Perhaps the particular combination of randomness and monotony in Alice and Bob's world turns out to be an excellent metaphor for contemporary (or dare I say post-contemporary) life, and that's why it resonates with some people? Who knows.

If there is a sequel, it will likely be a bit of a departure, in any case. At least in terms of narration style. For one thing, I took @erkyrath's suggestion and the script now knows how to use pronouns; also, each paragraph is written from the point of view of one of the characters. (Well, OK, maybe not "point of view" so much as "field of vision".) One interesting result of this is that plot developments can take place that are never described directly:

Alice was in the garage. Alice saw the stolen jewels. She picked up the stolen jewels. She went to the driveway. She yawned. She went to the garage. It was so nice being in the garage again! She went to the driveway. She hid the stolen jewels in the mailbox. She made her way to the dining room. She saw the golden falcon. She picked up the golden falcon. She gazed thoughtfully into the distance. She went to the kitchen. It was so nice being in the kitchen again! She scratched her head. She went to the front hall. She gazed thoughtfully into the distance. She went to the upstairs hall.

Bob was in Bob's bedroom. Bob saw Alice walk into the room. 'Hello, Bob,' said Alice. 'Hello, Alice,' replied Bob. 'Did you know there's a dead body in the bathroom?' asked Bob quickly. 'Perhaps, Bob,' replied Alice. 'Oh, I know, I know,' said Bob. He went to the upstairs hall. He saw Alice walk into the room. 'Hello, Bob,' said Alice. 'Hello, Alice,' replied Bob. 'Did you know there's a dead body in the bathroom?' asked Bob quickly. 'Perhaps, Bob,' replied Alice. 'I see, Alice, I see,' said Bob. 'I see, Bob, I see,' said Alice. Bob nodded. He saw Alice leave the room. He went to the bathroom. He felt a shudder of fear as he looked at the dead body. He went to the upstairs hall.

As you can imagine though, this can sometimes get somewhat confusing. Especially when, say, the sentence "He pointed the revolver at Alice" is the first occurrence of the word "revolver" in the story.

enkiv2 commented 10 years ago

Second person would be a trip for this kind of story (and in line with text adventure style as well).

You were in your bedroom. You saw Alice walk into the room. 'Hello, You,' said Alice. 'Hello, Alice,' replied you. 'Did you know there's a dead body in the bathroom?' asked you quickly. 'Perhaps, you,' replied Alice. 'Oh, I know, I know,' said you. You went into the upstairs hall. You saw Alice walk into the room. 'Hello, you,' said Alice. 'Hello, Alice,' replied you. 'Did you know there's a dead body in the bathroom?' asked you quickly. 'Perhaps, you,' replied Alice. 'I see, Alice, I see,' said you. 'I see, you, I see,' said Alice. You nodded. You saw alice leave the room. You went to the bathroom. You felt a shudder of fear as you looked at the dead body. You went into the upstairs hall.

On Tue, Nov 5, 2013 at 8:30 AM, catseye notifications@github.com wrote:

I see that a number of people have reacted positively to the The Swallows of Summer. I don't know what to say. I'm pleasantly surprised. I should re-state, I don't really have any idea what I'm doing -- the most important thing about NaNo*Mo is just to get something out, right?

Also, they say, if you want to start writing, you should write what you know. And what I know is: text adventure games and programming language implementation techniques. More to the point, I barely know anything about literature. (I'm going to have to go look up who Beckett is now.) And I don't think I could write a story, myself, to save my life. I do find the whole concept of "writing" to be fascinating, though.

(btw, I'm intentionally using the phrase "text adventure games" because I do think there is a relevant distinction between those, and works of "interactive fiction". IF has plots and characters, while text adventures have, uh, treasures and puzzles...)

I do like the idea that the plot should be emergent from the elements in the world, somehow. Then again, it doesn't have to have "a plot" per se, does it. Perhaps the particular combination of randomness and monotony in Alice and Bob's world turns out to be an excellent metaphor for contemporary (or dare I say post-contemporary) life, and that's why it resonates with some people? Who knows.

If there is a sequel, it will likely be a bit of a departure, in any case. At least in terms of narration style. For one thing, I took @erkyrathhttps://github.com/erkyrath's suggestion and the script now knows how to use pronouns; also, each paragraph is written from the point of view of one of the characters. (Well, OK, maybe not "point of view" so much as "field of vision".) One interesting result of this is that plot developments can take place that are never described directly:

Alice was in the garage. Alice saw the stolen jewels. She picked up the stolen jewels. She went to the driveway. She yawned. She went to the garage. It was so nice being in the garage again! She went to the driveway. She hid the stolen jewels in the mailbox. She made her way to the dining room. She saw the golden falcon. She picked up the golden falcon. She gazed thoughtfully into the distance. She went to the kitchen. It was so nice being in the kitchen again! She scratched her head. She went to the front hall. She gazed thoughtfully into the distance. She went to the upstairs hall.

Bob was in Bob's bedroom. Bob saw Alice walk into the room. 'Hello, Bob,' said Alice. 'Hello, Alice,' replied Bob. 'Did you know there's a dead body in the bathroom?' asked Bob quickly. 'Perhaps, Bob,' replied Alice. 'Oh, I know, I know,' said Bob. He went to the upstairs hall. He saw Alice walk into the room. 'Hello, Bob,' said Alice. 'Hello, Alice,' replied Bob. 'Did you know there's a dead body in the bathroom?' asked Bob quickly. 'Perhaps, Bob,' replied Alice. 'I see, Alice, I see,' said Bob. 'I see, Bob, I see,' said Alice. Bob nodded. He saw Alice leave the room. He went to the bathroom. He felt a shudder of fear as he looked at the dead body. He went to the upstairs hall.

As you can imagine though, this can sometimes get somewhat confusing. Especially when, say, the sentence "He pointed the revolver at Alice" is the first occurrence of the word "revolver" in the story.

— Reply to this email directly or view it on GitHubhttps://github.com/dariusk/NaNoGenMo/issues/39#issuecomment-27772149 .

wordsmythe commented 10 years ago

I might kick it into present tense for 2nd person.

On Tue, Nov 5, 2013 at 9:30 AM, John Ohno notifications@github.com wrote:

Second person would be a trip for this kind of story (and in line with text adventure style as well).

You were in your bedroom. You saw Alice walk into the room. 'Hello, You,' said Alice. 'Hello, Alice,' replied you. 'Did you know there's a dead body in the bathroom?' asked you quickly. 'Perhaps, you,' replied Alice. 'Oh, I know, I know,' said you. You went into the upstairs hall. You saw Alice walk into the room. 'Hello, you,' said Alice. 'Hello, Alice,' replied you. 'Did you know there's a dead body in the bathroom?' asked you quickly. 'Perhaps, you,' replied Alice. 'I see, Alice, I see,' said you. 'I see, you, I see,' said Alice. You nodded. You saw alice leave the room. You went to the bathroom. You felt a shudder of fear as you looked at the dead body. You went into the upstairs hall.

On Tue, Nov 5, 2013 at 8:30 AM, catseye notifications@github.com wrote:

I see that a number of people have reacted positively to the The Swallows of Summer. I don't know what to say. I'm pleasantly surprised. I should re-state, I don't really have any idea what I'm doing -- the most important thing about NaNo*Mo is just to get something out, right?

Also, they say, if you want to start writing, you should write what you know. And what I know is: text adventure games and programming language implementation techniques. More to the point, I barely know anything about literature. (I'm going to have to go look up who Beckett is now.) And I don't think I could write a story, myself, to save my life. I do find the whole concept of "writing" to be fascinating, though.

(btw, I'm intentionally using the phrase "text adventure games" because I do think there is a relevant distinction between those, and works of "interactive fiction". IF has plots and characters, while text adventures have, uh, treasures and puzzles...)

I do like the idea that the plot should be emergent from the elements in the world, somehow. Then again, it doesn't have to have "a plot" per se, does it. Perhaps the particular combination of randomness and monotony in Alice and Bob's world turns out to be an excellent metaphor for contemporary (or dare I say post-contemporary) life, and that's why it resonates with some people? Who knows.

If there is a sequel, it will likely be a bit of a departure, in any case. At least in terms of narration style. For one thing, I took @erkyrath< https://github.com/erkyrath>'s suggestion and the script now knows how to use pronouns; also, each paragraph is written from the point of view of one of the characters. (Well, OK, maybe not "point of view" so much as "field of vision".) One interesting result of this is that plot developments can take place that are never described directly:

Alice was in the garage. Alice saw the stolen jewels. She picked up the stolen jewels. She went to the driveway. She yawned. She went to the garage. It was so nice being in the garage again! She went to the driveway. She hid the stolen jewels in the mailbox. She made her way to the dining room. She saw the golden falcon. She picked up the golden falcon. She gazed thoughtfully into the distance. She went to the kitchen. It was so nice being in the kitchen again! She scratched her head. She went to the front hall. She gazed thoughtfully into the distance. She went to the upstairs hall.

Bob was in Bob's bedroom. Bob saw Alice walk into the room. 'Hello, Bob,' said Alice. 'Hello, Alice,' replied Bob. 'Did you know there's a dead body in the bathroom?' asked Bob quickly. 'Perhaps, Bob,' replied Alice. 'Oh, I know, I know,' said Bob. He went to the upstairs hall. He saw Alice walk into the room. 'Hello, Bob,' said Alice. 'Hello, Alice,' replied Bob. 'Did you know there's a dead body in the bathroom?' asked Bob quickly. 'Perhaps, Bob,' replied Alice. 'I see, Alice, I see,' said Bob. 'I see, Bob, I see,' said Alice. Bob nodded. He saw Alice leave the room. He went to the bathroom. He felt a shudder of fear as he looked at the dead body. He went to the upstairs hall.

As you can imagine though, this can sometimes get somewhat confusing. Especially when, say, the sentence "He pointed the revolver at Alice" is the first occurrence of the word "revolver" in the story.

— Reply to this email directly or view it on GitHub< https://github.com/dariusk/NaNoGenMo/issues/39#issuecomment-27772149> .

— Reply to this email directly or view it on GitHubhttps://github.com/dariusk/NaNoGenMo/issues/39#issuecomment-27781864 .

catseye commented 10 years ago

I remember reading a short story once (I think it was by Stephen King) where the hobby of one of the characters was writing short stories in second-person, future tense. I believe it was to establish that character's personality as kind of creepy.

You will be in your bedroom. You will see Alice walk into the room. "Hello, you," Alice will say. "Hello, Alice," you will reply. (etc.)

But I'm intentionally avoiding anything too "artsy". I have my sights set on, well, just a dime-store paperback, really, and anything more ambitious would probably be too distracting to me.

But there are a whole lot of possibilities. Maybe one of the middle chapters could be told from the point of view of the revolver...

MichaelPaulukonis commented 10 years ago

Fantastic!

jonbro commented 10 years ago

wow, I am cracking up here. I feel like the rooms could have more extensive descriptions, perhaps just filling them with red herring objects to add to the suspense.

MichaelPaulukonis commented 10 years ago

I would like to see it more modularized, so that more characters (Actors) could be introduced, or removed (say, 1 or 100 wandering about).

grouping/avoidance behavior would be interesting - desires to be with other people (in general) or avoid them. same too, for places. if there was a time element, extended to that.

then, you could have a character that wants to be outside, but avoids sunlight. game mechanics would have them go to interior rooms, basements, etc. but when night falls, go outside.

If desire was extended to object, characters would want some things, or not want somethings. Simple trading mechanics could lead to complex interactions. A character who places great desire on a ring would try to get it back, following a person who picks it up, pester them, over-ride other avoidance behaviors they have....

MichaelPaulukonis commented 10 years ago

It was fairly simple to add a third character, "Fred", to the mix. I don't speak python (I installed it just to run your apps), so how to abstract them is a bit beyond me at the moment...

I played with adding a room and some items, and it all worked well. Although it seems there's no way to mark an item as plural (say "buttons") or to place an item just in a location, only in a Container (Treasure, otoh, can be placed [only?] in a location).

diff of changes: https://github.com/MichaelPaulukonis/NaNoGenMo.yawp/commit/7bf252a809f7b89f3936c2193e60da5844f20d2c

catseye commented 10 years ago

It should be fairly modular at this point, in the sense that not too much of the code is hardwired to dead bodies and revolvers. Plurals can be be done with the PluralMixin, I think, but you do need to create a new subclass of Actor just for this; see the stolen jewels, they're plural.

I haven't tried it yet, but I think the main thing that won't work well when adding new characters is the narrative engine, i.e. switching to telling the story from Fred's point of view. I've been slowing trying to rewrite the event collector/Editor (when I haven't been distracted by palindromes) so that that's not as much of problem, but that still has a ways to go (I'd like the Editor to be able to notice significant actions that characters took when they weren't in the spotlight, and start the next paragraph where they are featured with, like, "Alice was in the kitchen. She had just found a revolver in Bob's bed.")

Of course, if the story is never told from the new character's pov, there's no problem there.

Shouldn't matter if items/treasure are initially placed in locations/containers/peoples' inventories -- should all be pretty much the same. I would've thought. But then, the script did kind of grow organically. btw, if you fork it, note that I might still make sweeping changes to it (in the name of Art, of course...) ... maybe I'll split it up, and apply, y'know, actual software engineering to it, so that the world and the engines are actually in, like, different files.

MichaelPaulukonis commented 10 years ago

I didn't note POV problems with Fred, but I'll look more closely.

I'm going on at length about this, because it has me excited [not obvious, right? 'cause I'm playing it cool*]. I know there has been a lot of work on Interactive Fiction as narrative, but I haven't seen anything where the "Interactive" part has been removed.

If you know of any prior work in this area, I'd be interested in seeing it.

What I like about this approach is that it parallels what I've heard of the writing process from some authors -- that the plot doesn't spring full-grown from their foreheads. Rather, characters (and/or a situation) come first, and the story comes from following the characters, and "seeing" what they do.

The "simplistic" output generated so far has great qualities, and further work might obscure it. That's not my intention.

But I am curious about how changing elements could change how a narrative develops: hundred of Items, hundreds of Actors, Actors that want to be alone, hundreds of Locations with only a few Actors that want to cluster together, but can't find one another, all according to game mechanics.

Simple rules, complex emergent behavior.


I'm also fascinated for another reason - way back in the antediluvian period (the mid-1980s) I wanted to write text-adventure parsers. But never got very far. Writing these games/stories with other engines never appealed to me, and I never played with that area again. Your approach has no parser, since there's no input. What is the background on the coding-concepts for building the world and dealing with the Actors and objects?

And, hopefully, interesting texts.

* OMG OMG OMG THIS IS SO COOL!

catseye commented 10 years ago

I figured you must've liked it a fair bit if you were motivated to hack around with it even though you don't know Python yet :) I'm glad you like it! I'll clean it up a bit soon, I promise.

I... am certain there must be prior work in this area, but I am not familiar with any of it. No, wait, that's not quite true:

In the antediluvian period which you mention, as games went, I mostly wrote text adventures, because Commodore 64 BASIC was too damn slow for video games, and everybody told me machine language was very difficult. I also had a book called "1001 Things To Do With Your {insert model of home computer here}". It was mostly ideas, occasionally with BASIC code. It described a story-telling system, probably done at MIT in the 60's or 70's, and probably with an exciting name like STORY or STORYTELLER (I don't recall exactly), which could produce simple Westerns. The way they described it, it was obvious that it was something like a text adventure or "blocks world"; the gunslinger couldn't shoot his gun if there were no bullets in it, or if it was still in his holster, and "knew" the actions to take (draw gun, load it) to meet the goal.

The coding concepts come mainly from text adventure games/IF and/or MUDs/MUSEs which themselves come largely from blocks worlds. Removing the parser doesn't change much, internally. Consider that in, say, Inform, the player's command is parsed into an action, and it is the action that is executed. If you just start with actions, you don't need a parser at all. In fact, this all might be much simpler if I just did it in Inform (surgically removing the parser) because all the plurals and whatever are already taken care of.

But on the other hand, there is that "producing a continuous narrative" thing that Inform isn't really built for (or wasn't, last I used it,) which in my approach I found to be remarkably similar to a peephole optimizer from compiler construction. Instead of replacing sequences of instructions with more efficient sequences of instruction, the "Editor" in the_swallows replaces sequences of events (sentences) with more readable events.

It kind of makes sense, when you think about it; most real published novels were written by a writer, and then gone over and altered by an editor...

wordsmythe commented 10 years ago

I share the feeling that there's prior work in removing the "interactive" from interactive (or "ergodic") narratives. I know I've toyed with mapping out IF games by having a bot check out all the possibilities. That's the sort of mental area I try to run around in, though. I'll let you know if I come across anything.

catseye commented 10 years ago

First things first, I've decided to "publish" Swallows and Sorrows, despite everything (including continuity bugs and verbatim repeated sentences) because the script is clearly at some kind of plateau. Further progress can only be made by first refactoring it with a large blunt instrument.

Of course, some critics will say Swallows and Sorrows lacks the innocence of The Swallows and the charming directionlessness of The Swallows of Summer; I won't blame them; but, y'know... artistic vision. Sometimes you have to follow where it goes, even if the result is not as spectacular as you hoped. Although, y'know, I still think it's pretty amusing.

Also I have no idea what this means w.r.t. the "completed" tag; I really don't want to open a new issue for each novel I produce from the evolving script... I guess whichever one garners the most critical acclaim is "the" novel, and the rest are... special bonus materials, kinda?

dariusk commented 10 years ago

The tag just means "look here for some version of a finished novel"

catseye commented 10 years ago

@dariusk Cool. btw, I found out who Beckett is, if it's Samuel Beckett. I haven't seen Waiting for Godot, although I did have an opportunity to, a month or two ago, but missed it. I have seen some Stoppard plays, though, and I get the impression they're sort of in the same ballpark (or maybe neighbouring ballparks?)

One thing I've learned during NaNoGenMo so far is: computers are very good at expressing certain kinds of futility. (Why? Why, why... why?)

@MichaelPaulukonis (and anyone else who's thinking of hacking on this), I've split up the source into a few different modules and put them into a Python package called swallows. This makes it so that you can use the engine without having to actually edit the code; you just write a script that imports these modules, then you use them. There are examples in the eg directory. You don't have to actually install the package or anything; the scripts will find the modules as long as they're in the src directory (and the src directory is in the same directory as the directory that holds the script, like script or eg.)

I don't know how much that actually helps, given that the interfaces for the modules are likely to keep changing (per my whim!) but maybe it's a step towards reusability. I'll keep trying to take some of the Swallows-specific stuff out of the general engine.

lilinx commented 10 years ago

this is cool and I also enjoyed reading all the above comments. I don't understand how Beckett just happened to be there in the conversation at some point but the way you said "I'm going to have to go look up who Beckett is now." right out of the blue is so Beckettian it's the funnier thing i've seen today. also the story of Alice and Bob is Beckettian everything is pretty much Beckettian around here and if I understand well it's not even on purpose haha unpurposeful Beckettian prose that's so Beckettian. also Alice and Bob totally freak me out I'm always feeling there is some kind of weird suspense and something awful is going to happen between them so i try to quickly look in the text for this expected awful event...the way I read this novel actually...it's ...human parsing?? totally freaks me out

catseye commented 10 years ago

@lilinx Oh no! I referred to an object that hadn't been introduced yet in this thread! I'm starting to write in the style of my own novel-generator! Oh gosh, forget the fourth wall; we're going to find the fifth and sixth walls and knock them down, too...

The boring explanation is this: dariusk called the story Beckettian (or something like that) in a different issue. I decided to reply here, since it's about this story, and since I know he's watching this issue.

As for Alice and Bob, if you're saying that this program has somehow managed to produce a story that sucks you in despite being almost unreadable, well, I consider that a big compliment. Thank you.

Another scary thought that occurred to me: for this sort of thing, bugs in the code can actually be desirable, if they make the novel more interesting.

dariusk commented 10 years ago

So I've been playing with your idea. I wrote my own code from scratch, and then added a bunch of templated language, plus my twitter-source conversation engine. Here's the latest result (just a sample, not a full novel):

https://gist.github.com/dariusk/c76c8f373ebcb6d6af8e

MichaelPaulukonis commented 10 years ago

I was going to say something about that amazing text, but will not, out of some primal respect for its otherness.

catseye commented 10 years ago

@dariusk I don't know what to say. I just hope my diaphragm doesn't decide to shut down in an act of self-preservation.

One image that always stuck with me from Orwell's 1984 is that Minitrue uses machines to produce pulp fiction for the proles -- machines with moving parts that are big enough to injure one of the main characters. I guess, these days, you could almost describe that as steampunk?

That image has occurred to me a couple of times in the past week, but I guess your latest sample made it just a little bit more vivid.

Unfortunately a single month's probably not enough time to construct a mechanical version of any of these generators, despite how fascinating such a machine might be to watch...

MichaelPaulukonis commented 10 years ago

@catseye when November is over, you might have some time to look at Monfort's Thesis Generating Narrative Variation in Interactive Fiction, available in PDF form from http://www.nickm.com/cis/

catseye commented 10 years ago

@MichaelPaulukonis Thanks. I've squirreled it away. Thanks also for unearthing the Eureka machine -- it was this thread where I mentioned physical machines -- now I'm wondering if Orwell knew about it, and if anyone was ever injured using it (it looks fairly well self-contained, so probably not.) Oh, and it would be fascinating to know what it sounds like when it's running, of course.

Anyway. I'm kind of burned out on The Swallows at the moment, and I don't know what the rest of the month has in store for me. There might be one more sequel, which would be mostly the same story though, just with better editing. But unlikely to be any more after that.

Fact is, the cross-pollination in NaNoGenMo has given me lots of ideas -- probably too many ideas. I don't really plan to take up novel-generation outside of the month of November, so, they'll probably wait until next year.

catseye commented 10 years ago

Reasons I kind of burned out on The Swallows:

That said,

catseye commented 10 years ago

https://github.com/catseye/The-Swallows/blob/master/doc/Dial_S_for_Swallows.markdown

MichaelPaulukonis commented 10 years ago

I understand the bit about testing. One of the things that this month has given me is a new respect for unit-tests. It might seem ridiculous, but has a great payoff. Particularly building tests prior to coding -- running the tests lets me know that a) nothing I previously built has broken and b) whether or not the new code works the way I expect. Without having to type run and parse the output manually.

Testing output with a random generator can be awful. Which led me to find libraries that allowed random-seeding!

I think this text generator is a great idea -- I can't find anything else out there like it. However, I don't think it's suited to a 50K-word novel. It needs an endgame -- a goal. If this were a "real" interactive fiction, there would be some sort of goal or puzzle to complete -- and then things would be complete. But that's lacking, here. If we instead think of the "open world" concept -- the world just isn't big enough for two autonomous characters to explore at length. Having 1) more characters 2) larger world [places/things/dialog] 3) end-condition would remove some of the monotony.

That being said, those three things remove some of the fascination of this engine's current output (which I've said before). That doesn't mean it shouldn't be done -- but it would be nice to be able to extend the engine in such a way that the current output could come from a valid configuration.

ikarth commented 10 years ago

However, I don't think it's suited to a 50K-word novel. It needs an endgame -- a goal. If this were a "real" interactive fiction, there would be some sort of goal or puzzle to complete -- and then things would be complete. But that's lacking, here.

Something that I've been working on, in other contexts, is the idea that some systems can have natural story arcs: Chess has an opening, a mid-game, and an endgame, for example. It has little to do with traditional narrative techniques, but it does give a sense of progression and closure to the thing. Catharsis by non-narrative or semi-narrative means.

Swallows, like some of the other generators from this month, is really good at doing fairly interesting chapter-length content, but gets monotonous over book-length without a book-length conceit. One way to address that is to have multiple generators or otherwise have a progression of situation over the length of the book. A meta-generator to tweak the settings per-chapter, maybe.

MichaelPaulukonis commented 10 years ago

large-scale framing devices. that's my problem, as well. I like markov semi-gibberish to a fault (it's the frisson between meaning and nonsense, the desire to ascribe meaning to the nonsense, the doubt as to what portions have meaning and what do not), but it doesn't scale.

That's why I eventually went with a small (noun replacement) of a pre-written novel -- the narrative-arc was pre-written.

Is that cheating? Or is that using some other sort of framing device?

slacy commented 10 years ago

This idea of using game theory to generate plot and story arcs is a really, really interesting one.

One could imagine finding a "just-right" game (maybe something akin to checkers) then assigning character names to all the pieces on the board, and possibly even physical locations to regions of the board, and verbs for actions. Then, generate a narrative structure from (likely intentionally flawed or biased logic/planning) automatic gameplay.

I can totally see generating something Hamlet-like from a system like this.

Steve

On Mon, Dec 2, 2013 at 6:35 AM, ikarth notifications@github.com wrote:

However, I don't think it's suited to a 50K-word novel. It needs an endgame -- a goal. If this were a "real" interactive fiction, there would be some sort of goal or puzzle to complete -- and then things would be complete. But that's lacking, here.

Something that I've been working on, in other contexts, is the idea that some systems can have natural story arcs: Chess has an opening, a mid-game, and an endgame, for example. It has little to do with traditional narrative techniques, but it does give a sense of progression and closure to the thing. Catharsis by non-narrative or semi-narrative means.

Swallows, like some of the other generators from this month, is really good at doing fairly interesting chapter-length content, but get monotonous over book-length without a book-length conceit. One way to address that is to have multiple generators or otherwise have a progression of situation over the length of the book. A meta-generator to tweak the settings per-chapter, maybe.

— Reply to this email directly or view it on GitHubhttps://github.com/dariusk/NaNoGenMo/issues/39#issuecomment-29621762 .

enkiv2 commented 10 years ago

Probably something more simple can be used as an indicator for story arc position. I suspect that there are sentence- and paragraph-length patterns or something similar (and that if you are generating sentences, you can generate a whole pool and remove those that don't correspond to the appropriate length as defined by some source document).

On Mon, Dec 2, 2013 at 1:21 PM, Steve Lacy notifications@github.com wrote:

This idea of using game theory to generate plot and story arcs is a really, really interesting one.

One could imagine finding a "just-right" game (maybe something akin to checkers) then assigning character names to all the pieces on the board, and possibly even physical locations to regions of the board, and verbs for actions. Then, generate a narrative structure from (likely intentionally flawed or biased logic/planning) automatic gameplay.

I can totally see generating something Hamlet-like from a system like this.

Steve

On Mon, Dec 2, 2013 at 6:35 AM, ikarth notifications@github.com wrote:

However, I don't think it's suited to a 50K-word novel. It needs an endgame -- a goal. If this were a "real" interactive fiction, there would be some sort of goal or puzzle to complete -- and then things would be complete. But that's lacking, here.

Something that I've been working on, in other contexts, is the idea that some systems can have natural story arcs: Chess has an opening, a mid-game, and an endgame, for example. It has little to do with traditional narrative techniques, but it does give a sense of progression and closure to the thing. Catharsis by non-narrative or semi-narrative means.

Swallows, like some of the other generators from this month, is really good at doing fairly interesting chapter-length content, but get monotonous over book-length without a book-length conceit. One way to address that is to have multiple generators or otherwise have a progression of situation over the length of the book. A meta-generator to tweak the settings per-chapter, maybe.

— Reply to this email directly or view it on GitHub< https://github.com/dariusk/NaNoGenMo/issues/39#issuecomment-29621762> .

— Reply to this email directly or view it on GitHubhttps://github.com/dariusk/NaNoGenMo/issues/39#issuecomment-29643197 .

catseye commented 10 years ago

I'll try to respond more comprehensively soon, but in response to @MichaelPaulukonis's comment

However, I don't think it's suited to a 50K-word novel.

...I totally agree, I just wanted to say that one of the things that attracted me to NaNoGenMo in the first place was the 50K word goal. IMHO it's positively quixotic to ask a computer to generate anything of that length that would actually be, like, readable in the conventional sense. Which is why I made the little joke at the beginning about the plot suffering partway through. And it's also why it was such great fun -- honestly, if the goal had been more realistic, like to produce a 10K word novella, I might have convinced myself I had better things to do, and missed out...

There's also the somewhat interesting disconnect in time estimation. For NaNoWriMo, you can kind-of-sort-of estimate how long it will take you to develop and write a novel, yourself, especially if you already have some ideas. But if you've ever been involved in any kind of "agile planning" you know it's a lot harder to estimate how long it will take you to write code to do something. (Granted, it's a bit easier when it's just you instead of a team where you can get blocked on other teams, but it's still more difficult -- more non-linear. So I wasn't entirely joking when I said that it's important to just get something out...)

robsimmons commented 9 years ago

So @chrisamaphone and I have created an extended fan fiction of The Swallows of Summer as one of our storyworlds for Procjam 2014: http://play.typesafety.net

The Swallows of Summer was a good initial target, and I think we captured it pretty well. Goals and memory as applied in Dial S for Swallows wouldn't be too difficult to capture with the generation framework we're using.

We'll probably create a NaNoGenMo 2014 entry as well - the longest twee output "script" that's been produced so far is upwards of 40 thousand words, so it's entirely possible we'll generate a novel before the month is out.

lilinx commented 9 years ago

well i think i have missed a whole lot of fascinating nanogenmoing here. i'm going to have to dive into nanogenmo2014 whenever i have time and your thing with typesafety and procedural twee script is so awesome i've been thinking about doing this for so long and never devoted the necessary time to it