Thursday, April 19, 2012

Final Project


Our final project is online at:

http://www.prism.gatech.edu/~ksheffield3/LCC_2730_FINAL_PROJECT_QUIDDITCH/WebPlayer/WebPlayer.html

As far as my role in the final project, I was the main scripter and also the assembler. I wrote the scripts for broom movement, snitch movement, hand reaching, winning and losing, scene navigation, and GUI creation. I put all of the assets into scenes, put the intro scene into the main project from a different project, as well as tweaking cameras and objects to increase playabilitiy and feel. I controlled a lot of the camera's and lighting. I set up all collisions and triggers. These were my scripts:

Snitch Movement:


using UnityEngine;
using System.Collections;

public class SnitchMove : MonoBehaviour
{
public int speed = 5;

public int height;

public Vector3 centerOfBase;
public float a;
public float b;

private Vector3 move;
private float durationCounter;

void Start()
{
do
{
durationCounter = Random.value * 3;
move = Random.insideUnitSphere.normalized * speed * durationCounter;
}while(!Validate());
}

void Update()
{
if(durationCounter > 0)
{
transform.Translate(move*Time.deltaTime);
durationCounter -= Time.deltaTime;
}
if(durationCounter <= 0)
{
do
{
durationCounter = Random.value * 3;
move = Random.insideUnitSphere.normalized * speed * durationCounter;
}while(!Validate());

}
}

bool Validate()
{
float yPos = transform.position.y + durationCounter * move.y;
if(yPos < centerOfBase.y || yPos > centerOfBase.y + height)
{
return false;
}
float A = transform.position.z + durationCounter * move.z - centerOfBase.z;
float B = transform.position.x + durationCounter * move.x - centerOfBase.x;
return( (Mathf.Pow(A, 2)/Mathf.Pow(a, 2)) + (Mathf.Pow(B, 2)/Mathf.Pow(b, 2)) <= 1 );
}

void OnTriggerEnter(Collider obj)
{
if(obj.gameObject.name == "Hand" && GameObject.Find ("Player").GetComponent<ReachHand>().IsReaching())
{
gameObject.GetComponent<MeshCollider>().isTrigger = false;
GameObject.Find("Player").GetComponent<BroomstickMove>().enabled = false;
gameObject.GetComponent<TrailRenderer>().enabled = false;
gameObject.transform.parent = GameObject.Find("Hand").transform;
GameObject.Find("Player").GetComponent<ReachHand>().Win();
enabled = false;
}
}
}

Broomstick Movement



using UnityEngine;
using System.Collections;

public class BroomstickMove : MonoBehaviour
{
public float speed = 20;
public float accelerationModifier = 80;

public int pitchSensitivity = 2;
public int rollSensitivity = 5;
public int yawSensitivity = 3;

void Start()
{

}

void Update()
{
transform.Translate(Vector3.forward*speed*Time.deltaTime);
CheckForInput();
}

void CheckForInput()
{
if(Input.GetKey("a"))
{
transform.Rotate(0,-pitchSensitivity,0);
}
if(Input.GetKey("d"))
{
transform.Rotate(0,pitchSensitivity,0);
}
if(Input.GetKey("q"))
{
transform.Rotate(0,0,yawSensitivity);
}
if(Input.GetKey("e"))
{
transform.Rotate(0,0,-yawSensitivity);
}
if(Input.GetKey("w"))
{
transform.Rotate(rollSensitivity,0,0);
}
if(Input.GetKey("s"))
{
transform.Rotate(-rollSensitivity,0,0);
}
if(Input.GetKeyDown("space"))
{
speed += accelerationModifier;
}
if(Input.GetKeyUp("space"))
{
speed -= accelerationModifier;
}
if(Input.GetKeyUp("r"))
{
gameObject.GetComponent<ReachHand>().Reach(Vector3.left);
}
}
}

Reach Hand Out and Grab Snitch

using UnityEngine;
using System.Collections;

