As every Modernity-minded subject of the Clockwork Empire familiar with the new Sciences of Personality has learned, each person in Society possesses certain individual Inclinations and Traits which determine their actions in Daily Life. Indeed, the New Science of quantifying and measuring these Inclinations and Traits is certain to lead to great advances in the Art of Education and Employment of Shiftless Wastrels.
— Prof. Eustace Boretrain-Charnickels for the Royal Phrenological Society
To make a game about compelling characters, some degree of complexity in personality is required; you shouldn’t be able to know everything a character will ever make of themself at glance. At the same time, if every character is so complex as to be entirely unpredictable, the game won’t actually function as a game. Players will end up poking a weird ball of algorithms with a stick without the ability to ascertain any kind of cause and effect, so it might as well be completely random. Finding a good balance is a really, really hard problem that honestly can’t be solved without at least a little bit of luck, but we’re trying.
The system we’ve developed takes as a basis for personality a number of qualitative traits, such as
- Foolishly Brave
- Hat Enthusiast
- Bee Fancier
We’ve made a huge list of these traits internally, and are deconstructing them to determine how they will impact the decisions of a given character. Characters can have quirks that aren’t described by traits as well, but they won’t be quite as visible in the descriptions. (I also love this approach because it lets us do some fun writing while still having emergent characters.) For example, “Fishy Behavior” may be broken down as:
- Obsession with the water, the sea, things aquatic, fish.
- May occasionally take a long walk into the water, never to return.
Whereas “Romantic Inclination” could be:
- Higher inclination to make / break romantic relationships – “relationship” activities of all types (good and bad) are higher priority
- Higher proclivity to being an artist/poet
The specifics are handled as weights on numerical values for a vast array of behavioral traits for the character, which modify the likelihood that they will choose a given action. The process of the character actually performing the task is currently being moved from a data-driven process to a somewhat more script-based process; as we started adding to our behavior list we realized that we just couldn’t cram all of it into data. (As Mr. Whitman rightly pointed out, we ran into this issue with Dredmor: if you try to start making complex behaviors in data, you have to start supporting them with increasingly complex interpreting code, and you lose the benefits of the approach really, really fast.) The choosing of the task is still data-driven, but the finite state machines that are responsible for, say, implementing “eating” or “walking into the ocean” are now being coded in Lua. So far this has been successful.
Characters will have the ability to gain or lose traits due to traumatic/ecstatic/sublime experiences, and will also form strong attachments to things that have been important to them in their lives – other characters, other items, or other places. This is not good if the place is “the mysterious statue on the outside of the town”, or if the item is “the mysteriously glowing jar with a skull in it.” More on that later, I think.