Skip to content


Navigable Space in Digital Environments (W.I.P.)

Lev Manovich's Navigable Space

Manovich suggests that computer games1 as well as bringing new aesthetic forms, they give rise to new aesthetics of navigation (Manovich, 2001). While Doom (Id Software, 1993) has the user running through a maze-like level in a fast pace Myst(Cyan,1993) allows the user to explore the world around her. Manovich points out that, these games place the user in a place in the story at the beginning of the game as well as in a spatial place. The user has to explore most of the game's environments before she can reach a narrative end, since the game goals are completed and the story is retold by navigating through the 3D space efficiently (solving puzzles, defeating monsters) rendering the storyworld and the gameworld intertwined, the navigable space being the glue between the two.

Murray's Digital Environments' Spatiality

According to Murray, one of the four properties of digital environments2 is spatiality(Murray, 1997). While traditional media can convery information that would represent an environment, only interactive, navigable spaces allow us to roam as we choose in these representations. The interactively navigable nature of space represented in digital environments sets it apart from the representations of space in other media by giving us a sense of being at a point in a particular space by responsing to our input accordingly.

The perception of events by the user is also different than other media. She suggests that in theater, the events are happening on stage and you, as the spectator, merely watch – while in interactive navigable spaces there is a more dramatically engaging spectacle, you make the events in the virtual world happen and they happen to you. This gives the navigation dramatic power. (Murray 1997)

Murray's Pleasures of Navigation

As Murray defined earlier as a characteristic of digital environments, spatial navigation can be pleasurable in-itself regardless on the contents of the said environments and the mechanics of the game that contains them. Intentional navigation, is a participatory pleasure just like the sport of orienteering where people traverse an area based on clues such as landmarks.

Murray identifies two different configurations for orienteering in electornic environments; the solvable maze and the tangled rhizome.

The Story in the Maze

The maze has a place in Greek mythology, Daedalus builds King Minos of Crete a Maze to contain the deadly Minotaur. Theseus is the hero in the story that slays the beast by succesfully navigating the maze. “The adventure maze embodies a classic fairy-tale narrative of danger and salvation. Its lasting appeal as both story and a game pattern derives from the melding of a cognitive problem (finding the path) with an emotionally symbollic pattern (facing what is frightening and unknown.) ” (Murray, 1997). The maze, Murrey says, is a road map for telling this story.

On electronic narratives, the maze is a space where you can interact with other characters and objects and if need be, you can retrace your steps back to a point where you missed something, like Ariadne's thread.3

The drawback of a maze structure in narrative environments is that “it moves the interactor toward a single solution, toward finding the way out. The desire for agency in digital environments makes us impatient when our options are so limited.”(Murray, 1997)

The Rapture of the Rhizome

Rhizomes4 are structures that any of it's points can be connected to any other point in it. This makes the stories that embody this structure solutionless. Murray suggests that the rhizome structure does not empower the user because of the fact that the user can not mark a lexia5 as read or mark a lexia so it can be accesed easily later in the reading process (Murray,1997). Despite the argument against the rhizome structure and the user's power over navigation, Murray suggests that these unsolvable mazes does have to potential to serve as an expressive structure:

“Walking through a rhizome one enacts a story of wandering, of being enticed in conflicting directions, of remaining always open to surprise, of feeling helpless to orient oneself or to find an exit, but the story is also oddly reassuring. In the rhizome, one is constantly threatened but also continuously enclosed. The fact that the plot will not resolve means that no irreparable loss will be suffered.” (Murray, 1997)

Murray differs games from stories as placing the user as the protagonist in the story and identifies a flow of plot that is embodied in game narratives. One of the points she identifies goes as:

  • “I encounter a world in pieces and assemble it into a coherent whole.”

By succesfully navigating through the environment and traversing one level after another, the user assembles a world in pieces into a coherent whole. This is much like constructing a story in one's mind from the given plot points.

 

 

 

1Computer games exemplfying the potential of new media's aesthetic power.

2Digital environment are in context of medium and not refer to spatial environments in this case.

3Ariadne's thread is what Theseus uses to navigate the maze where the Minotaur dwells in the Greek myth mentioned earlier.