public class ReachHand : MonoBehaviour
{
public GameObject hand;
public float maxDuration = 2;
public float speed = 2;
private Vector3 direction;
private bool reaching = false;
private float durationCounter = 0;
private bool win = false;
void Start()
{
}
void Update()
{
if(reaching)
{
hand.transform.Translate(speed * direction * Time.deltaTime);
durationCounter += Time.deltaTime;
if(durationCounter >= maxDuration)
{
reaching = false;
}
}
else if(!reaching && durationCounter > 0)
{
hand.transform.Translate(speed * -direction * Time.deltaTime);
durationCounter -= Time.deltaTime;
}
if(durationCounter <= 0 && win)
{
Application.LoadLevel("WinScreen");
}
}
public void Reach(Vector3 direction)
{
if(!reaching && durationCounter <= 0)
{
reaching = true;
this.direction = direction;
}
}
public bool IsReaching()
{
return (durationCounter > 0);
}
public void Win()
{
maxDuration = durationCounter;
win = true;
}
}

Lose If You Collide with Terrain

using UnityEngine;
using System.Collections;

public class CollideTerrain : MonoBehaviour
{

void Start()
{
}
void Update()
{
}
void OnTriggerEnter(Collider obj)
{
if(obj.gameObject.name == "BroomCollide")
{
Application.LoadLevel("LoseScreen");
}
}
}

A Couple GUI Scripts

using UnityEngine;
using System.Collections;

public class PlayAgain : MonoBehaviour
{
public string buttonText;
void Start()
{
}
void Update()
{
}
void OnGUI()
{
Rect buttonRect1 = new Rect(Screen.width / 3, 7 * Screen.height / 9, Screen.width / 3, Screen.height / 9);
GUIContent buttonContent1 = new GUIContent(buttonText);
if(GUI.Button(buttonRect1, buttonContent1))
{
Application.LoadLevel("StartScreen");
}
}
}

using UnityEngine;
using System.Collections;

public class ToIntro : MonoBehaviour
{
void Start()
{
}
void Update()
{
}
void OnGUI()
{
Rect buttonRect1 = new Rect(Screen.width / 3, 2 * Screen.height / 7, Screen.width / 3, Screen.height / 7);
GUIContent buttonContent1 = new GUIContent("Start");
if(GUI.Button(buttonRect1, buttonContent1))
{
Application.LoadLevel("IntroScreen");
}
Rect buttonRect2 = new Rect(Screen.width / 3, 4 * Screen.height / 7, Screen.width / 3, Screen.height / 7);
GUIContent buttonContent2 = new GUIContent("Instructions");
if(GUI.Button(buttonRect2, buttonContent2))
{
Application.LoadLevel("InstructionScreen");
}
}
}

using UnityEngine;
using System.Collections;

public class BackToMenu : MonoBehaviour
{
void Start()
{
}
void Update()
{
}
void OnGUI()
{
Rect buttonRect1 = new Rect(Screen.width / 3, 13 * Screen.height / 15, Screen.width / 3, Screen.height / 15);
GUIContent buttonContent1 = new GUIContent("Back");
if(GUI.Button(buttonRect1, buttonContent1))
{
Application.LoadLevel("StartScreen");
}
}
}

All of my scripts were written in C#. I had a few issues that required major debug time. The bigger one is that trigger's are bugged in unity, and don't work quite the way they're supposed to. This was an issue when I tried to use a cylinder as the bounding box for my snitch. Upon realizing there was not easy fix to the bug, I changed my code completely to be done mathematically. Additionally, I hit a bug where two mesh colliders won't collide, so used some creative collider use to compensate. I think I played a major role in this project and that it came out very well.


Tuesday, April 10, 2012

Readings and Project Progress

Readings


Laurel
The Laurel reading talked about computer programming and interaction, and how they were a form of performance. I don't really agree with this. I feel as if Laurel uses too broad a definition for performance, which allows for this claim to be made. Laurel also oversimplifies the ideas of programming. If programmers were actors, why then wouldn't you also consider actors to include writers, painters, or even athletes? The argument seems like a bit of a stretch..

Phelan
Phelan discusses the validity of performance in still art in the narrative of the observers. With all due respect to Phelan, this concept is a stretch. While some pieces of still art may inspire greater conversation than others, simply inspiring conversation is not enough to validate performance. If I were to have a conversation with a peer about chocolate, chocolate wouldn't become a performance. The concept is ridiculous.

Progress


