Friday, 26 October 2012

A Starry Night : Whodunit - Murder He Worte


PRESENTS


BASED ON THEMES DERIVED FROM



A STARRY NIGHT BY VINCENT VAN GOGH


So for our Second Prototype game we had a lot of fun developing it. We deiced to make our own Whodunit type game as a bases for telling a story. Essentially we have created a framework for players to play through a murder mystery in the town based in A Starry Night. We decided as a group the themes that best represented the painting are dark and depressing so we used that as a base for the Whodunit, by crafting characters and mechanics that will fill that role.

Concept:

We started out with the basic concept of a Whodunit murder mystery since that at its heart is a story driven book, we took this concept because it allowed us the amount of control we required to guide players through the game with our themes intact. We eventually released the control we had into one of the players who will play a "Van Gogh" which is essentially a Game Master. He leads the players through the game providing answers to there questions and providing them with clues, he controls the important facts about the game.

Rules:

  •             Players will decide on a player to be the 'Van Gogh'. The Van Gogh acts as a game master and narrator for the game. The VG will then choose one of the 11 characters to be a murderer and one to be a victim. They will then create a plot as simple or complicated as they want using the rest of the characters. Use sample plot as a template.

  •       Every player picks a character bio card (this is their character) and places their token in the town square.

  •       The objective of the game is for players to successfully discover which of the 11 characters is the murderer.

  •             The game will begin with the Van Gogh telling the players who the murder victim is and suspicious details about the townspeople that may or may not be relevant to the murder. The type and amount of information given is completely up to the Van Gogh.

  •       Players gather information about the murder in two ways: Talking to characters and investigating areas around the town. Only one of these actions may be done each turn.
    •      Players can talk to any of the 11 characters to gather information on the murder. This is done by asking the Van Gogh any question they want that they feel is relevant to the crime. All characters have things that anger them. Trying to determine motive is a good place to start.

    •       Players may also talk to other players, but there is no guarantee that other players will share information or even tell the truth.

    •       Players may also investigate any of the places in the town in an attempt to discover clues about the murder. The players must justify to the Van Gogh why they are investigating certain places. If the Van Gogh determines an investigation to be 'successful', a player is rewarded with a clue card, which has valuable information on the murder.
      • *It is important to note that this game is a very role-playing 'table talking game. The Van Gogh will always tell the truth, but may withhold certain information depending on how justified you are in asking what you are asking.
  •      After every player has had a turn, the game advances to the next night. Every three nights, the Van Gogh picks another character (not being played) to fall victim to their murderer.
  •     The game progresses until a player is confident that they know who the murderer is and what the murder weapon was. The player will make their accusation at the beginning of their turn. If they are correct, the game is over. If they are incorrect, they are out of the game.


The Van Gogh Role Tips:


This is intended as a reference guide for the Van Gogh of the story.  Remember, the Van Gogh is the most important player; they set up the game, and are usually the host of the party.  They are the god within the machine, all-knowing.   They need to be good at improvisation, because some story arcs will appear out of thin air!
  • To do beforehand:
    • Scene of Crime:  Specify the location of the murdered person.  It can be anywhere as long as it is not the town square.  As an example, use the graveyard.
    • Murderer:  Each player can hypothetically be a murderer.  Make sure you specify who the murderer is beforehand, so that you can’t accidentally change it halfway through.  Also give the player a reason to murder.  Don’t have the priest randomly kill the widow without explaining why he might do that.  Some player relations are listed on the Bio sheets.  For advanced players, you can make a murderer as well as an accomplice.  To start, it is recommended to use the Baker on his own as the murderer.
    • Back story:  Create some back story for the NPCs that you’ll be controlling.  This back story is basically just what the character was doing night of the murder, so possible alibis.  These change from game to game.  We recommend having something like the priest saw the town drunk get outrageously drunk the night of the murder and pass out in the park.  Also, have something like the baker’s assistant was out of town that night on a delivery.  Use your imagination, you tell the story!
    • Clues in the area:  Make sure you think about some clues and where they are going to be found in the game map.  For instance, if the dead body was found to be poisoned, and the baker happens to have an empty bottle of poison in his garbage, it looks extremely suspicious.  Similarly, if there are only male footprints at the scene of the crime, it is unlikely that the murderer was a female.  If the clues provided aren't good enough, take one of the blank ones and write something down!
  • To do during:
    • Make sure people tell good stories.  If someone says “I search the area for clues” give them a poor clue at best.  But, if they say something like “I meticulously search the main path to the cemetery, looking for footprints”, award that player with exactly what he was looking for.  Remember, this game is just as much about storytelling as it is murder mystery and role playing.
    • Just because someone asks a question, doesn't mean you need to answer it.  If a player challenges an NPC saying unimaginative like, “Did you murder him?”, feel free to create a story workaround so that you don’t have to answer it, such as: “I get so offended at you slandering my good name that I punch you in the face and knock you out”.  This is to discourage people asking easy questions.  However, should you choose to actually give an answer, it MUST BE TRUE.
    • Someone looks for a clue that you don’t have?  Let’s say a player looks around in a bush to find poison berries, which could be a murder weapon.  You could tell the player he finds nothing, or for advanced players, feed him a false clue by taking a second write down the poison berries on one of the blank clue cards provided!   Be careful of this though, you need to keep track of the clues players find, and how they relate to the game. 
    • Slow game?  Kill a character!   If you find that the game is slowing down and the players aren't making much progress, you have the option to kill off an NPC every 3 turns.  This helps the player by adding a new murder scene where you can plant new clues.  Also, it decreases the amount of possible suspects, helping out the players.



