Monday, July 9, 2007
Progress: Testing Phase
It's been quite a long time since I updated on the progress of this project, but fortunately no news is good news in this case. The last two weeks of June saw lots of progress on all fronts, as well as my last summer meeting with my advisor. Everything is in order, and I'm ready to begin testing my three methods to determine the overall strongest method of interacting with the users of SL in creating music.
I've decided upon four criteria to judge my three approaches:
- Response Time
Time between initial user input and aural response
Measured in (ms); Lowest value is most efficient
- Accuracy
Number of messages in compared with number of aural events out
Measured in whole integers; Lowest value is most accurate
- CPU Usage
Percentage of processing power used when receiving user data
Measured in a percentage from 0% to 200% on a dual core
processor; Lowest value is most efficient
- User Friendliness
Beta tester opinions on ease of use
Measured on a 5-point Likert scale; Highest value is easiest to use
In addition to these criteria, I will also be testing in several areas of SL to take population strain on the server into account. Testing will begin next week after I return from the ProvFlux new media conference in Rhode Island. A more detailed post on the changes in the final coding for all the paths will be up soon.
- M
I've decided upon four criteria to judge my three approaches:
- Response Time
Time between initial user input and aural response
Measured in (ms); Lowest value is most efficient
- Accuracy
Number of messages in compared with number of aural events out
Measured in whole integers; Lowest value is most accurate
- CPU Usage
Percentage of processing power used when receiving user data
Measured in a percentage from 0% to 200% on a dual core
processor; Lowest value is most efficient
- User Friendliness
Beta tester opinions on ease of use
Measured on a 5-point Likert scale; Highest value is easiest to use
In addition to these criteria, I will also be testing in several areas of SL to take population strain on the server into account. Testing will begin next week after I return from the ProvFlux new media conference in Rhode Island. A more detailed post on the changes in the final coding for all the paths will be up soon.
- M
Tuesday, June 19, 2007
Progress: Wrapping up
The chat logging portion of this project is so close to being done, it hurts. Here is the data chain as it stands right now:
SL --> email --> POP3 PHP script --> OSC --> Max/MSP
Using this method, I have successfully gotten data into Max/MSP from SL in something close to real-time. The original test involved clicking a link to send the data; that worked fine. For the past few days, I have been working to incorporate the code that forwards the message through OSC into the POP3 script. So far, no luck on that. There are all sorts of possible reasons for this, the top suspect being 'REMOTE_ADDR'. I've tried multiple work-arounds for this issue, but still no luck on either the schools server or my local server. Of course, the problem may lie elsewhere, but I can't find it if so.
One other minor issue I'm having is with the ;max launchbrowser message. I was planning on hooking up a metro to the message in order to request data at regular intervals, but the message opens up a new browser tab every time the metro sends it a bang. I've searched google, the Cycling 74 forums, and all the Max documentation, but haven't found any messages that can refresh a webpage instead of opening a new one. I don't think this will be a big issue; it is simple enough to insert one line of script into the POP3 PHP file so that it will refresh once every X seconds.
Once these two small issues are fixed, this path is essentially done; I could then turn my test patch into a fully functional one and begin beta testing and small test performances. Hoping for a solution!
- M
SL --> email --> POP3 PHP script --> OSC --> Max/MSP
Using this method, I have successfully gotten data into Max/MSP from SL in something close to real-time. The original test involved clicking a link to send the data; that worked fine. For the past few days, I have been working to incorporate the code that forwards the message through OSC into the POP3 script. So far, no luck on that. There are all sorts of possible reasons for this, the top suspect being 'REMOTE_ADDR'. I've tried multiple work-arounds for this issue, but still no luck on either the schools server or my local server. Of course, the problem may lie elsewhere, but I can't find it if so.
One other minor issue I'm having is with the ;max launchbrowser message. I was planning on hooking up a metro to the message in order to request data at regular intervals, but the message opens up a new browser tab every time the metro sends it a bang. I've searched google, the Cycling 74 forums, and all the Max documentation, but haven't found any messages that can refresh a webpage instead of opening a new one. I don't think this will be a big issue; it is simple enough to insert one line of script into the POP3 PHP file so that it will refresh once every X seconds.
Once these two small issues are fixed, this path is essentially done; I could then turn my test patch into a fully functional one and begin beta testing and small test performances. Hoping for a solution!
- M
Wednesday, June 13, 2007
Defining Second Life
A few days ago, a discussion popped up on the Second Life Educators mailing list about how to define Second Life in relation to other online virtual communities, specifically World of Warcraft. Though there are many different buzz words used to describe the various types of virtual communities, most agree that there is one specific difference between a world like WoW and one like SL: the presence of goals. Here are some quotes from the members of the list:
***
The basic distinction between SL and WoW for me is that SL is a simulation, and WoW is a game. Here are a couple of quotes from Akilli (2007):
"A simulation is defined as an interactive abstraction or simplification of some real life, or any attempt to imitate a real or imaginary environment or system (p. 4)"
"According to Prensky (2001) simulations and games differ in that, "simulations are not, in and of themselves games. In order to become games, they need additional structural elements--fun, play, rules, a goal, winning, competition, etc. (p.5)"
So while SL may contain games to play, it is not a game in and of itself. Akilli also uses the term game-like learning environments, "authentic or simulated places, where learning is fostered and supported especially by seamless integration of motivating game elements, such as challenge, curiosity, and fantasy. (p. 5)."
Finally, I'm noticing lots of folks using the term MUVE to refer to SL in literature, or immersive virtual world environment.
***
If you look at WoW and SL as virtual worlds, there is no difference.
Every MMORPG is also a virtual world. But not all virtual worlds are
MMORPGs.
***
I'd suggest that the common terms used are Social Worlds and Game Worlds/MMO/MMORPGs.
Social worlds are those where ludic elements are not coded into the system, they stem from tinyMUD, LambdaMOO etc, and go through to Second Life, There.com etc.
Game words are those where game elements such as character classes, levels etc are coded into the system, they stem from DikuMUD.
Yes people play games in social worlds and are social in game worlds, the distinction is more about the artifact and its intended purpose rather than necessarily about the emergent practices.
***
There was also a source cited by two people that I'm going to try to get hold of:
Akilli, G. (2007). Games and simulations: A new approach in education? In D. Gibson, C. Aldrich & M. Prensky (Eds), Games and simulations in online learning (pp. 1-20). Information Science Publishing: Hershey, PA.
Found it on Amazon, but hopefully I can find it in a library.
- M
***
The basic distinction between SL and WoW for me is that SL is a simulation, and WoW is a game. Here are a couple of quotes from Akilli (2007):
"A simulation is defined as an interactive abstraction or simplification of some real life, or any attempt to imitate a real or imaginary environment or system (p. 4)"
"According to Prensky (2001) simulations and games differ in that, "simulations are not, in and of themselves games. In order to become games, they need additional structural elements--fun, play, rules, a goal, winning, competition, etc. (p.5)"
So while SL may contain games to play, it is not a game in and of itself. Akilli also uses the term game-like learning environments, "authentic or simulated places, where learning is fostered and supported especially by seamless integration of motivating game elements, such as challenge, curiosity, and fantasy. (p. 5)."
Finally, I'm noticing lots of folks using the term MUVE to refer to SL in literature, or immersive virtual world environment.
***
If you look at WoW and SL as virtual worlds, there is no difference.
Every MMORPG is also a virtual world. But not all virtual worlds are
MMORPGs.
***
I'd suggest that the common terms used are Social Worlds and Game Worlds/MMO/MMORPGs.
Social worlds are those where ludic elements are not coded into the system, they stem from tinyMUD, LambdaMOO etc, and go through to Second Life, There.com etc.
Game words are those where game elements such as character classes, levels etc are coded into the system, they stem from DikuMUD.
Yes people play games in social worlds and are social in game worlds, the distinction is more about the artifact and its intended purpose rather than necessarily about the emergent practices.
***
There was also a source cited by two people that I'm going to try to get hold of:
Akilli, G. (2007). Games and simulations: A new approach in education? In D. Gibson, C. Aldrich & M. Prensky (Eds), Games and simulations in online learning (pp. 1-20). Information Science Publishing: Hershey, PA.
Found it on Amazon, but hopefully I can find it in a library.
- M
Tuesday, June 12, 2007
Progress: New Path
For the past week, my advisor and I have been examining two new methods of getting data out of SL and into Max/MSP. The first still involves heavy PHP, but instead of using Silo to store the data it'll use a MySQL database. This solution seems much more elegant and stable than the first, but will involve quite a bit more PHP study.
The second method is already well under way. I have scripted an object within SL to send every chat message it hears as an e-mail. It is done and tested, so the next step is to automatically retrieve the e-mail and format the message so it can be sent through OpenSound Control. I'm currently hung up on that part, unfortunately. I've been following this tutorial on using PHP to check e-mail through POP3, but I keep getting the following error:
POP3 connect() - Error: Can't connect to Server. Error: 110 -- Connection timed out
I believe I have the mail server address correct because when I change it, I get a server not found error instead. I'm not sure if the issue is on my end, or with Gmail where the account is. I found the following post on the tutorial's website:
>>Connected to mail server POP3 login() - Error: No connection avalible
>>
>>I am getting this error?
>>
>>Any one can advise me?
>If you’re on a server without root access, you can’t use any port below 1024.
That's a different error than what I'm getting, but I can see myself having that problem on the school's servers. Gmail's configuration page says that port 995 is needed, which is obviously below 1024. The school has been having network issues over the weekend because of power outages all over town, but I've tried it on three separate days now and still no luck. I'm going to fiddle with it some more before my meeting with my advisor today, but I think this might end up being another IT issue. Crossing my fingers for no power outages today!
- M
The second method is already well under way. I have scripted an object within SL to send every chat message it hears as an e-mail. It is done and tested, so the next step is to automatically retrieve the e-mail and format the message so it can be sent through OpenSound Control. I'm currently hung up on that part, unfortunately. I've been following this tutorial on using PHP to check e-mail through POP3, but I keep getting the following error:
POP3 connect() - Error: Can't connect to Server. Error: 110 -- Connection timed out
I believe I have the mail server address correct because when I change it, I get a server not found error instead. I'm not sure if the issue is on my end, or with Gmail where the account is. I found the following post on the tutorial's website:
>>Connected to mail server POP3 login() - Error: No connection avalible
>>
>>I am getting this error?
>>
>>Any one can advise me?
>If you’re on a server without root access, you can’t use any port below 1024.
That's a different error than what I'm getting, but I can see myself having that problem on the school's servers. Gmail's configuration page says that port 995 is needed, which is obviously below 1024. The school has been having network issues over the weekend because of power outages all over town, but I've tried it on three separate days now and still no luck. I'm going to fiddle with it some more before my meeting with my advisor today, but I think this might end up being another IT issue. Crossing my fingers for no power outages today!
- M
Tuesday, June 5, 2007
Back to Square One
Unfortunately, the visit to my university's IT department was fruitless. If anything, the situation is MORE confused than it was before. No one was able to puzzle out the problem with getting Silo running on the school's server, so it looks like this entire path may be a bust. I've sent one last e-mail to the developer of Silo, but I'm reasonably sure the problem is with the apache configuration of the school's server.
My meeting with my advisor today was spent brainstorming some new possible paths for the chat logging part of the grant. It looks like there are two equally viable paths we could take: one more complicated, but somewhat quicker in transferring data, and one that is actually quite simple, but contains many possible slow down points. Before Thursday I'll be diving deeper into LSL in an attempt to get chat data formatted as a URL to be sent to a PHP email form. With any extra time, I'll also be looking into applescripting.
My video tracking patch is more bogged down than ever. It's so bad that I'm only getting one voice out of my poly~ object. I've decided that I'm going to use two separate Max patches for the video tracking portion of the project. I'll be splitting my current patch up into two parts, the Jitter part and the MSP part. One patch will run in Max itself while the other will be in Max Runtime, and the two patches can communicate through netsend and netreceive. I'm hoping that, as others have experienced, my dual-core processor will be more efficiently used by splitting it up in this way. Depending on how much time the LSL scripting takes me, though, these changes may not be implemented for a few more days.
- M
My meeting with my advisor today was spent brainstorming some new possible paths for the chat logging part of the grant. It looks like there are two equally viable paths we could take: one more complicated, but somewhat quicker in transferring data, and one that is actually quite simple, but contains many possible slow down points. Before Thursday I'll be diving deeper into LSL in an attempt to get chat data formatted as a URL to be sent to a PHP email form. With any extra time, I'll also be looking into applescripting.
My video tracking patch is more bogged down than ever. It's so bad that I'm only getting one voice out of my poly~ object. I've decided that I'm going to use two separate Max patches for the video tracking portion of the project. I'll be splitting my current patch up into two parts, the Jitter part and the MSP part. One patch will run in Max itself while the other will be in Max Runtime, and the two patches can communicate through netsend and netreceive. I'm hoping that, as others have experienced, my dual-core processor will be more efficiently used by splitting it up in this way. Depending on how much time the LSL scripting takes me, though, these changes may not be implemented for a few more days.
- M
Friday, June 1, 2007
Progress: Additional Help
Some helpful e-mails have come through from various people, giving me a few more options to consider.
Correspondence with Zero Linden, creator of Silo, has proven fruitful. The first issue to overcome was debugging...Silo was not passing the tests set to it by the python program included with the download. The issue was actually in the formatting of the url, which is highly dependent on your apache server configuration. Silo has now passed all tests and has created the data folders that it needs to communicate with SL.
Zero Linden was also kind enough to provide me with a smaller, more efficient script to relay chat data to Silo from SL. Effectively, all it does is send everything it hears to Silo, with each message overwriting the last. That should be fine, since I want the data to be passed along to Max/MSP as soon as it hits Silo. Here's the new script:
default {
state_entry() { llListen(0, "", NULL_KEY, ""); }
listen(integer ch, string name, key id, string what) {
llHTTPRequest("http://some-url/chat", [ HTTP_METHOD, "PUT" ] , what);
}
}
Though, I'm still having issues getting everything working start to finish. Zero clarified for me in another e-mail that LSL scripts run on SL's side of the internet pond, not on my machine, so Silo MUST be installed on a remote server. This is where Stetson's IT department comes in.
Through several exchanges with IT, it's been determined that it'll be far easier if I just go meet with them and explain exactly what it is I'm doing. They claim that there is a problem with the Silo code and that they're getting several different errors. I have an appointment to meet with them today, so we'll see how it goes. Hopefully this will remove the last roadblock on this path!
- M
Correspondence with Zero Linden, creator of Silo, has proven fruitful. The first issue to overcome was debugging...Silo was not passing the tests set to it by the python program included with the download. The issue was actually in the formatting of the url, which is highly dependent on your apache server configuration. Silo has now passed all tests and has created the data folders that it needs to communicate with SL.
Zero Linden was also kind enough to provide me with a smaller, more efficient script to relay chat data to Silo from SL. Effectively, all it does is send everything it hears to Silo, with each message overwriting the last. That should be fine, since I want the data to be passed along to Max/MSP as soon as it hits Silo. Here's the new script:
default {
state_entry() { llListen(0, "", NULL_KEY, ""); }
listen(integer ch, string name, key id, string what) {
llHTTPRequest("http://some-url/chat", [ HTTP_METHOD, "PUT" ] , what);
}
}
Though, I'm still having issues getting everything working start to finish. Zero clarified for me in another e-mail that LSL scripts run on SL's side of the internet pond, not on my machine, so Silo MUST be installed on a remote server. This is where Stetson's IT department comes in.
Through several exchanges with IT, it's been determined that it'll be far easier if I just go meet with them and explain exactly what it is I'm doing. They claim that there is a problem with the Silo code and that they're getting several different errors. I have an appointment to meet with them today, so we'll see how it goes. Hopefully this will remove the last roadblock on this path!
- M
Thursday, May 31, 2007
Helpful Links
Since I've been doing so much online surfing for solutions to my server and CPU issues, I thought I should post some of the links that have been particularly helpful with some notes on the information.
+ Getting beyond 50% CPU usage in Jitter
This C74 thread gives some helpful solutions on getting Jitter to utilize multiple processor cores. I'm interested in the concept of running one patch in Max and the other in Max Runtime, so that the computer recognizes them as two separate processes and will distribute them how it will.
+ FPS Issues with Upgrade
This thread discusses the sudden drop in FPS when upgrading to Max 4.6 and Jitter 1.6. There is apparently an message that can be sent to Jitter to tell it how many cores and threads to use, as well as an option that defaults to "on" when it didn't used to.
+ Jitter Message Reference
A page listing all the messages that can be sent to the object Jitter to alter the behavior of Jitter as a whole. Good to know!
+ CheckUpDown Error Guide
CheckUpDown.com has a page for every HTTP error code that details common causes for the error as well as possible fixes. Useful for figuring out exactly what problem the web servers are having with Silo.
+ Enabling PHP on your Apache Server
Self-explanatory. Was very easy to follow.
+ Apache Webserving with Mac OS X
A 5-part guide with tons of information on using the Apache server that comes with OS X.
- M
+ Getting beyond 50% CPU usage in Jitter
This C74 thread gives some helpful solutions on getting Jitter to utilize multiple processor cores. I'm interested in the concept of running one patch in Max and the other in Max Runtime, so that the computer recognizes them as two separate processes and will distribute them how it will.
+ FPS Issues with Upgrade
This thread discusses the sudden drop in FPS when upgrading to Max 4.6 and Jitter 1.6. There is apparently an message that can be sent to Jitter to tell it how many cores and threads to use, as well as an option that defaults to "on" when it didn't used to.
+ Jitter Message Reference
A page listing all the messages that can be sent to the object Jitter to alter the behavior of Jitter as a whole. Good to know!
+ CheckUpDown Error Guide
CheckUpDown.com has a page for every HTTP error code that details common causes for the error as well as possible fixes. Useful for figuring out exactly what problem the web servers are having with Silo.
+ Enabling PHP on your Apache Server
Self-explanatory. Was very easy to follow.
+ Apache Webserving with Mac OS X
A 5-part guide with tons of information on using the Apache server that comes with OS X.
- M
Subscribe to:
Posts (Atom)