Author Topic: GH2: Character Development Matrix for the Core Story Enemy  (Read 1091 times)

Offline Joseph Hewitt

  • Administrator
  • Hero Member
  • *****
  • Posts: 2521
    • View Profile
    • http://www.gearheadrpg.com
GH2: Character Development Matrix for the Core Story Enemy
« on: March 18, 2010, 08:21:30 PM »
I've put together what I think is a pretty good model for randomly generated character development. In addition to their personality traits and relationship type, NPCs also have a motivation and an attitude towards the PC. These two attributes can be advanced through a series of values.

Today I put together a simple program to examine the core story components and tell me how many components there are for each possible state of the enemy NPC. Here's the chart it produced:

Code: [Select]
Core Story Enemy Chardev
      --- mer pro com ggd see rev cha nih
---   003  -  001  -   -   -  001  -   -
nme   002 002 002 002 002 002 002 002 002
jr_   004 001 002 001 001 001 002 001 001
sr_   002 001  -   -   -   -  001  -   -
ant    -   -   -   -   -   -   -   -   -
tha    -   -   -   -   -   -   -   -   -
sec    -   -   -   -   -   -   -   -   -
equ   002  -  001 001 001  -   -   -   -
env   003 001  -  001  -   -  001  -   -
dis    -   -   -   -   -   -   -   -   -
adm   001  -   -   -   -   -   -   -   -
pch    -   -   -   -   -   -   -   -   -
hat   002  -   -  001  -  001 001  -   -
mut   001  -   -   -   -   -  001  -   -
obs   001  -   -   -   -   -  001  -  001

The motivations are listed along the top, the attitudes down the side. The number indicates how many plots are available for a core story enemy with this attitude/motivation combo. There are more attitudes than motivations because that aspect of character development is meant to be more flexible. Here's the key for the different values:

Motivation
   ---   Unknown quantity
   mer   Mercenary. NPC is in it for the money.
   pro   Professional. NPC seeks his personal best.
   com   Competitor. NPC seeks to be better than others.
   ggd   Greater Good. NPC believers self to be working for greater good.
   see   Seeker. The NPC still hasn't found what they're looking for.
   rev   Revenge.
   cha   Change. The NPC decided to change their current situation.
   nih   Nihilism. The NPC seeks destruction.

Attitude
   ---   Unknown quantity
   nme   NPC hasn't met the PC yet
   jr_   NPC is PC's junior/subordinate/student
   sr_   NPC is PC's senior/superior/mentor
   ant   NPC feels antagonistic towards the PC
   tha   NPC feels thankful to the PC
   sec   NPC is keeping a secret from the PC
   equ   NPC respects the PC as an equal
   dis   NPC has lost respect for the PC
   env   NPC envies the PC
   adm   NPC admires the PC
   pch   PC has a reason to hate the NPC
   hat   NPC has a reason to hate the PC
   mut   The PC and NPC have reasons to hate one another mutually
   obs   NPC obsessed with the PC

Note that attitude and motivation can only be changed to a value lower down on the list. In general only one of either motivation or attitude will be changed at once. Also note that the current list was created mainly to deal with the core story enemy- more attitudes and motivations will probably get added as lancemate character development gets fleshed out.

Ideally, all combos should have at least one associated plot since an empty cel is a deadend waiting to happen. Even though some combinations are impossible to generate (AFAIK, there is no way possible to get a Thankful Nihilist), the complexity of the story generator means that I don't have an easy way of telling which ones are definitely impossible. For the time being I'll just patch the deadends as they occur, trying to shepherd stray antagonists back to one of the rich patches on the chart.

One of the good things about this graph is that I can use it as a guide for creating new content. When adding a new plot, I can check to make sure that the changes it make won't deadend the story. I can also look for bare patches and add more content there, which should help different enemies to seem like different characters (at the moment, every core story enemy develops about the same way). It won't be necessary to create individual plots for each combo since there's often overlap (for instance, a plot might require that your enemy's motivation is Mercenary, but the attitude can be one of a wide range).

Something this chart doesn't tell me is where the enemy NPC is likely to end up- certain combos are probably more common than others, and those spots should get more content than the combos which show up only occasionally.

Offline JohnnyDmonic

  • Hero Member
  • *****
  • Posts: 627
    • View Profile
