Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Simulationist Fantasy Novel #40
I'm going to try to generate a fantasy novel with the general structure of Lord of The Rings. A group of adventurers are going somewhere to do something. I'm going to take an approach of high level to low level via an outline, like chapter 1:
This will probably be pretty tedious. I'm going to capture a sense of history by storing what has previously happened to characters in the past and try to generate some sentences and paragraphs based on that to give a sense of continuity. Also doing some sort of simulations for characters trying to resolve conflicts.
This includes an offline version of ConceptNet that I made, some vocab lists, and some general linguistic tools I've been working on.
All of my code will probably be in Python.
Day 1 Update
Check out my day one sample, The False Story of Glory.
Today I added the baseline for my novel generator. I had a skeleton of a setting describer in place so now I'm generating some characters and moving them from setting to setting. Each setting is described using data from ConceptNet and some added props. I also added a markdown and html formatter so I can actually get something published. I found pypandoc was great for my purposes.
The main accomplishment today was setting up the infrastructure to carry the state of the story so I can continue filling in the details as I go. Up front I'm generating a state which consists of a series of settings and the primary characters. As the novel progresses the characters are moved from setting from setting. Each setting has a chapter generated about it. The chapter generates its paragraphs (just one for now about the setting).
What could help me the most:
This is my favorite:
I had hoped to make use of ConceptNet last year for things, but got so bogged down in all of the boring templating and proppian-plotting that I never got back to it. I've been thinking about using it for a problem this year. I love where you're going.
Maybe "different" instead of "new" -- meaning they could travel to a previously-visited setting, and thus encounter it differently. Reflect upon what they thought/did before, etc. This would require geographic building/tracking. Even just a grid.
Thanks! I really like ConceptNet and think I could do some great things with it. It obviously has some shortcomings, both specific to world-building non-modern non-Earth worlds, and general data sanitization problems, but I think it's fun. I'm willing to take the hit on having some anachronisms and weirdness in exchange for the humor and unexpectedness.
Definitely like the idea of the party returning to previously visited settings. Also I've been thinking of having forks in the road with the characters weighing the options between different paths.
Day 8 Update
Sample: The Implicit Story of Ages
Another update. It was a crazy week so way less progress than I hoped for.
Still I got a bunch of new features done, so I'm happy.
I'm happy with the hunting, fishing, and gathering paragraphs I'm generating, but I realize the templates for them really show. I'm not going to pursue another text generation strategy for this year's nanogenmo at this point, but maybe next year I'll have something that allows for some more variety.
One thing I just ran out of time on today was generating camping paragraphs. I want to deliver the sense that the night is dangerous and a time of strangeness so you'll get weird dreams and sounds in the darkness. That should be easy to do and coming up soon.
Here's my favorite sample chapter from today's output.
I like how this is coming along.
I also have some sympathy for the characters in that they seldom seem to find food. No doubt because they search specifically for avocados, caribous, and the like - totally overlooking the smaller wild game and grains that surround them.
Staring at your "reduced ConceptNet" implementation....
I adapted your reduced-concept-net code to NodeJs - https://github.com/MichaelPaulukonis/NaNoGenMo2015/blob/master/conceptnet/cnSearch.js
I haven't figured out how I'm going to be using it in my project, but it's a great resource....
It translates the relations into json, so we get back something that looks like this:
Since we're almost at the end of the month and I'm almost out of time, I'm going to call this complete. I generated 77 simulationist fantasy novels overnight. You can access a random one at this link.
I'll do a bigger writeup soon. I missed some of my bigger goals, but at least it's spitting out really tedious novels :)