Monday, January 20, 2014

Basic Concepts - The Simulation Agent

Hello again everybody! So the past couple of days I've been drawing out my plans for this game. I've think I've got the whole game down to a general outline. Basically, before the game starts, the mansion in which the murder takes place will be seeded with simulation agents which interact with each other. One of these agents, which are similar to The Sims characters in their behavior, will finally murder the victim. Each actor has the following properties that will influence how they act in the simulation environment:

Personality
This is the fundamental aspect of the simulation agent. It defines who the agent is, and what it does. Its personality is based on the Big Five personality traits: Intellect, Conscientiousness, Extroversion, Agreeableness, and Stability. An example of how these traits affect an agent's behavior would be a highly intelligent agent framing another agent for murder, or a more extroverted agent interacting with other agents more so than an introverted agent. As you can see, six agents, each with their own unique personalities, could create a very interesting pool of suspects during game play.

Characteristics
The characteristics of an agent are not as important as the personality in the eye's of the simulation. Characteristics in this case include gender, hair color, whether they smoke or not, and attractiveness. This aspect of the agent is mostly for descriptive purposes, but I am toying with the idea that certain parts of the agent's characteristics will prove to serve as clues. For example, a blond hair and cigarette butt are found at the scene of the crime. The detective would deduce that the killer might have blond hair and/or smoke. He could use these characteristics to determine which agents are likely suspects.

Relationships
Relationships are the interactions between simulation agents. They are what determines whether one agent likes or dislikes another agent. Relationships also play a role in the simulation. For example, the brother of the killer agent is likely to lie for his brother, while another agent might blame an agent who he hates of murder. Relationship strength is based on the similarity of the two agents personalities. I believe by adding relationships to the simulation, I will create a more realistic murder case.
Motive
Every agent in the simulation will have a motive for murder. The actual motive itself(Money, Anger, Love) doesn't matter. What does matter is an attribute of the motive object: the motive strength. The motive strength value represents how much the agent wants to act upon that motive. So an agent with a higher motive strength will be more likely to kill the victim than an agent with a low motive strength.
Memories
This is the part of the agent I am the least sure about implementing. This is a particularly bad problem because I want the memories to be a vital aspect to uncovering the murderer. Memories will be made up of an action, the time that action took place, and an importance weight. Every time an agent does something, or sees another agent performing an action, the agent will store a memory of that action with the corresponding weight. Later, when interrogated by the player, the agent can remember vital details (such as another agent arguing with the victim shortly before he was murdered), that would help the player solve the mystery.

After working out the details on how the agents should work, I started scripting the agent classes. Below is a screenshot showing my work so far. I know it is very basic, nothing more than randomized values; but it is a start nonetheless. Tomorrow, I will work on the interactions between agents and maybe start coding a rudimentary memory system.
Here's an example of a particularly stupid suspect.

Until next time, thanks for reading! And as always, feel free to comment or email any questions you might have!

Friday, January 17, 2014

An Introduction

This is my first post on this blog. My goal for this blog is to keep it updated with the current development info on Super Sleuth (excuse the crappy name, its only temporary :)). Hopefully, this blog will get people interested into my game, and keep me motivated towards finishing the game. This blog will be my place to ramble on about development updates and about the problems that will most surely come up. Anyway, lets get down to the good stuff, eh?

The "Good" Stuff
I was playing the classic board game Clue one day, and I got very board (stupid pun, but its all I got) after playing for about ten minutes. Every game of Clue is pretty much the same. You go from room to room, accusing so-and-so of killing the victim with the *insert weapon here* in the *insert room here*. The game is extremely repetitive, and it lacks the answer to an essential question: Why did Mr. Plumb commit murder with the knife in the Kitchen?  It was this question that inspired me to create a new game, a better game, than Clue. I want to create a murder mystery game that has a answer to the above question.For example: Mr. Plumb killed so-and-so because so-and-so slept with his wife.
"Board" Game is right. Sorry again for the stupid pun.

In order to have a random murder case each play through, I am looking towards Procedural Generation. I came across a really great article that explains how this problem can be solved. I am going to write this game in Python using the libtcod library. The libtcod library is used mainly for rougelikes, but I am going to use it because I want to have a similar style to that of one of the games that inspired this project - Sleuth. You can play Sleuth here.

Anyway, that's all for today. Tomorrow I am going to start fleshing out designs on how I want the game to work, and I'll post them on this blog for anyone who is interested. Feel free to email or comment with any questions regarding the game... I'll try to answer them all :).