Character Bios:

Name:
Basile Chaput
Gender:
Male
Occupation
Butcher
Age:
32
Height:
5 foot 4
Important Relations:
Has a secret crush on the candlestick maker
Facts:
Likes to walk alone at night
No one knows where he gets his meat
Is a vegetarian


Name:
Léo Gosselin
Gender:
Male
Occupation
Town Drunk
Age:
40
Height:
6 Feet
Important Relations:
Brother of the widow
On good terms with constable
Facts:
Occasionally passes out in the graveyard or park
Sometimes gets arrested for public indecency, drunkenness, etc. 
Used to be a soldier

Name:
Guy Tailler
Gender:
Male
Occupation
Baker
Age:
28
Height:
4 foot  11
Important Relations:
Is crushed on by the candlestick maker
Frequently employs the services of the courtesan
Facts:
Severe Napoleon complex
Binge eats his own pastries
Used to make cakes for royalty, quit because he was ridiculed for his height

Name:
Jérémie Archambault
Gender:
Male
Occupation
Gravedigger
Age:
22
Height:
6 foot 2
Important Relations:
Married to the Baker’s Assistant
Doesn't get along well with the Priest
Facts:
Extremely emotional
Works at nighttime as a gravedigger
Often falls asleep on the job, making Father Benoit dislike him somewhat
Falls asleep in the graves he digs. 
Can talk his way out of any situation, smooth talker

Name:
Léandre Gagnier
Gender:
Male
Occupation
Constable
Age:
35
Height:
5 foot 8
Important Relations:
Mutual respect with town drunk
Doesn't trust the gravedigger
Facts:
Bad judge of character
Nighttime vigilante
Can’t talk to women
Name:
Marion Archambault
Gender:
Female
Occupation
Baker’s assistant
Age:
20
Height:
5 foot 6
Important Relations:
Good friends with candlestick maker
Married to the gravedigger
Facts:
Gossips often with the candlestick maker
Unintentionally flirty
Does deliveries for the baker.

Name:
Suzanne Lapointe
Gender:
Female
Occupation
Courtesan
Age:
26
Height:
5 foot 4
Important Relations:
Has a crush on the gravedigger
Is frequently employed by the baker
Facts:
Extremely insightful
Knows everyone’s secrets
Is very good at keeping them

Name:
Geneveve Janvier
Gender:
Female
Occupation
Candlestick maker
Age:
21
Height:
5 foot 7
Important Relations:
Has a crush on the baker
Is good friends with the baker’s assistant
Facts:
Has recently put on weight and is insecure about it
Short temper
Very affectionate about her cats

Name:
Pétronille Chastain
Gender:
Female
Occupation
Widow
Age:
45
Height:
5 foot 2
Important Relations:
Sister of the town drunk
Good friends with Father Benoit
Facts:
Religious
Has a loyal dog
Indifferent
Is a polite old lady