4 “Rhizome” is used here as Deleuze defines it - “theory and research that allows for multiple, non-hierarchical entry and exit points in data representation and interpretation”(http://en.wikipedia.org/wiki/Rhizome_(philosophy) 

5 Barthes definition of lexia is a brief contiguous fragment – a reading unit.


Posted in Academic, Thesis.

Tagged with , , , , .


Automata Pattern

Based on Conway's Game of Life. After 300-something generations you get this:









and here's the code:

 
int cellsize=1;    //cellsize d'uh
int padding=0;
 
int docwidth=400;
int docheight=400;
 
int rows=docheight/cellsize;        //rows d'uh
int columns=docwidth/cellsize;     //columns d'uh
 
int generations=0;
 
Cell c;
 
Cell[][] cells=new Cell[columns][rows];
Cell[][] temp=new Cell[columns][rows];
 
int [][] universe=new int [columns][rows];
 
void setup(){
 
  docwidth+=columns*(padding)+padding;
  docheight+=rows*(padding)+padding;
 
  size(docwidth,docheight);
 
  for(int i=0;i
<columns;i++){
   for(int j=0;j<columns;j++){
    universe[i][j]=int(random(0,10)%2);    //fill array with 1s and 0s
   }
  }
 
  for(int i=0;i<columns;i++){
   for(int j=0;j<rows;j++){
    //cells[i][j]=i*j;
    c=new Cell(i*(cellsize+padding),j*(cellsize+padding),cellsize);
    cells[i][j]=c;
    temp[i][j]=c;
 
   }//endof for
  }//endof for
 
}//endof setup
 
void checkNeighbors(){
   for(int i=1;i<columns-1;i++){
     for(int j=1;j<rows-1;j++){
      if(cells[i][j-1]._life)   cells[i][j]._neighbors++;
      if(cells[i][j+1]._life)   cells[i][j]._neighbors++;
 
      if(cells[i-1][j-1]._life) cells[i][j]._neighbors++;
      if(cells[i-1][j+1]._life) cells[i][j]._neighbors++;
      if(cells[i-1][j]._life)   cells[i][j]._neighbors++;
 
      if(cells[i+1][j-1]._life) cells[i][j]._neighbors++;
      if(cells[i+1][j+1]._life) cells[i][j]._neighbors++;
      if(cells[i+1][j]._life)   cells[i][j]._neighbors++;
     }
   }
 
}
 
void resetNeighbors(){
 for(int i=1;i<columns-1;i++){
     for(int j=1;j<rows-1;j++){
      cells[i][j]._neighbors=0;
     }
    }
 
}
 
void conway(){
  for(int i=1;i<columns-1;i++){
     for(int j=1;j<rows-1;j++){
       if(cells[i][j]._life&&cells[i][j]._neighbors<2) {temp[i][j]._life=false; }
       else if(cells[i][j]._life&&cells[i][j]._neighbors>3){ temp[i][j]._life=false; }
       else if(!cells[i][j]._life&&cells[i][j]._neighbors==3){ temp[i][j]._life=true; }
       else{
        cells[i][j]=temp[i][j] ;
       }
     }
  }
 
 // Cell[][] buffer = cells;
 
  for(int i=0;i
<columns;i++){
   for(int j=0;j<rows;j++){
 
    if(temp[i][j]._life) universe[i][j]=1;
    else universe[i][j]=0;
 
  if(universe[i][j]==1){
      cells[i][j]._life=true;
    }//endof if
    else{
       cells[i][j]._life=false;
    }
    }
  }
 
}
 
void draw(){
  delay(40);
  checkNeighbors();
  conway();
 
  generations++;
  save("pattern"+generations+".png");
 
  for(int i=0;i<columns;i++){
   for(int j=0;j<rows;j++){
 
    if(universe[i][j]==1){
      cells[i][j]._life=true;
    }//endof if
    else{
       cells[i][j]._life=false;
    }
 
    cells[i][j].display();
   }
  }
 
   resetNeighbors();
 
}//endof draw
 
class Cell{
 
  float  _xpos=0;
  float  _ypos=0;
  float  _cellsize=0;
  int    _alivefill;
  int    _deadfill;
  boolean _life;
  int _neighbors;
 
  Cell(float xpos, float ypos, float cellsize){
    _neighbors=0;
    _cellsize=cellsize;
    _xpos=xpos;
    _ypos=ypos;
    _deadfill=40;
    _alivefill=180;
    _life=true;
 
  }//endof constructor
 
  void display(){
   noStroke();
   if(_life)  fill(_alivefill);
   else fill(_deadfill);
   rect(_xpos+padding,_ypos+padding,_cellsize,_cellsize);
  }
 
}//endof class
 

Posted in Cellular Automata, Processing, Programming, sketches.


American Gothic – Dexter Season 6 Episode 7

Grant Wood - American Gothic


tractor engine over Dexter's shoulder

In Dexter's newest episode, they re-enacted the American Gothic painting by Grant Wood and it's pretty hard to miss -there's a scene where Rudy/Brian stands next to Dexter while Dexter is holding a pitchfork in front of the painting of the house from American Gothic.

Wikipedia reads about the original painting:
" the man's pitchfork symbolizing hard labor, and the flowers over the woman's right shoulder suggesting domesticity."
In the frame above, we see a tractor's engine over Dexter's shoulder.

There's also the sign in the painting that reads 124.50, which bring to mind the messages from Doomsday Killer, which went on like 1237, 1242... maybe I'm just reading into it but it would be great if they embedded plot clues into the environment's design.

For the sake of not giving any spoilers, I shall not go further ;)

Posted in awesome.

Tagged with , , , .


Flash Workshop on 12.11.2011 and 13.11.2011 at BGM

Tomorrow, I will be giving an introductory workshop at BGM under AMBER. I will go over the Flash IDE and the native tools in Flash. After that we will be playing around with code, learning about the display list in Flash and Event system. After that we will be creating a simple application.

The workshop at 13th will be more focused on code. It will be solely on the Drawing API in Flash and we will be learning all the basics to create generative visual applications.

Unfortunately, due to time constraints I will be coding on the IDE and will not go the OOP route this time. Maybe for another workshop...

All files and notes will be shared here, including the Processing workshop I gave on the 4th.

Posted in Workshops.

Tagged with , , .