So far I have adjust and implemented my flight script for the broomstick and made significant progress in the snitch move script.

Thursday, March 29, 2012

Open Design

My open design project is a game that can be played at:

http://www.prism.gatech.edu/~mrubin8/FlightGame/WebPlayer.html

The game represents the life lesson "Don't let money distract you from your goals."

The scripts will be used in our final project which will be a quiditch game.

Tuesday, March 27, 2012

Reading #8

The Burrill reading discussed performance in its relation to digital media. While it talked about a few different themes and questions related to the subject, the one I found most interesting was the question, "Is the player in a video game the audience or the performer?" An argument could certainly be made for both cases. The player is the audience because he is the one the game is designed to entertain. However he is also the performer since in many ways he controls the plot and interaction of the game. While story events may be similar regardless (or may not be), the player is the one that physically explores the narrative space. In my opinion, the user is always going to be a degree of both the performer and the audience. However, the more control the player has and the more freedom they have exploring the narrative space, the more agency they obtain and the more they become the performer.

The Chapter 5 Ryan reading discussed the influence of user interaction on narrative. He discussed New Media and the way it has transformed the role of the user in his or her own entertainment. New media users help build the narrative space around them through action and decision. The reading concluded by discussing ways that agency should be limited in certain cases where media wants to hold complexity in characters (as opposed to making the character an empty shell that exists only to reflect the user).

Thursday, March 8, 2012

Unity Scene

My unity scene can be found at:

http://www.prism.gatech.edu/~mrubin8/WebPlayer.html

It is in the format of a playthrough. The controls are as follows:

W - Move Forward
S - Move Backward
A - Move Left
D - Move Right
Move Mouse - Look Around
E - Interact
Space Bar - Jump

The web player renders fairly slowly (at least on my computer). Apologies if objects flicker strangely, this is an affordance of the web player and not the project. Additionally, the web player does not really show the flashlight effect I have implemented. I will be trying to get the .exe format working for the next checkpoint, so that these implementations will show correctly.

Other things I plan on adding by the next checkpoint:

-Cut scenes
-Sound
-Better item control (ball will roll when user runs into it, objects will become static once put on table)
-Completion conditions met when all items are brought to table

Tuesday, March 6, 2012

Reading #7

Manovich talks about the 5 principles of New Media: Numerical Representation, Modularity, Automation, Variability, and Transcoding. He talks about the role that these play in differentiating New Media from Old Media, and the way that these generate a more immersive experience.

Bjork's article talks about an app she made, that is a prime example of New Media. It not only plays music, but uses it to generate a visual component, combining the audio and visual components of the media device. Not only is the app cool, but it makes you feel like you're more a part of the music than if you were to just listen to it.

Tuesday, February 28, 2012

Mise-en-scene Assignment

The scene is dimly lit. The walls are grayish in color, probably concrete. A hard-looking bed lies in the middle of the room, with a man laying in it. The left side of the bed has an endtable with a strange-looking alarm clock on it. On the right is a coat rack with a lab coat on it.

The room is pretty baron, except for a few things against the walls. On one wall of the room is a table with an elaborate chemical apparatus on it filled with a bubbling green liquid. On another wall is a staircase going up to the surface. Finally, another wall has a bookshelf, seemingly disorganized and filled with old, dusty books.

Tuesday, February 21, 2012

Reading #6

The Wolf reading talks about spatial use in the video game medium. It talks about how off screen space is different in video games than in film because in video games it is the viewer who has control over the camera, as opposed to the creator. It then proceeds to list 11 different spatial designs of video games and how they change the virtual space created, as well as describing their effect on the gameplay and the user.

The Nitsche reading discusses kind of a cool concept: "editing" in video games. It looks at video games as if they were films, with each "cut" triggered by the player in some form. Nitsche someone makes video games out to be dynamic films generated by the player. He relates this concept back to the montage and the moving image. This concept is kind of cool. It talks about video games as tools for generating film instead of the classical view of entirely separate mediums. This analysis also explains the somewhat natural development of Machinima. If video games are tools for generating films, then films existing from games are only natural.

Tuesday, February 7, 2012

Reading #4

