
Online 3d has always been mired by long loading times or unresponsive interface. The thing that caught me was how the author of this site, Masayuki Kido, has taken that apparent limitation and used it to his advantage by combining low poly models with a beautiful cut out style. The illustrations, character designs and witty dialog are are wonderful too, leaving me wanting for more after exploring all the sections. Of course, expect nothing less from the winner of the FWA Site of the year 2008.
Check it out at http://ecodazoo.com/
The site is in japanese but that shouldn’t harm your experience a bit. Click through the 10 questions and have your robot generated, then watch it move around and fight with other robots. The algorithm that moves them and animate the legs is intriguing, and the interface looks clean and polished, typical japanese design.

http://www.verbatim.jp/senshuken/
Created by IMG SRC/Non-Grid, Kaibutsu, and Masayuki Kido
Well, at least when you’re using flash + amf. Last week I was getting the dreaded NetConnection.Call.BadVersion error every other day. Debugging blindly, I had no way of knowing whether I was moving towards or away from the solution. On the verge of giving up until I gave Service Capture a try. The handy tool sets up itself as the proxy to your browser and monitors all kinds of traffic, SOAP, XML, Text, JSON, Flash Traces, you name it. For my case, I used it primarily to decode the AMF responses from my zend_Amf gateway. It decodes the binary responses and place it along the request and response headers in a familiar object tree view, making inspection a breeze.
And I also realized what was causing the errors: the flash player was trying to decode a redirection to facebook’s login page as Amf. Doh.
Came across this 2 sites by Carlos Ulloa showcasing real time 3D in flash:
http://www.helloenjoy.com/ greets the viewer with an interesting transition from plain 2D words into a few 3D reflective text blocks floating in a white environment. After panning around them for awhile, the viewer soon notices that the cursor changes when hovering on each letter, and discovers in delight that those are not just floating 3D objects looking pretty, they actually demonstrate an interactive physics engine. Try them out yourself.
http://www.carlosulloa.com/ looks normal, until you decide to give the controls a try. Go ahead and be surprised.
Thank you for your support!
As the add-drop period is over, easySwap will be down until the next semester, when it will re-open with more features and (hopefully) better performance. All of the comments posted are being considered and would eventually be implemented depending on my free time. So see you again next semester =)
Some statistics:
Total users: 1,233
Courses wanted to add: 1,667
Courses wanted to drop: 499
Potential matches: 3,833
Meanwhile you can keep posting suggestions and feedback here.
As we all know, course registration in NTU can be quite a headache. For those of you looking for a course to add or swap, you can try this link. It is basically a listing page where (hopefully) all those who wants to drop or add courses can meet and discover each other.
http://easyswap.ryantan.net/
It is still in beta 1, and I hope to improve it with every feedback, thanks in advance!
p.s. Open to NTU students only =)
Just for fun, I’m developing a desktop buddy app with air. For now the only purpose it serves is as a simple reminder. Download the air package. If you leave the settings at default, it reminds you to fish every 15 minutes.

Don’t have adobe air? Get it here.
To get the length of a loaded FLV, you need to have an object listening to the meta data stream. Here’s how:
var vidClient:Object = new Object();
vidClient.onMetaData = onMetaData;
ns.client = vidClient; //ns is the netstream object
function onMetaData(metadata:Object):void {
lengthOfVideo = int(metadata.duration * 1000)+1;
trace("Length of flv from metadata = " + lengthOfVideo);
vidClient.onMetaData = null;
vidClient = null;
}
If you’re wondering how to actually load and play the flv file:
var nc : NetConnection;
var ns : NetStream;
var vid : Video;
var path : String = "test.flv";
nc = new NetConnection();
nc.connect(null);
ns = new NetStream(nc);
addChild(vid);
//optional events to handle status and error
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
vid.attachNetStream(ns);
ns.play(path);