Name:
Father Francois Benoit
Gender:
Male
Occupation
Priest
Age:
50
Height:
5 foot 10
Important Relations:
Dislikes the gravedigger
Good friends with the widow
Thinks the courtesan will spend eternity in hell
Facts:
Has as wooden leg
Angry when people miss church
Carries holy water with him at all times.


Clues:

These are the predefined clues we provide to the "Van Gogh", he can also create his own clues on the blank cards we provide.



Wednesday, 17 October 2012

Flocking Algorithms

Flocking


A Flocking Behavior is a simple set of rules that can emerge into a set complex global behaviors. There are many uses in game and simulator development for flocking. Whether you want you units to move around the map or you want to simulate a flock of seagulls or fish you can even emulate crowds, flocking provides a base for you to work of off.

There are three basic rules to flocking, separation, cohesion and alignment. I have represented these rules below in the image.



Lets talk about how you can actually implement a basic flocking behavior.

Separation:

The function code below is how you calculate the separation vector for each boid.  This code loops through every boid and checks if the position between the object being updated and the object that the loop is processing is within the minimum allowed distance by your code.

In my implementation, not shown in the code below, I actually only pass each boid the boids that are close to  it already.

Pseudo code:


FUNCTION separate(boid bj)       
         Vector c = 0;  
         FOR EACH BOID b  
             IF b != bj THEN  
                 IF |b.position - bj.position| < 100 THEN  
                     c = c - (b.position - bj.position)  
                 END IF  
             END IF  
         END  
         RETURN c  
 END FUNCTION 


Cohesion:

Cohesion is what makes the boids stick together in the local groups. Without it flocking really cannot exist. It works by calculating the center of the mass of the local flock (average position).

In my implementation, not shown in the code below, I actually only pass each boid the boids that are close to  it already.

Pseudo code:



 FUNCTION cohere(boid bj)  
  Vector pcj  
  FOR EACH BOID b  
   IF b != bj THEN  
    pcj = pcj + b.position  
   END IF  
  END  
  pcj = pcj / N-1  
  RETURN (pcj - bj.position) / 100  
 END FUNCTION  




Alignment:

Alignment works by averaging the velocities of all the boids in the local area to get the boids moving in the same general direction.

In my implementation, not shown in the code below, I actually only pass each boid the boids that are close to  it already.

Pseudo code:



 FUNCTION align(boid bj)  
  Vector pvj  
  FOR EACH BOID b  
   IF b != bj THEN  
    pvj = pvj + b.velocity  
   END IF  
  END  
  pvj = pvj / N-1  
  RETURN (pvj - bj.velocity) / 8  
 END FUNCTION  




Moving the Boids:

This is the function that gives your there acceleration and velocity then adjusts there position. It simply calls the above functions and then sums their result.

In my implementation I do more processing on the vectors values, I normalize each vector and then multiply by a weight factor that I can tweak for each vector. After this I also normalize the end result to get a smoother motion.

Pseudo code:



 FUNCTION flock()  
  Vector separateVector, cohereVector, alignVector  
  Boid b  
  FOR EACH BOID b  
   separateVector = separate(b)  
   cohereVector = cohere(b)  
   alignVector = align(b)  
   b.velocity = b.velocity + separateVector + cohereVector + alignVector  
   b.position = b.position + b.velocity  
  END  
 END FUNCTION  



Conclusion:

In the above code and descriptions I have outlined the basic structure that I have used to create a simple flocking behavior, this code is just as valid whether you are dealing with a 2D or 3D space. There are improvement to the code, some of which I have added and others which I have not.

You can rotate the object so it is always facing the direction it is traveling in. You can also add rules that handle collision with other objects, and steering behaviors to create an even smoother appearance to the object moving.


Liars Dice Modification

This week we where tasked with removing the Positive Feedback loop in a popular version of the game of Liar's Dice. Each of my team members had to come up with 1 changed, added or removed rule.

Pity mod:
If a player has only one die left, they can go down or up on their call, rather than just up. The exception being that if there are two players left this rule no longer takes effect. 

Examples: A player calls 4 sixes, the player with 1 die left can in addition to the normal rules can say 3 sixes or 4 fives.

