Updated Concept

Game Reputations Through Social-Networking

How to realistically win friends and influence people when they are NPC’s

Geoffrey Elder, Lead Developer

Falcorian Sabbat, Dialogue Development

University of Advancing Technology

March 2012 – July 2014

Abstract

In order to develop a more realistic approach to reputation building in massively multiplayer online games (MMOs), a new system needs to be developed that relies on social interactions of affected non-player characters (NPCs).  To this end, this project has the goal of utilizing a method of passing information between NPCs within the game environment to facilitate social networking in the form of “gossip.”

An algorithm is to be developed that will simulate a real person with motivational priorities that will convey information based on these priorities to other simulated persons who will interpret the information based on their own motivational priorities in a network of communication.

Provide answers to the following questions in the Abstract (250 words or less):

 

Keywords

non-player characters, reputation, massive multiplayer online games, npc, mmo, roleplaying, immersion, simulation, artificial intelligence, ai

Background Information and Prior Art

In several role-playing games, interacting with non-player characters of one faction are generally identical. In some cases, an interaction with one individual of a faction is merely a continued conversation held with another member of the same faction. However, the real world has nuances between diplomats as well as soldiers in how a faction interacts with another based on the job, personality and priorities of the individual in question.

To better simulate personal agendas of characters in a video game, certain motivations have to be attributed to the characters. Sometimes, these motivations are at odds with groups and affiliations of the character. Within the motivations of a character, the motivations of the group with which the character is associated are prioritized within the character’s personal motivations and can also alter the prioritization of the values associated with the group. In some characters, the motivations are the same and share the same priority, in others the motivations are different or have different priorities.

The characters also must be programmed to respond to different stimuli based upon these priorities. Interactions with the player and simulated considerations based on the character’s motivations will change the situational setting of the game. Different responses by the player should bring different responses from the character based on the character’s motivations so that no two members of a faction will have exactly the same reaction to something the player does. The words and tone of the player’s communication with the non-player characters will be used in the program and interpreted by the character’s priorities and a response formulated based on these variables with a slightly random factor.

Project Description and Innovation Claim

Developing scope-specific personalities that would provide a realistic game play of a political setting with changes made to the political structure of the setting based on the interactions of the player with personalities within the game. How was the master motivation list selected? How were the motivations determined by race and faction? How were the priorities set for the motivations? What methods were used for assessing reputations? What was the methodology of determining the interactions of the player’s reputation with one faction with the player’s reputation with another faction? How do the reputations affection an individual non-player character’s reactions to the player?

Usage Scenario

Many games which involve a socio-political element have a set script for the factions. Meeting one member of the faction is the same as meeting any other member of the same faction. This is particularly true of games such as Star Control 2, or various games like World of Warcraft or DC Universe Online in which talking to someone from one faction or with a particular task within the game is the same as talking to anyone else of the faction or in game task. For greater believability as well as player immersion, a method to develop personal goals and internal personalities for the computer controlled characters should be developed.

Many games use what are basically pre-scripted personas. No matter who you are, where and when you meet, the persona of the non-player character will always be the same. There might be some change based on the player’s reputation with the faction. The character of ZEX in the game Star Control 2: The Ur-Quan Masters does the same thing no matter when he is met, how he is met or under what circumstances he is met. First encounter sends the player on a quest after much discussion. Each subsequent encounter is the same until the player completes the quest. Tanaka, within the same game, continues to try and destroy the player until the player has insulted Tanaka three times. At which point, Tanaka remains vigilant in the system he is encountered. Of course, the quest upon which ZEX sends the player is doomed to failure which will allow the player to repopulate Tanaka’s race.

Massive multi-player online games also use pre-scripted personas. Meeting such characters as city guards always follow the same script, regardless of which guard is met. Quest givers follow the same script each and every time the quest is given, and if the player returns without completing the quest, the quest giver responds the same way without variation. Obviously, this is not a realistic approach to quest giving. Each subsequent return without completing the quest could involve frustration on the part of the quest giver. This is the standard model by which the vast majority of persona’s in games are made. It is easy to script and follows simple if statements.

Random quest generation, though nothing new, is simple to implement. The system simply takes the player’s level and formulates a challenge by randomly selecting a mob of an appropriate level to be killed, or an item that is dropped by a mob of the appropriate level to be acquired. Usually, a certain number of kills or acquisitions must be accomplished before the quest is completed. Usually, no personas are involved. These quests are usually acquired through a kiosk or a message board found within game. These are also known as dailies in some games where the quests can only be performed once per day.