Re: GH2: Character Development Matrix for the Core Story Enemy
« Reply #1 on: March 18, 2010, 08:37:57 PM »
If you have online storage space available, and I'm just brainstorming here, maybe set it up so on victory it gives the player the option 'Upload victory file: Yes/no?'  I'd say a seperate little app to do it, which could be as simple as a pearl script then that connects to a website, cuts and pastes then all they have to do is click submit, but honestly us players are a lazy lot, and unless it asks us right then and there I dunno if we'd get around to it.  But I was thinking access to bulk amounts of victory files could be culled down to figure out things like most common enemy state.

Offline Joseph Hewitt

  • Administrator
  • Hero Member
  • *****
  • Posts: 2521
    • View Profile
    • http://www.gearheadrpg.com
Re: GH2: Character Development Matrix for the Core Story Enemy
« Reply #2 on: March 18, 2010, 09:38:37 PM »
The exact state of the NPC isn't necessarily indicated in the history file, though commonly recurring episodes would be and that might make a good proxy.

Offline JohnnyDmonic

  • Hero Member
  • *****
  • Posts: 627
    • View Profile
Re: GH2: Character Development Matrix for the Core Story Enemy
« Reply #3 on: March 18, 2010, 10:16:46 PM »
The exact state of the NPC isn't necessarily indicated in the history file, though commonly recurring episodes would be and that might make a good proxy.


Ah, but the beauty of it is, it could be, or at least so I'd imagine.  Information that you'd be most interested in knowing could be added to the victory file, in addition to the stuff it has now a lot of which is more interesting to the player.  Player may be more interested in number of people killed in the adventure, where as you as programmer might like a running tally of # of missions of X type people typically do, or whatever.  The trick would be in figuring out ahead of time the sorts of information it would be useful to know and setting it up to capture those as things go along.  For instance, Enemy state, there's only...9 and 14 possible states, at the end of each episode it could record that as just #/#  ie: 5/14  and likewise for various other things that might be useful to be able to collate.  Then it's just one line of random numbers at the end of each episode section that the player doesn't necessarily need to know what is.  I suppose it would mean adding an 'invisible' history section to the save game file to keep track of such information not of use to the player.  Dunno, just a few thoughts.  Basically I see two ways of getting statistical information like that, either a) collate information from multiple game plays or
B) set up a simulator that runs a pachinko style version of the game, basically it loads a core plot/side plots, assumes the player takes x percentage of available side plots, wins x percentage of all plots, then 'plays' by just running the percentages checking the win results or loss results as appropriate then moving forward.  I'm not describing that very well, but I've dealt with a few simulators for (as an example) damage per second models for World of Warcraft, and those go over every step of the combat model and run simulated attacks literally tens of thousands of times to come up with average results.  Suffice to say it sounds really complicated even in my head, which is probably why I look more for brute force options like just collecting and collating data. heh.

Offline Joseph Hewitt

  • Administrator
  • Hero Member
  • *****
  • Posts: 2521
    • View Profile
    • http://www.gearheadrpg.com
Re: GH2: Character Development Matrix for the Core Story Enemy
« Reply #4 on: March 18, 2010, 10:25:38 PM »
Alternate idea: Use the debug file to hold this info. I was planning to change the deadend report so that it would dump a file instead of requiring the player to manually type out the context. I could have the game record some statistics about the game world and have this information included as well. One big advantage: it could collect info from all campaigns, not just those which reach the victory state.

Edit- I tried adjusting the program to give me the low-down on lancemate character development, but that's a much more tricky thing to sort out from the background noise. A core story MAIN subplot must change the context of the story, so if it's keyed to the enemy's motivation/attitude you know it's going to be character development. Lancemates, on the other hand, get involved in all kinds of subplot types and there's no easy way to tell the character development subplots from the LM missions and assorted other things. I'll have to think about this for a bit.
« Last Edit: March 18, 2010, 11:22:26 PM by Joseph Hewitt »

Offline EuchreJack

  • Jr. Member
  • **
  • Posts: 91
    • View Profile
Re: GH2: Character Development Matrix for the Core Story Enemy
« Reply #5 on: March 25, 2010, 07:34:17 PM »
Would there be a way for players to contribute information when they do not deadend, just to be helpful?  Such as after permanent death (if permanent death is still on), when a player decides they need to put the game aside for awhile, or is just curious/helpful/fidgetty?

Offline Forethought

  • Newbie
  • *
  • Posts: 14
    • View Profile
Re: GH2: Character Development Matrix for the Core Story Enemy
« Reply #6 on: April 05, 2010, 10:29:19 PM »
Something this chart doesn't tell me is where the enemy NPC is likely to end up- certain combos are probably more common than others, and those spots should get more content than the combos which show up only occasionally.


