Friday, September 30, 2011

Changes

So that part in my last post about gestures? Scratch that.

I'm going the way of interactive vector fields. Craig Reynolds has done some really cool work in the field of autonomous agents.  Check out his site here  http://www.red3d.com/cwr/

In particular, I'm looking at this paper which highlights several ideas behind modeling steering behavior.  For the game, I plan to have the player's movements influence a vector field set in a 2D grid.  The agents will then use the field to direct their steering behavior, as seen in this applet from Reynolds' site: http://www.red3d.com/cwr/steer/FlowFollow.html

For now, however, I'm working on ways to select a subset of agents using mouse movements.  A really nice navigation framework was given to me, and it allows me to focus on the key interactivity of the game, once these smaller details are squared away.  Once selection is worked out, I will move to getting the Kinect to work with the nav framework through the use of a nice package from here that was further modified by Raul and Frank, grad students here at Penn.

Next time I'll have a more detailed post as well as a review over what I've done so far.

Marley

Thursday, September 22, 2011

Design Elements

Hello again,

This post will hopefully begin to address some of the key aspects of the game's design.

Let's start with the general layout of the levels and what's in them.

Each level is a simple path from start to finish. The camera will be at an angled overhead view allowing the player to see the entire course while maintaining visual and interactive depth.  

The flags will act as safe zones where the agents (called shuffles) are safe from harm. An activated flag will turn the safe zone into a spawn point, so if the player were to lose all their shuffles, they would re-spawn at the last safe zone that was activated.

In order to activate a flag, the player moves their hand over the flag until a green ring appears.  This means the player's hand is positioned correctly. After a certain amount of time the ring will indicate that the safe zone has been activated (either by flashing, blinking, or being filled in a clockwise fashion, the same as selecting in the Kinect Hub).

Next are 3 challenges that will put the gesture controls to the test.

Shuffles cannot climb this incline when merely walking.  However, with enough momentum, they can propel themselves up the incline and over the peak.  Make sure your shuffles get a good running start!

A winter wonderland! Shuffles like to skate around on ice (in fact, they can't help it) unless you direct them to walk slowly.  Ice can be friend or foe.  Often times, deadly objects, such as wall spikes or bramble thorn bushes are located right after an ice patch! (Now who would do that?)  But maybe its ability to accelerate shuffles will come in handy...

Let sleeping dogs lie.  Tip toe past the wuffles or your shuffles may become a tasty snack!
*Note: This may test the Kinect's sensitivity level when receiving data or my ability to handle very small or very slow gestures correctly.

And finally I'd like to introduce shuffles and wuffles!
Of course the designs might change in the future, but I hope that I can implement them in the final version of the game.

Here are some other important notes:

The first level will start out with somewhere around five to ten shuffles and the only challenges would be incline or ice with no chance at being damaged.  This should make it easier for the player to get a feel for the game and it's controls.  I think maybe twenty to thirty shuffles would be the max in the game, although I'm curious what controlling up to fifty or more shuffles might be like, hehe.
For damage, I was thinking of treating the entire herd as one entity that had a certain amount of hit points.  Then, if hit points are lost, a certain number of shuffles die ( :c ) based on the number of hit points lost.  That should be a lot easier to deal with than if each shuffle had its own hit points.  But I'm not really sure on that.

And finally I'd like to start talking about the gestures by first introducing one.  In a future post, I will document all of the gestures needed for the game with descriptions and video or animation of some form demonstrating each one.

The Wave is the gesture used to get your shuffles movin'! Wave right to left to tell them to move left, left to right to tell them to move right, toward yourself to make them move down, and away from you to make them move up.  Gesture intensity will determine how quickly or slowly the shuffles move.  To make them run, use a faster, more forceful wave, etc.  

Thanks for reading!
Questions and comments are much appreciated. :)
Marley


Monday, September 19, 2011

The Game Plan: Outline

Heyo!

So here I'm going to give a very basic outline of what needs to be done over the coming months.  I will follow up this outline with more detailed posts about the game design and mechanics.