Player generated quests can be the most interactive due to the negotiation of the reward for performing the quest. However, most games utilize an auction house or a bounty system for this. Almost every massive multi-player online game has an auction house where players can sell the more rare items for in game money. In a sense, the player acquires an item and turns it in to the auction house with a minimum price (reward). This is similar to acquisition quests, but there is no experience point gained for turning in the item. If there is a high demand for an item, the money is the incentive to go on the “quest.” The alternative is the bounty. Bounties are player generated quests by offering in game money or rewards for another player to fight yet a third player within the game. When the server registers a kill of the third player by the second, the bounty is considered complete and the reward paid.

To provide the characters with personalities, the programmer must define what constitutes a personality within the scope of the game. Motivations used to determine what is more important to the individual. The level and intensity of that motivation places certain actions of an individual as more likely than others. A list of pre-scripted responses does not necessarily mean that there is no alteration between encounters, but that the program has a wider range of options within the script based on motivations. A non-player character with aggression as a high level and high intensity motivation is more likely to start combat with the player, but might not necessarily do so.

Reputation is used in several games to denote favor or disfavor of a faction based on previous encounters and successful quests. A similar method can be used as a means of individual memory as well as faction reputation. A list of reputations, such as those found in the Star Trek Role-playing Games published by Last Unicorn Games, is recommended. A list of reputations is preferred because each faction would have what it considers more important reputation aspects.

With an understanding of the quest generation and individual motivation methodology, a means can be developed to combine the two into a single framework of realistic requests and favors of non-player characters which will change based on the actions of the player and those actions moving through the game environment.

Evaluation Criteria

First, can the system accommodate a variety of game genres spanning a variety of cultures?  Yes.  The reputations are based on priorities which can be defined by the developer of the game using a multitude of motivations.  Conversations utilize developer written dialogue trees and developer written contexts of those dialogue trees.

Will the system allow for a varying and unique NPC’s?  Each NPC can either be hand-written, developed specifically for the developer’s content or randomly generated, depending on the developer’s needs, simply adding the NPC to the list of NPC instances.

Are the factions customized for the developer?  Factions exist and are defined by the developer by adjusting the motivations of the faction and their priorities simply by changing the values within the system.

Project Logic Model

Goal – To create a system by which NPCs in an MMO interact with each other to spread the reputation of a player character

 

  • Objective 1:  Research social-networking and social interactions.
    • Activity A: Determine means by which people prioritize communication.
    • Activity B: Determine means by which people determine positive or negative views of individuals.
    • Activity C: Evaluate methods for comparing contradictions of the previous two factors.
  • Objective 2:  Determine how group identity is determined.
    • Activity A: Identify how group priorities and individual priorities interact.
    • Activity B: Evaluate how group priorities and individual priorities modify each other.
    • Activity C: Develop method for mathematically comparing the competing priorities.
  • Objective 3: Compile model of communication.
    • Activity A: Build model of one entity communicating with another.
    • Activity B: Build model of multiple entities communicating with each other with competing motivations.
    • Activity C: Build model treating group as an entity with multiple constant communication lines.
  • Objective 4: Test system with player inputs
    • Activity A: Run system with color codes for all entities and factions for constant feedback on state of reputation with different factions and entities.
    • Activity B: Run with different variables, multiple times.
    • Activity C: Repeat Objective 3 until successful.

 

Prototype Implementation

Developed using the Unity3d engine for the sake of convenience and the simplicity of the development of the environment, the project is the focus of the code.  The code consists of a player class which contains the controls of the player; an NPC class which contains all collision as well as reputation information that each individual NPC holds for the player, a faction class which assesses the value of the reputation from the NPC’s and correlates them to the overall reputation; a dialogue class which holds all the possible dialogues as well as the reputation values of each statement; and finally a menu class which draws on the dialogue class and is accessed when the player collides with an NPC.  Currently, all variables are stored within the runtime of the code itself.  However, a database can be utilized to call upon the variables as needed, thus saving resources for other game functions.

For developers, the dialogue class will be the most important for it determines which states are said as well as the values of the reputation changes.  This is followed by the NPC class and the Faction class which must be altered to fit the developers storyline.  Adding faction, the priorities of motivation, setting their values of their priorities are done in the NPC class for npc’s and the faction class for factions.

For players, the prototype is a simple AWSD for ship controls with mouse serving as a direction facing similar to various first person shooters.  Once the player collides with an NPC, the player is greeted and given three options to respond.  In the prototype, the top option is positive for the npc, the middle is neutral and the bottom is negative.  In an actual game, these will be randomly placed.

