This is a post about what I learned from Crowd of Three, and what I'm going to learn from my next game.
When creating a social intelligence, there are a lot of ways to go about it. There are, however, three core elements that always need to be included:
1) A reason to socially interact.
2) A result of socially interacting.
3) A visible social interaction.
The problem is that in almost any situation anyone can think of, the world needs to be pretty darn complex to provide a variety of reasons to socially interact. If you've just got two empty-headed people sitting around on a vast white golf ball, what are their interactions going to consist of? Not a whole lot!
So you add things that get the blood pumping. Danger. Love. Money. Lust. Histories, futures, presents. You give them a reason to react, then trigger the reaction.
A classic example: shoot a neutral person, they get pissed and try to kill you - or run away. What choice they makes depends on not only being triggered by you, but by the rest of the content. Comparative strength. Bloodthirstyness. Fear. Morality.
If the programmer is really good, this guy will tell his friends that you're a dick. And there's another cause, and another effect.
The second step is effect, of course. Someone who dislikes you has to have some noticeable effect, or you'll never even know. And the opposite is also true: people who like you need to do stuff to show you that.
In the above example, the shooting and running and spreading rumors are all perfectly valid results.
In Crowd of Three, the causes are (A) random vagueries and (B) trade. The random conversations that the people have at the beginning of the game allow them to build small preferences for and against other people. These preferences are weighted somewhat by the personalities of the characters, but are effectively random. This tiny difference determines who they are more likely to have more vagueries with and who they are more likely to trade with (for example, giving dice is an extremely common trade practice).
All this worked okay, but I overlooked many of the strongest causes and was limited from some of the results I would have liked. For example, I wanted the characters to be able to get into fights, or at least shouting contests, that had to be broken up by other players. But this was a sufficiently large task that I decided not to do it. Similarly, I wanted characters to be able to negotiate a game plan among their "team" - "help me win this next round by giving me your dice, and I'll give you two tokens..." But, again, that would have required a pretty sizeable chunk of code.
There were further refinements I could have made. For example, I could have made you dislike anyone who won tokens from you. But by then the other shortcomings had become evident enough to make it pointless.
The biggest shortcomings lay in step three: visible social interactions. With no ability to move and only the very roughest visual emotional displays, the interactions had to be wholly through the game and text. For reasons unknown to me, the author of this game was stupid enough to only make one game interaction, and it was not even visually displayed.
The end result of which is that showing the player what the social interactions were (and giving the characters character) lay wholly on the shoulders of simple text. Putting aside the fact that text is naturally less effective at this than virtually any other medium, each character needed to be able to talk about a wide variety of social interactions. In a voice which supports their characterization.
Too tall a freaking order. Text generation isn't nearly as hard as text parsing, but as you have seen if you've played Crowd of Three, it's not as easy as I might wish. Perhaps with a team of writers... but I don't have such a team. (Although, if I started over now, I would do better. I know more, now. Generating dialogue is a totally different order from the descriptive text I've generated in the past.)
There's other problems with step three (in this game and others). Showing the player a social interaction with crystal clarity allows him to see the seams in the simulation. This damages the empathy the player has built up. He thinks, "not a person..."
So, what's my next try?
Well, as I built Crowd of Three, I thought about other situations which had a high emotional breadth and depth, but were simple enough for a one-man team and a few weeks. I could come up with only one other option:
Dreams. Daydreams, to be precise.
Dreams are, in my opinion, a great idea. Dreams are fuzzy, not particularly logical. Seams can be hidden beneath the fact that it's a dream. Furthermore, I don't have to write a word of dialogue: it fits into the theme perfectly to allow people to talk in meaningless squiggles representing nothing more than an emotion.
Furthermore, dreams offer a wider variety of causes and effects without requiring me to build a whole world. You can't jump off the boat? Of course not. It's a dream. You can't fully control yourself? Of course not. It's a dream.
There's a lot of other issues, of course. Primary among these is:
How the hell do I make a game about a dream without requiring an absurd amount of art content? Remember, I have to clearly show the emotions and actions of the humans involved.
I could do just lineart. The coloring is really what takes me forever. And I think lineart might do well in a dream.
Anyhow, this is a bit of what I have learned, and what I plan to do next. Comments?