Result:
  • This allowed weaker players to stay in the game longer.
  • This somewhat reduces positive feedback loop.



Holdem mod:
All lost dice get placed in the center of the table and are rolled.  These dice count towards the global total of dice.

Result:
  • It turns out doesn't affect game play that much.
  • The players who are better at counting dice do better.
  • This actually reinforces positive feedback loop, rather than negating it.



Loser wins mod:
  • Winner is person who first loses all their dice.
  • Calling a bluff correctly loses you a die.
  • Calling a bluff incorrectly makes the person the bluff was called on loses a die.
  • Calling a spot on correctly makes you lose a die.
  • Calling a spot on incorrectly makes you gain a die.
Result:
  • This rule makes it get considerably harder as you lose dice.
  • The positive feedback loop replaced with a negative feedback loop.



Handicap mod
Everyone who didn't lose a dice each round has to reveal one of their dice in the next round
unless you have 1 die left.

Result:
  • The more you win the more other players know about your hand.
  • This hinders the positive feedback loop but does not remove it completely.


Lucky guesser mod:
If you call a spot on, you reacquire one lost die, but you can still only have as many as you started with

Result:
  • This rule actually enforces positive feedback loop.


Blind mod:
Every player gets to see everyone's dices but their own.

Result:
  • The less dice you have the harder it is for everyone to play.
  • This reverses positive feedback loop.




A couple of pictures taking during the play testing yesterday.

Always good to have a person play who is not in your group, Thanks Justin.


"Required" dice rolling picture.

Sunday, 14 October 2012

Battleship: Revision

Yesterday our in class we were tasked with modifying the classic game Battleship. For me this was a great experience because Battleship was one of my favorite games growing up, and I had lots of ideas back then on how to modify it, it was nice to get a chance to do that. Of course having only 20 minutes meant that my group had to move non-stop to finish the concept. Thankfully, we finished with only seconds to spare.

Lets talk about the rule modifications we made, we added 5 addition rules.


Storms- A storm is very dangerous. A storm occupies a single tile and damages that part of the ship during the turn. A storm is moved every full round (after all players have went). To determine where it went, players roll 2 D10’s and whatever the result is, the storm goes to that tile on both sides.

Cruise Missile- Every player gets three cruise missiles and can use them during the start of their turn instead of a regular attack. When using a cruise missile, a player announces a ship they wish to attack; they do not need to have previously hit the ship. A player rolls a D10 and if the result is 6 or greater, they successfully hit an undamaged part of that ship. If it is 5 or lower, they miss and it is the next players turn.

Movement- Every turn, a player can choose to move. When moving, a player can move 1 ship either three squares up or three squares down. Or, a player can choose to take up all three movements and rotate their ship along either end.

Repair crews- Every turn you can choose to repair a section of a ship. You simply state you are using a repair, and repair a single tile of a ship. You have a total of 5 repairs you can use.

Carpet Bomb- As long as your aircraft carrier is still up; you can choose to do a carpet bombing run. When doing a carpet bomb, you select a single vertical line (a line facing both players) and you hit every tile along that line.  You only hit the tiles on your opponent’s side. You can only do this once.  



Now some fast paced action pictures...






















Wednesday, 10 October 2012

Dig Dug



This week we took the classic Atari game Dig Dug and transformed it into a monster killing card game.

Concept from Original:
In the Atari version game the player is required to dig through the ground and kill all the monsters. This is fairly hard to do in a card format so we got creative.

In our game the player digs by flipping over a card from the stack, and players kill monsters with items, either pumps or rocks or other special items collected from digging. The winner of this game is the player who kills the most monsters when there is no cards left to dig.

Players:
2-6

Game Setup:
  • To start the game each player is dealt 7 cards from the top of the stack.
  • The player that goes first is the last player to eat some pineapple.
  • Play proceeds to those players left.