Once selected, the program takes the value of the statement and compares it with the priorities of the NPC.  These will alter the value of the statement based on the NPC’s views of the statement and then change how the NPC perceives the player as either a good, indifferent or bad person according to an algorithm that modifies communication based on perceived importance as seen in Appendix B.  Due to time constraints in operating the prototype, this change will have an immediate effect on the reputation the faction has for the player.

After several such talks with NPC’s, the NPC’s will reach a point where their communications with each other will affect the player’s reputation.  Some of the NPC objects will have their color changed based on their new perceptions of the player based on “talking” to other NPC’s.  The npc collisions transfer the last known communication.  If NPC A and NPC B collide with each other, NPC B gets a change based on NPC A’s last communication of reputation and vice versa.  This will happen even if the last communication was only with an NPC and not the player.  Within the NPC class is a variable for each motivation that stores this communication for each NPC object.  They are swapped out and the reputation calculation is completed using the same algorithm used to calculate the player’s actions.

Evaluation

First, can the system accommodate a variety of game genres spanning a variety of cultures?  Yes.  The Dialogue class is completely customizable.  A game developer simply needs to replace the current dialogue with their story-based dialogue and the reputation values as well as any changes to priorities (additions or deletions) the developer sees fit.

Will the system allow for a varying and unique NPC’s?  In the current prototype, the NPC’s are randomly generated using float values for each of four (4) different priorities.  The current prototype is limited in dialogue options, but additional dialogues can be written and added to the prototype to accommodate a much wider selection of NPC’s as well as each NPC having its own dialogue written specifically for it.  The prototype focuses on communicating the reputation between NPC’s based on how they perceive the player to share their priorities in life.

Are the factions customized for the developer?  Any number of factions can be added by the developer as well as how their priorities are arranged.  Simply adding the priorities and the value the faction holds for the priorities is all it takes to create a new faction.

Project Completion Assessment

I am so pleased that I was able to complete this work.  Having looked for such a system in the past in various games, and being told by a handful of fellow students who are also gamers, as well as at least one faculty member that such a thing was impossible, I am proud of developing the prototype.

The transfer of a value from one object to another within a gaming environment should have been simplicity itself.  After all, it is merely changing a handful of variables of an object’s instance and then having that instance share that value whenever it comes in contact with another instance, either of the same object or even a different object.  The trouble came from assigning values to the means by which people in real life make these choices as to what is important to spread and what is not.  A recent course in sociology allowed me to find a means by which groups communicate internally and externally and how they share information.  Earlier classes had shown similar procedures, but on a much more individualized level.  Seeing the common means by which a person assigns his or her own values to a situation, and that groups are merely “individuals” themselves made up of competing priorities, it was a simple matter to view faction reputation as a function of individual reputation.  In a way, making each NPC a subfaction within a faction.  However, for the sake of ease of reading, each NPC is added to a list that makes up the faction.  The Faction class merely calculates all the NPC’s reputation values.

At first, playing through it, I was uncertain I had finished.  However, when I saw that first collision between two NPC’s and one of them changed color, I knew I had done it.  I had made a program that passed on a reputation marker from one NPC to another.  When I saw it, I knew I had to confirm it.  Confirm that it had passed along what I had done and not some random bit of data I had not accounted for.  So, I went into debug mode, I watched as each collision was tested against.  No data transferred.   Then I started interacting with the NPC’s to get that critical value to ensure a passage of data.  I used the same values each time to make sure it was that value that was transferred.  Then, just as I was about to reset and force the NPC’s to collide, a collision happened between one I had contacted and one I had not.  The data switched.  It wasn’t the full value, which is good because that would have meant more debugging.  It was a .14 value transferred to the family value which had transferred (all values are 1.0, 0.75, 0.5 or 0.25 for the dialogues which are modified by the NPC’s priorities).  The value of 0.14 was transferred as 0.0168 due to the receiving NPC’s family value of  0.12.

Currently, I foresee a few issues.  To improve resource efficiency and make modification easier for developers, use a database to store the NPC’s values as well as the factions.  To further make the system easier on developers, some of the variables should be placed within the appropriate classes and make NPC a subclass of faction.  Then, each faction can be enumerated in a list that corresponds to a value in the database mentioned above.  Dialogue options can be done through a database as well, making a database for each priority.  Without these changes, developers would find it time consuming to add the additional factions and dialogues to the system.  The system itself should merely be the way the algorithms handle responses by the player and how those responses are communicated to other NPC’s.

Appendices

 

A