The Bordwell/Thompson reading discussed Mise-en-scene. Mise-en-scene is a very broad concept encompassing everything within the frame of view. This includes acting, costumes, makeup, scenery, lighting, on-stage sound, and a variety of other things. In any good scene, these components are assembled in such a way to create balance in space and time. The reading goes over different styles of doing this, and what kinds of scenes they create. (Different types of lighting, where objects appear in the scene, etc.)

Performative Interventions uses Second Life to talk about how art has changed in the twenty-first century. It discusses time in art, machinima, and even gives an introduction to fluxus, the art form that our guest speaker last week discussed. The main theme of the piece seemed to be new media in Second Life and other virtual worlds, and the way it has changed performative art.

Tuesday, January 31, 2012

Reading #3

The Bordwell reading talks about the recent Scorsese movie, Hugo, with great emphasis on the secretly major character in the film, Georges Melies. Melies was a great early filmmaker, and an inspiration to the industry/movement as a whole. According to Bordwell, the film is obviously a cleaned up version of the story (as Melies actually had 2 wives, etc.), but it actually does a pretty good job of accurately depicting the life of Melies, and his importance to the film industry. On a somewhat different, but related note, it also talks about the automaton in the film and how the film makers were not good enough tinkers to make an automaton like the real one and had to use magnets to simulate the effect.

The Meadows reading talks about Architecture (as place and space), and its relation to the abstract narrative. It uses the example of the Acropolis, and how it conveys a narrative of "power, freedom, and a sense of proximity to a god that watched over the city". Meadows talks about perspective, and how an architecture may not have its intended effect if the viewer is standing in the wrong place. Buildings are designed to account for this (logical entrance, forced path, direction, etc.). It talks about 1st vs 3rd person, and 2d vs 3d imagery. Meadows claims that architects are just the narrator for buildings. How we see the world is often defined by what is hidden from our view (walls). On the other hand, visual cues pull our views together. All in all, regardless of your medium (book, movie, video game, building), it is important to stay on top of what the viewer can see and how they see it if you want your story to come across as intended.

Maya Troubles

Can't get my textures to work...


Monday, January 30, 2012

20 Things i've Learned in Life

1. Learn all you can, for you never know when you'll need it.
2. Listen and you will be listened to.
3. It's a lot easier to lie to the world than to yourself.
4. Pick your battles.
5. Time spent sleeping is often wasted.
6. Luck is never more than temporary.
7. Nothing ever goes according to plan.
8. We are often our own greatest constraint.
9. The more we care, the more we accomplish, but the more we can get hurt.
10. Never be afraid to just ask.
11. Thinking is good, doing is better.
12. Keep your priorities straight.
13.  Opportunities don't last forever.
14. Philosophy has not become useless, just integrated and more personal.
15. Stay connected.
16. People spend 80% of their life preparing for 20% of their life; don't be afraid to have some fun.
17. Practice may not make perfect but it makes progress.
18. It's more important to do something right than to do it fast.
19. Man's greatest flaw is his ability to make excuses.
20.Time spent wasted is not always lost.

Tuesday, January 24, 2012

Weekly Reading #2 and Flip Book

I apologize that this is a tiny bit late. Had some technical problems with the blog...

READINGS

Bazin talks about how creating an image is no longer done for the sole purpose of survival after death. It has grown into, as Bazin puts it, "Creation of an ideal world in the likeliness of the real". This was a tendency formed as early as when Leonardo DaVinci invented the Camera Obscura. Images are created for reasons both aesthetic and psychological. Bazin also discusses the mediums of painting and photography. He didn't like the realist art movement as it tried too hard to be accurate, and therefore felt that photography got painting back on track, for it allowed painters to stop trying to create perfect accuracy (since photos could do that easily) and instead allow them to move towards more traditional art objectives.

In "Persistence of Vision", Stephen Herbert questions the traditional theories behind perception of movement in films. This perception is in no way related to persistence as one might think (according to Herbert). Film needs to display 10 frames a second to create the illusion of motion. Flickering will ruin this illusion. Also, by slightly differing the pictures, "movement" is created.

FLIPBOOK


