Work on Part 6 is in progress. When it is published, this message will disappear and the button below will link to it.
Writing a Novel in NovelCrafter
Part 5: I Needed a Way to Define Factions for My Stories, So Here's What I Did
So far, I've planned how to define each element in my NovelCrafter worldbuilding so that the entries will be complete and consistent, and so they will work well with each other. I began with frameworks for the broader elements like locations, and then defined the important smaller elements, all the way down to creating frameworks for individual characters, but after reviewing the templates that represent those frameworks, I recognized one element I missed. It is an element that is important to many stories: factions.
Addressing this missing element requires designing a template and framework that can handle everything from complex political alliances of city-states all the way down to tiny groups like business partnerships. Unlike some of the other world elements I've looked at, a person or group of people can be associated simultaneously with more than one faction and those associations may vary in strength from story to story, chapter to chapter, and even from scene to scene.
What Do Factions Mean to a Story, and Why Are They Important?
From a story crafting perspective, factions offer plenty of opportunities for conflict, as characters have their loyalties for one faction challenged by the motivations of other factions. From the perspective of NovelCrafter and AI assistants in general, I needed a way to consistently define and describe those associations important to each character, as well as a way to give some kind of guidance to the AI about the relative strengths of the character's loyalty to each faction.
People seldom pause to think rationally about all of their own alliances at every scale, so neither should fictional characters, but the character description in the Codex needs some way to mention this and to keep track of it. Unlike some other character features, loyalties for factions can form or dissolve or fluctuate in an instant.
Special Schema for Factions
What I use presently to record faction association is different from what I started with.
I began by adding a note in the character Codex entry of any factions that a character associates with or belongs to, along with a number that represents the character's current strength of loyalty to that faction.
To use this structure, I had to include a new entry in the character frameworks, simply called Factions. The Factions entry was meant to contain the names of any relevant factions (ideally, one that exists as a Codex entry), followed by a number from -10 to 10. Part of this method meant explaining this system to the AI assistants via the NovelCrafter framework entries.
So the full setup included:
- A faction framework Codex entry that details how to generate and to record a faction in its own Codex entry,
- A series of Codex entries to record and track each faction,
- An entry in each character Codex entry (as well as in the Character framework Codex entries),
- A post-scene prompt to have an AI assistant recommend updates to all possible character Codex entries that may have changed due to the events of each completed scene.
An Issue and an Answer
One potential problem with this faction-tracking method was that the Codex began to resemble character tracking in a video game, or in a LitRPG genre story, but more importantly, the LLMs picked up on this as if it was intentional. Depending on the prompt and the situation and the particular LLM, it might interpret the faction association for a character and the faction strength number associated with it as a suggestion to directly tell the reader that, "Fred decided to go along with the change in plans because of his faction score of 7 with the alliance."
The solution for this, which we'll see in more detail later in conversations with the Developmental Editor AI, is to record the faction strength number for our own notes, but to hide that from the LLM used for plotting and prose generation. Instead, that number and the context of the story events for that character must include a narrative-style depiction of the character's association with any factions.
I'm taking care to generate the character Codex entry descriptions in a human-readable style, even if the AI assistant that helps generate and update such character descriptions is actually privy to the numbers. This tends to reduce that feeling of using a game stat-card.
Additionally, part of the task for the AI assistant, or for me, is not just to record the faction and number, but to describe creatively what that indicates. It does no good to just replace the same words or phrase for a faction of +2 every time.
Ultimately, factions may not play enough of a part in a given story to merit this level of attention, but I like to use factions as conflict-levers, so this should fit my style, but let me still communicate to the AI assistant.
Note: Before using the Faction upgrades like the framework and prompts to build factions you plan to tell stories about, it's a good idea to review the state of the Codex. The LLMs can just imagine factions into existence, whether you have built lots of worldbuilding information in the Codex, or not. These may be highly useful, but to me, creating factions makes the most sense after providing lots of context in the Codex. I made sure to flesh out the descriptions of the various fantasy races, lots of locations, the magic system and some other large-scale features in their own Codex entries before doing serious faction-building. Arguably, some character entries would be useful also, but I like the flow better of creating characters after some factions exist already. Also, it makes sense to take opportunities later on to create and add new factions during the character creation and plotting processes.
Let's Build!
The first thing I wanted to design was the faction framework, and what has worked for other frameworks is to ask an AI a few questions. Here's how I began a conversation with the Custom Genre Developmental Editor AI using GPT4o. This type of conversational method should work with less context in the prompt, but it's good to add whatever relevant context is available.
Note that this development of the faction framework and workflow with the AI shows the issue and solution I mentioned above. I think it's important to show how I arrived at the final setup.
Here's what I said to the Dev Editor AI, followed by the AI's response. To toggle the AI's response open or closed, just click the heading bar below.:
In the context of the stories I want to tell about people on and around The Island, what frameworks will be useful in helping Large Language Model worldbuilding assistants to create, describe, and understand various factions sufficiently to create a sense of verisimilitude in plotting and prose?
I want a workflow that makes it efficient to generate and then consistently describe any faction as small as a two-person partnership, or as large as a complex alliance of city-states, and anything in between.
I also need to be able to cite the faction descriptions generated according to the framework in my descriptions of characters in order to show what strength of relationship, or degree of loyalty (or hostility), a given character has at the moment for a given faction. My idea for this is to use a framework you help me develop to describe any faction and then to add an entry in every character description that mentions the name of any faction that character is associated with, accompanied by a number from -10 to 10 to show the strength of relationship with that faction, and whether it is a positive relationship (numbers from 1-10), a neutral relationship (0), or a negative relationship (-10--1).
What do you recommend?
This response from the AI highlights the potential problem of the framework and system provoking video game-like output from AI writing assistants. It is worth noting the otherwise high-quality logical solutions for faction generation and description, however.
I explained the issue to the AI and asked for a solution:
This sounds close to what I need, however, it is vital that the LLM not disclose any faction strength number or any other such information directly. Faction relationships are only an internal administrative tool to help understand and track these features. What changes can we make, or what can I do to improve the workflow so that the LLM never thinks it is permissible to overtly describe faction-relationships in these terms?
The Dev Editor grasped the problem and suggested a good solution, but without knowing about NovelCrafter or how it looks and works, the AI suggestions require some interpretation to implement.
There are many ways I can potentially record faction strength numbers, but the three most practical are:
- Record the faction strength value in the character Codex entry, but wrap it in warnings for the LLM to never directly quote it.
- Record the value in the Notes tab of the codex entry (I chose this option).
- Create yet another separate Codex entry for every character specifically to record faction strength numbers, but don't connect it to anything.
The development of the framework and the workflow went pretty smoothly, but before calling it a complete success, I spotted one possible improvement, so I engaged with the Dev Editor AI once more:
Great! It is also important that the main purpose of the faction framework and workflow remain central. That main purpose is to enrich the character-driven stories and create opportunities for conflict, tension, and resolution, when the story needs it.
Do you have any tips to help with this, in context of the updated framework and workflow?
My final workflow for this project for detailing factions goes like this:
- Define a faction entry in the Codex using the framework (shown below, after the basic prompt).
- For each character with a relevant relationship to the faction, add a note with the faction name and strength number that makes sense for the character; use the note tab to record the faction name and numeric component.
- In prose form enter the character's faction relationship in the main character description where the LLMs can see it. It's easy to get the Dev Editor AI to help with this.
- For any completed prose scene where a character or faction, or both change, consider whether the faction relationship for each such character would change, and how. Then make the relevant changes on the Codex entries for the character on both the main description and Notes tab.
Remember that each Codex entry has an Appearances tab, so to see which character Codex entries include mentions of a faction, check the Appearances tab of the Faction Codex entry.
Basic Prompt to Generate a Faction
Here is a basic prompt to use if you've been following along and want to generate factions of your own for your projects. Modify this to guide what specific type of faction you need and make sure to give the AI appropriate context from your Codex.
Note that this requires a codex entry called "Faction Framework" that contains the framework:
Generate a new faction based on the Faction Framework. Ensure the faction has a unique and cohesive identity, and that all areas of the framework are completed.
Faction Framework
Here is the faction framework I'm using now. I just placed it in a Codex entry since I'll refer to it often in prompts:
Prompt to Update a Character Codex Entry
I use this basic prompt to ask an LLM to update a character description so that the faction strength can be understood clearly, but without providing the "score" kept hidden from the LLM on the Notes tab.
For (Character Sheet) I enter the exact name of the Character's Codex entry for the LLM to review the current character description.
For {Faction Name} I enter the exact name of the Faction's Codex entry.
For {Faction Description} I just enter the Faction Codex entry's name again so the LLM knows to look there for the description.
For {Relationship Strength Value} I just enter the number stored on the character's Notes tab, or create a number to express the relative strength value, if this relationship is new.
The prompt will lead the LLM to output the entire new modified version of the character description, but I usually only need the factions section to copy over and make the update.
I like to use Claude Sonnet for this task since it handles expressing the relationship indicated by the numeric value pretty well, but most LLMs can handle this unless the faction entry or the character entry are very large.
Work on Part 6 is in progress. When it is published, this message will disappear and the button below will link to it.