Blizzard Entertainment (2004). World of Warcraft [Software]. Available from http://us.battle.net/wow. Though the quests and interactions all follow a definite script, they are broader in that many of the quests and personalities do rely on previous encounters with other members of the same faction.

 

Beijing Perfect World (2005). Perfect World [Software]. Available from http://pwi.perfectworld.com. Useful for further information on pre-scripted personalities. It is similar to World of Warcraft, often being compared as the Chinese World of Warcraft.

 

CCP Games (2003). Eve Online [Software]. Available from http://www.eve-online.com. Carrying an excellent bounty system, I recommend it for the reputation as well. Though there are few other role-playing opportunities in Eve, the bounty and reputation systems developed by CCP games do make for non-linear semi-scripted quests and player-developed bounties.

 

Funcom (2001). Anarchy Online [Software]. Available from http://www.anarchy-online.com. Helpful for this topic due to the random quest generation. Examples of kiosks are in major player congregations in the game.

 

Toys For Bob (1992). Star Control 2: The Ur-Quan Masters [Software]. Available from http://sc2.sourceforge.net. Useful in showing the method of pre-scripted personalities. Every encounter of a race is identical as any other with the same race. However, continuing plot elements are progress in a linear manner, regardless of interactions throughout the game.

B

To begin with, the project must first have a list of motivations for the individual. Keeping in mind the purpose of this project is to be able to have multiple personas run from one machine and coupled with a group, a set of motivations for a group and a set of motivations for the individual will have to be listed. A simple list of group motivations can be listed as follows:

Motivation Value
Family 50
War -25
Science 25
Money 25

The value is a percentile of how motivated the group is towards the particular motivation as a whole. As can be seen, the total value of all the motivations do not exceed 100.  This is because there is no way a person can have more priority than 100% of his or her activities.This value is a modification of the value expressed by the individuals of the faction which may be different from those of the faction itself.  In the example, the value for War is a negative value representing a particularly strong avoidance of war for the faction’s motivation.

An individual might have other motivation values different from the group to which they belong. In the following example of an individual, the motivations have different values.  These will affect how the individual passes along the information.  Specifically, the more important a topic is, the more likely that topic will be passed on to other individuals.  Of course, the value will be modified by the individual based on importance, even if discussed.

Motivation Value
Family 10
War 60
Science 15
Money 15

 

As can be seen, the faction’s motivation for family is 50 and the individual is a 10.  These values work in tandem to generate a reputation value that is used to build the overall reputation of the player within the faction.  The values are transferred based upon the responses of the player.  If a response is valued at a full 1 for Family, then the value the example individual will take from it is (1 (for the response) x .10 (for the individual’s view of that priority), for a reputation bonus of .10).  This is the bonus to the current reputation value the individual has for the player.  If the individual had a value of 50%, or neutral, then the value would increase by .50 (the current reputation) x 0.10 (the .10 coming from the interpreted response of the player), for a total of  0.5 for a grand total of 50.5%

A simple random number generator can be used to generate values for the individuals.  Using a float system to represent the percentage chance of a motivation will remove the steps necessary to convert to percentages.  For every value, simply generate a value from -1.000 to 1.000.  When all the priorities have been assigned values, add them together and then divide the sum by each priority’s value:

Randomly Generated Values

Family:        .765

War:        .356

Science:     .981

Money:        .773

Total:        2.875

Converted Values

Family:        .266

War:        .124

Science:    .341

Money:        .269

Total:        1.000

This method ensures that the total of all priorities, regardless of game use, will total more than 1.000 which is the value of 100% commitment to a priority.

Conversations will be based on the idea of Greetings, Game-Specific Topics, and Closings. The principles for each of these subjects are the same, so covering only the Greetings will be done at this time. A cloud of responses and greetings will exist as a database based on every increasing and decreasing values of the various topics along the axes within the cloud. For this particular example, three motivations will be used as a means of expressing the cloud.

The greetings will be based on the priorities.  With each priority having a representative range, a value is generated, once again by generating a float value.  The value is then compared to the priority range.  For example, the example individual’s Family range would be from .000 – .100 and the War range would be .101 – .600, etc.  Once the range had been recognized, a selection of the conversation would be pulled from a list of pregenerated greetings, which could be nuanced by the player’s reputation, whether it is favorable, neutral or unfavorable.  A random list of responses, or expected responses could be scripted in depending on game requirements.  For this test, the responses will be randomly generated with at least one being from the individual’s favored priority.  The parting comment from the individual, not the player, will be indicative if the individual’s interpretation of the response, as well as a color change representing the individual’s overall assessment of the individual.