1 Start with the Basics
Read through and learn the Kinect SDK and how to navigate/use Unity 3.  The goal is to get Unity to display the hands, wrists, elbows, shoulders, and shoulder center as points on the screen based on skeletal data from the Kinect.  These are the only joints that I think will be needed in order to play the game. (Note, however, the joints will not be displayed on screen during game play.)

2 Moving Up
Come up with the game gestures needed for game play.  The goal is to create a simple 'copycat' game where the player is shown a gesture and then asked to repeat, if the gesture is correct (within a certain percentage), then the game accepts the input and lets the player know they were right.  If the gesture is not accepted, the game should ask the player to try again.  This should be a good way to test whether the chosen gestures are easy to do and how strict the game should be when accepting input.

3 The Herd
Get some basic group agents set up using behavior trees so that the player can start interacting with the them.  The goal is to have a very, very stripped down version of the final game up and running.  This will act as a starting point for determining gesture 'force'.  One of the overall concepts of this project is to allow a single type of gesture to also include a range of intensity, which then maps to a range of reaction intensity in the agents.   So for example, if the player wants the agents to walk right, they will will wave from left to right, but if they want them to walk faster or run, they will wave from left to right faster.

Which brings me to a side note:
     I know it's called Herd 'Em, but this game is more about the agents looking to the player for direction, instead of the agents wanting to avoid an object, such as the player's hands.  I think that using avoidance techniques would possibly be too challenging for the player in terms of this game.   To compare, sheep herding dogs are born with the characteristics needed to successfully control sheep.  These traits are then further refined through months to years of training so that they can be used reliably and effectively.  Also, there is much more going on between sheep and dog than simply the sheep wanting to avoid the dog.  The agents in the game cannot determine the intent of the player; there is no eye contact, stalking, or other essential body language communication which is used between dogs and sheep.
     I really want to focus more on the range of intensity (I used urgency before, but I like intensity better) that can be found in each gesture.  I believe this approach makes much more sense to implement than a strict sheep herding model.  Perhaps I should name this, Direct 'Em? xD

4 A Smarter Herd
Improve upon the group dynamics and work on gesture refinement (if necessary, which is likely).  The goal here is to make the agents more intelligent about how to react during certain situations and to hopefully had some simple obstacles to the scene to test these reactions.

5 Level Layout
Develop the levels, including types of obstacles, dangers, length and other design elements.  The goal is to create at least 2 levels--the first being more of an introduction level and the second being a little more challenging--with rough implementations of the obstacles in place, and to actually be able to play through them!

6 Making Things Look Pretty
Art! Work on the overall style for the game and the design for the agents, menus, decorations, obstacles and anything else necessary.  The goal here is to enhance the game experience with fun visuals and, hopefully, sound.

7 Last But Not Least
Improve upon anything that needs work and/or add additional details to the game mechanics or design.  The goal, make it better!

Final note, time permitting I'd like to include ways to give each agent or a subset of the agents certain characteristics.  This would be a way to make the game more challenging and the agents more engaging.  Also I'd like to point out that, while art and design are incredibly important to any game,  the core part of the game mechanics (gesture input and agent reactions) have top priority during this project.


Thanks for reading!
Marley

Monday, September 12, 2011

The Journey Begins

Hello all!  This semester I will be working on my senior design project and I'm very excited to get started.  Here is the abstract for my project, which should be a good starting point for understanding what it's about:

The Kinect has opened up great opportunities to develop new ways of interacting with virtual games.  I will use Microsoft's KinectSDK to create a 3D game where the player herds a group of agents around obstacles and through other dangers to reach the goal with as many surviving agents as possible.  This game will not only utilize gesture input to direct the agents, but will also take into account the urgency with which the player gestures.  If a player wants the agents to stop suddenly they can direct the agents with a faster, more forceful stop gesture, etc.  Another notable feature is that there will not be a character in the game that represents the player; the player will interact directly with the agents, and vice versa.  Lastly, time permitting, I hope to include parameters that will give each agent certain characteristics that can help or hinder the player, such as willingness to follow directions and being more easily distracted.  These elements would help to make the game more challenging and more satisfying upon successfully reaching the goal.

Marley