For my flipbook, I did a stick figure running with a day progressing around him. The sun goes up and down, and then the moon follows. I'm not a very artistic person, but I did a simple piece to make a statement. I tried to bring to light how we're always moving, and rarely stop to just enjoy our day. Notice how in the 24 hour cycle, the stick figure never stops running, and never really even breaks pace. The flipbook contained slides such as the following:

These are just 10 of my 63 pages, and this picture shows the slides in reverse order.

Tuesday, January 17, 2012

Weekly Reading #1

For the first weekly reading, we had to read chapter 1 of Virtual Art: From Illusion to Immersion by Oliver Grau and chapter 1 from Understanding Machinima by Paul Marino.

Oliver Grau talks about virtual reality and media artists in an attempt to make a claim that art and media have always have an underappreciated interdependence. He claims that media artists are not just artists, but also scientists. Grau talks about the vague scope of virtual reality, and the relationship between non-digital virtual reality (which existed in the form of panoramas and other artistic methods), and more traditionally recognized digital virtual reality. Virtual reality is not a new phenomenon, but it would be foolish to pretend that it has not emerged in a metamorphosised form since the digital revolution.

Grau also discusses the concept of immersion, and how it differentiates virtual reality from "make-believe". By taking the observer and placing them into the virtual world, they are more willing to let themselves lose touch with reality and accept the virtual world as their new reality. Many different techniques exist for doing this, which is only logical since immersion lies at the heart of establish virtual reality.

In Paul Marino's piece, he discusses "Machinima". He talks about what it is, how it started, and how it has evolved.

Machinima is the utilization of a 3D virtual medium to produce animated film. It is commonly done within the medium of a video game or other virtual engine.

Machinima emerged in the 80s as a way for hackers to brag about software that they cracked. The hackers would use the software to make a short intro video that was their way of tagging their accomplishments. Clans also began doing this in some games for bragging rights.

One person (and eventually others) used early games like DOOM and Quake in a similar fashion, to create videos. But he also opened up the movement to less skilled techies by creating a piece of software to assist in making Quake videos. This led to more and more Quake films being produced.

But the interesting part of Machinima is not just the way it has evolved. Machinima is proof that nontraditional mediums can be used in producing alternative but impressive projects. Sometimes it just helps to think outside the box.

Thursday, January 12, 2012

The Six Aspects of Time

The six elements of time are duration, speed, intensity, scope, setting and chronology. We have taken this first project as an opportunity to identify a few of them in different movies.

Duration:

To best exemplify duration, I chose to examine "88 Minutes".

88 Minutes (2007):



"88 Minutes" is a movie where the main character, Dr. Jack, is told he has only 88 minutes to live via phone call. Dr. Jack has to solve his own planned murder before its too late. The movie's run time is 111 minutes, leaving room for just over 20 minutes of film time used to depict the 9 years leading up to the phone call and the rest of the day  after his murder is attempted.

The story pretty much ends at the end of the film. The murderer is on death row and the main character survives. The film does little to make the viewer wonder about the story post-movie end.

Intensity:

To demonstrate intensity, I chose to look at "Wanted".

Wanted (2008)



The main character in the movie is Wesley, an average guy who has his life turned upside down when he finds out that he receives a visit from a league of assassins. The movie is very intense, as depicted by the trailer. This is done to present the contrast between his old boring life and his new dangerous (yet somewhat awesome) one. If the actors and actresses had under exaggerated, the movie would lose its direction and no real progress would seem to be made.

The whole theme of the movie relies on the idea that Wesley's life becomes "an action adventure", an idea that would never really even appear if not for the intensity of the film.

Chronology:

To best exemplify chronology, I chose to examine the movie "VANTAGE POINT".

VANTAGE POINT (2007):



"VANTAGE POINT" is a movie about just one event - an assassination on the US President. The whole event happens in an instance, and the events following aren't long. But what makes the movie interesting is that it shows the event from the point of view of 8 different people, one after another, revealing a little more about the situation each time.

By using this nontraditional chronology, the film manipulates the perspective of the viewer in the story. The story changes dramatically as each new characters perspective is revealed, even though often times only one or two more facts are revealed. This style intrigues the user, keeping them shrouded for most of the story. At the end, all of the characters

If the movie was shown with the events in order, it would be about 20 minutes long, and not all that intriguing. The movie uses the chronology to play the user, tricking them as fit.