Tuesday, 25 May 2010

Conclusion And Speculation On Future Work

I feel the project has provided a great platform for further improving my use of after effects and action Script 3.0. I feel the final draft of the project has materialized quite closely to the original concept but I do feel a need to improve the AS3 garbage collection to improve memory consumption.

The future ideas for the project are what I'm most excited about. At the moment with only one student the classroom feels somewhat limited. The next feature I want to include are other students that turn up in the classroom at different times of day dependent on what time is reading the system clock. Each student could bring new items with them and have their own desk environment with unique tools included. I like this idea due to the application gaining a more organic and constantly changing feel. Further adjustments could be to include different weather and times of day with the tracked footage in the window. I have found information on how to adjust variables on an application dependent on the weather readings from sites like BBC weather.

The platform game is in a very 'alpha' stage at the moment, but I plan for the final rendition to mirror the narrative of the main application, maybe even intertwining at points during the dream segments. One final issue to adress is what mouse funtionality to wake the character back up. Perhaps a function where you shake the mouse vigourously. I have already ciollected green screen footage of the main character waking up so this is something I could continue to work on straight away.

I was hoping to have the character travel further down the dream narrative route but I considered that getting the main structure of the application the most important.

Saturday, 22 May 2010

The Move from the Mundane to Spectacle



A lot of the focus of the project thus far has been on creating the 'Mundane' classroom environment. I feel as though the classroom setting could be further improved with the addition of more students (in progress) but overall I feel like the basic structure of this part of the project is finalized so over the past few weeks I have started creating artwork for the 'Spectacle' dream world. When the character falls asleep he is transported to a Dream Theater (American spelling since its a homage to the great prog band!). Here he will be given the choice of having a dream or a nightmare.
The following shots show the levels of the User interface for the classroom setting, This wider shot is the starting position of the application. You can click on the desk and the headphones to reach new segments of the application.

This second shot shows the interface for the main characters desk. At the moment you can use the pens, pencil and rubber to draw on the sketch pad and click the iPhone button to activate the game. The desk graffiti serves as a clue to the hidden functionality of the application and also as the back button to return to screen 1.


Clicking on the headphones will bring you to a close up shot of the main character. Here you can adjust the setting of the music playing in the application. Currently there is play, pause, stop, skip track buttons and dynamic text boxes that update from the XML musiclist file.


When the user triggers the sleep event the clasroom darkens and a spot light illuminates the main character as the POV zooms into his consciousness.




The camera travels through the faux-3D theatre towards the red curtains.





More Specific Conditionals for Entering Sleep

The previous actionScript example would trigger an event if the mouse was not moved for a variable amount of time. This was a good start for the project but I wanted to improve the specific values that would start this process. I couldn't start this segment of code until I had first created the XML music app but now that is finalized I have created an 'if' condition for a more complex event.


function onMouseTimer(e:TimerEvent):void{

if (currentIndex ==3 && musicOn>0){

trace("You have fallen asleep");

}
}



'current Index' refers to the song number in the XML list. In this case 'currentIndex==3' refers to track 4 as index starts on zero. 'musicOn' is a binary on or off value that determines whether or not the song is paused. This stops any action from being triggered if the user happens to stop moving the mouse whilst paused on track 4. I have also included volume control that makes the music louder depending on how close to the music source the user point of view is.


This extra conditional code seemed especially necessary, as through testing I determined a user would always trigger the sleep event accidentally when flicking through the songs on the music player as it did not require much mouse movement. The next step of this process is to select and create fitting tracks for the theme of the project.

Monday, 3 May 2010

Some Of the Project Influences

One of the films that has strongly influenced my direction with this project was Richard Linklater's 'Waking Life'. The narrative structure of the film is unusual and perfect for the subject matter. The main character travels from one metaphysical discussion to the next questioning all the while whether he is still awake, or dreaming and trapped in some infinite ongoing moment. I wanted to attempt something similar with an interactive twist. The animation is messy at times but I consider this to enhance the dreamlike atmosphere. Like a dream the wolrd never really settles on one form for very long. I would have loved to emulate that same rotoscoped footage but time constraints will probably make this unlikely.

encouraging lack of action

The progress of the applications narrative requires user interaction and non-interaction. Programming the non-interaction has been interesting due to it being rare to have events triggered this way.

Probably not the most efficient way of doing this little time based event but here is the Action Script 3.0 code thus far.


stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);

var mouseTimer:Timer = new Timer(3000);

mouseTimer.start();

mouseTimer.addEventListener(TimerEvent.TIMER, onMouseTimer);



function onMouseTimer(e:TimerEvent):void{

trace('Go To Sleep');


}


This code triggers 'Go To Sleep' to be traced into the output window in flash every 5 seconds of non-movement. The next step is to get this code to trigger only on specific music based events. I also want to refine the time of the event to be more random. Perhaps triggering somewhere between every 5 to 8 seconds.