In general, character development under this model will not be Markovian, since the actions which cause character development are most likely a function of the active plot and player actions, both of which are modified by the game history. However, a Markovian assumption (possibly helped along by an assumption of removed game state requirements for all plots and independent, uniformly distributed player actions) would allow for a quick and dirty estimate of likelihood of character combos, through analysis of the resulting transition matrix.

Offline Joseph Hewitt

  • Administrator
  • Hero Member
  • *****
  • Posts: 2521
    • View Profile
    • http://www.gearheadrpg.com
Re: GH2: Character Development Matrix for the Core Story Enemy
« Reply #7 on: April 08, 2010, 02:01:15 AM »
Good point. I think the easiest thing to do would be to assume that all outcomes are equally likely. Creating a test harness for this would still be a pain in the arse, but doable.

I've started playing around with something which should make filling out the matrix much easier: mix-n-match conversations + battles. This isn't really a new feature, just taking the plot components and slicing them thinner than before. There are two new component types: Mix Encounters and Mix Confrontations. The Mix Encounter is a battle with the core story enemy; its type can be decided based on the propp state and the nature of the enemy faction. The Mix Confrontation is a layer on top of this which controls the enemy NPC. Mostly, it just contains the persona and a few triggers. Adding new Confrontations is much quicker than adding old-style subplots, and having a limited number of Encounters should allow for less duplication of nearly-identical scripts + more elaborate combat scenarios. Of course, this system can't do everything- integrated encounter/interaction components can still be used for complicated situations which don't easily resolve to a conversation and a fight scene.

Offline Joseph Hewitt

  • Administrator
  • Hero Member
  • *****
  • Posts: 2521
    • View Profile
    • http://www.gearheadrpg.com
Re: GH2: Character Development Matrix for the Core Story Enemy
« Reply #8 on: April 11, 2010, 05:48:56 AM »
Just a quick update on the whole Confrontation/Encounter deal. Here's the current state of the matrix:

Code: [Select]
Core Story Enemy Chardev
      --- mer pro com ggd see rev cha nih
---   003  -  002  -   -  001 001  -   -
nme   002 002 002 002 002 002 002 002 002
jr_   004 001 002 001 001 001 002 001 001
sr_   002 001 001  -   -  001 001  -   -
ant    -   -   -   -   -   -   -   -   -
tha    -   -   -   -   -   -   -   -   -
sec    -   -   -   -   -   -   -   -   -
equ   002  -  001 001 001  -   -   -   -
env   003 001  -  001  -   -  001  -   -
dis    -   -   -   -   -   -   -   -   -
adm   001  -   -   -   -   -   -   -   -
pch    -   -   -   -   -   -   -   -   -
hat   003  -   -  001  -  001 002  -  001
mut   002  -   -   -   -   -  002  -  001
obs   001  -   -   -   -   -  001  -   -
 
Core Story Confrontation Chardev
      --- mer pro com ggd see rev cha nih
---   003 003 001 001 001 001 001 001 001
nme   002 002 002 002 001 001 001 001 002
jr_   002 001  -  001  -   -   -   -   -
sr_   002 001 001 002  -   -   -   -   -
ant   001 002 001 001  -   -   -   -   -
tha   001 001 001 001 001 001 001 001 001
sec    -   -   -   -   -   -   -   -   -
equ   001  -   -  001  -   -   -   -   -
env    -   -   -  001  -   -   -   -   -
dis    -   -   -   -   -   -   -   -   -
adm    -   -   -   -   -   -   -   -   -
pch   001  -   -   -   -   -   -   -   -
hat    -   -   -  001  -   -   -   -   -
mut    -   -   -   -   -   -   -   -   -
obs    -   -   -  001  -   -   -   -   -

The top graph shows the standard components (which I've been working on for about a year), the bottom graph shows the new mixed components (which I've been working on since Thursday). At this rate a completely filled graph is looking like a real possibility. I thought splitting the conversation from the encounter would save a little bit of time- most "new" components are just copy/paste/edits of older components. Instead, it's saved a whole metric bleepload of time. By splitting the duties it's also made scripting easier. I can add and test a new Confrontation subplot in about a half hour. Old style standard encounters can take upwards of two or three hours.

There's only one Encounter yet, though- a standard meks-vs-meks fight. I'll post some of my ideas for what's going to happen with them later.