Rules:
  • On a players turn, he first draws (digs) a face up card from the stack, if it is a monster he must fight it, if it is anything else it can go into his hand.
  • If the player did not draw a monster, he may then play a monster if he chooses.
  • If the player draws a monster and defeats it, he draws (digs) a card face down from the stack. A player will draw 1 card for each monster card defeated.
  • In order to kill a monster cord(s) a player must play items that when totaled are greater than or equal to the number of monsters in the combat.
  • If the player cannot or does not want to kill the monster, he can run away discarding any monsters and items in play.
  • The max hand size at the end of your turn is 7 cards; you must discard down to this number in order to end your turn.

Cards:

There are a total of 105 cards in the deck.

  • Monster:
    • Pookas:
      • Pookas are the basic enemy in the game, they are fairly weak and players should not have much trouble dealing with them with starting cards. There are three types of cards with one, two and three Pookas.
    • Fygars:
      • Fygars are the harder enemy to kill, they will be quite challenging without the right amount of item cards. There are three types of cards with three, five and eight Fygars.
  • Pump:
    • Small:
      • The small pump can kill 1 monster on a card.
    • Medium:
      • The medium pump can kill 2 monsters on a card.
    • Large:
      • The large pump can kill 3 monsters on a card.
  • Boulders:
    • Small Boulder:
      • The small boulder can kill one monster on a card.
    • Medium Boulder:
      • The medium boulder can kill two one monsters on a card.
    • Large Boulder:
      • The large boulder can kill three one monsters on a card.
    • Humongous Boulder:
      • The small boulder can kill all the monsters in the active combat.
  • Special:
    • Carrot:
      • The carrot grants +1 monster to a combat.
    • Turnip:
      • The turnip grants +1 monster killed to any pump or boulder.
    • Mushroom:
      • The mushroom kills 2 addition monsters.
    • Eggplant:
      • The eggplant adds 2 addition monsters to the combat.
    • Green Pepper:
      • The green pepper can either kill 3 monsters or add three monsters to the combat.
    • Tomato:
      • The tomato allows the player to search through the discard pile and place one of the cards into his/her hand.
    • Watermelon:
      • The water melon lets you peek at and reorder the top 5 cards of the stack at any time, even before another player would draw.
    • Pineapple:
      • The pineapple card ends the current combat, it may be played by any player at any time on any combat, and no reward is drawn, and no points are earned.
    • Ghost:
      • The ghost card allows a player to add a monster card to an active combat of any player.

Card Sheet:
















Wednesday, 3 October 2012

Gem Hunter



This week for our collection game, my group made a casual collection game called Gem Hunter.
We stuck to the basic principle of KISS this week, after last week where are game was still good but had complex rules.

The game involves players moving around the board trying to recover more of gems than any other player, they do this by rolling a die and moving tiles, they can reveal the tile that they land on and resolve it.

In order to play this game, you need the 100 tiles, 1 d4 die, 1 d6 die turn order, 40 assorted gem tokens and 4 player tokens.


Set Up & Rules

  • All 100 tiles (or as many as players have decided on) must be shuffled and laid out on a 10 x 10 grid (or to the specifications of players).
  • All 4 players take turns to roll the dice. The player with the highest roll begins. If 2 players roll the same highest number, they roll again. 
  • The player with the highest roll then proceeds to choose a tile to enter the board on. Should this tile be a trap tile, the player is kicked off the board and must try again on his next turn. Play passes on to the left of the player.
  • As all players enter the board, the objective of the game is to collect the most gems while avoiding trap tiles. To do this, players roll the dice and move the appropriate number of spaces in any direction (including diagonal).
  • NOTE: No player is allowed to land on the same tile as another player, simply move to a tile beside him/her.
  • If a player lands on a trap tile in-game he/she loses a gem collected and must skip his/her next turn. If the player owns no gems, he/she must simply skip their next turn.
  • Should a player land on an empty space or a trap tile, they turn over the tile once the effect has occurred. Gem Tiles, however, remain flipped up.
  • Once all gem tiles are turned up, the player with the most gems wins the game and is crowned the "Gem Hunter"!
  • Should 2 or more players have the same amount of gems once all Gem Tiles are flipped, ...



Inspiration:

Our original concept was a much more complex gem collection game based in a lost tomb, we discussed many aspects but quickly the rules became complex and we decided instead to strip out the complexity and stick with a basic concept of moving around tiles and collecting gems, we add randomness in as well because the tiles are flipped down.


Pictures:

These are the different tiles that we have in the game.