<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: O3D: Colour me impressed</title>
	<atom:link href="http://www.adamfrisby.com/blog/2009/04/o3d-colour-me-impressed/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adamfrisby.com/blog/2009/04/o3d-colour-me-impressed/</link>
	<description>ZOMGWTFHAI</description>
	<lastBuildDate>Thu, 19 Aug 2010 04:10:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Adam Frisby</title>
		<link>http://www.adamfrisby.com/blog/2009/04/o3d-colour-me-impressed/comment-page-1/#comment-7951</link>
		<dc:creator>Adam Frisby</dc:creator>
		<pubDate>Wed, 29 Apr 2009 00:40:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.adamfrisby.com/blog/?p=195#comment-7951</guid>
		<description>Right - the big catch is going it in a way that covers at least the main three platforms. Relying on flash somewhat nerfs you there a little, since Flash on Linux is always sitting a version or two behind and is generally badly supported.</description>
		<content:encoded><![CDATA[<p>Right &#8211; the big catch is going it in a way that covers at least the main three platforms. Relying on flash somewhat nerfs you there a little, since Flash on Linux is always sitting a version or two behind and is generally badly supported.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gareth Nelson</title>
		<link>http://www.adamfrisby.com/blog/2009/04/o3d-colour-me-impressed/comment-page-1/#comment-7949</link>
		<dc:creator>Gareth Nelson</dc:creator>
		<pubDate>Tue, 28 Apr 2009 12:55:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.adamfrisby.com/blog/?p=195#comment-7949</guid>
		<description>Good point about Java3D - though it&#039;s not got as nice an API. Another nice approach is to use Firefox 3&#039;s support for sockets in chrome code, of course that leaves none-firefox users out in the cold.</description>
		<content:encoded><![CDATA[<p>Good point about Java3D &#8211; though it&#8217;s not got as nice an API. Another nice approach is to use Firefox 3&#8217;s support for sockets in chrome code, of course that leaves none-firefox users out in the cold.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam Frisby</title>
		<link>http://www.adamfrisby.com/blog/2009/04/o3d-colour-me-impressed/comment-page-1/#comment-7948</link>
		<dc:creator>Adam Frisby</dc:creator>
		<pubDate>Tue, 28 Apr 2009 07:00:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.adamfrisby.com/blog/?p=195#comment-7948</guid>
		<description>Well, if your going the Java route you may as well go Java3D (apart from the incredibly crappy 64MB applet memory usage limit.); but realistically doing interop between clientside plugins is messy at best. O3D mods are probably the most sound of the lot - but then you need to handle distribution of your custom version.</description>
		<content:encoded><![CDATA[<p>Well, if your going the Java route you may as well go Java3D (apart from the incredibly crappy 64MB applet memory usage limit.); but realistically doing interop between clientside plugins is messy at best. O3D mods are probably the most sound of the lot &#8211; but then you need to handle distribution of your custom version.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gareth Nelson</title>
		<link>http://www.adamfrisby.com/blog/2009/04/o3d-colour-me-impressed/comment-page-1/#comment-7946</link>
		<dc:creator>Gareth Nelson</dc:creator>
		<pubDate>Mon, 27 Apr 2009 16:32:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.adamfrisby.com/blog/?p=195#comment-7946</guid>
		<description>Who mentioned javascript for client-side processing? :)
Java applet, Flash, O3D mods even....</description>
		<content:encoded><![CDATA[<p>Who mentioned javascript for client-side processing? <img src='http://www.adamfrisby.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Java applet, Flash, O3D mods even&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam Frisby</title>
		<link>http://www.adamfrisby.com/blog/2009/04/o3d-colour-me-impressed/comment-page-1/#comment-7945</link>
		<dc:creator>Adam Frisby</dc:creator>
		<pubDate>Mon, 27 Apr 2009 10:46:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.adamfrisby.com/blog/?p=195#comment-7945</guid>
		<description>EQG is basically COMET - it&#039;s the idea of not returning immedietely, but waiting until you have something to return. So we&#039;re on the same page there.

Re: doing more clientside processing - big catch here, Javascript. Doing physics processing in Javascript strikes me as not quite feasible -- I think you realistically with O3D will be trimming most of the realtime interactive stuff away and &#039;live with&#039; a 200-400ms latency between action and reaction.</description>
		<content:encoded><![CDATA[<p>EQG is basically COMET &#8211; it&#8217;s the idea of not returning immedietely, but waiting until you have something to return. So we&#8217;re on the same page there.</p>
<p>Re: doing more clientside processing &#8211; big catch here, Javascript. Doing physics processing in Javascript strikes me as not quite feasible &#8212; I think you realistically with O3D will be trimming most of the realtime interactive stuff away and &#8216;live with&#8217; a 200-400ms latency between action and reaction.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gareth Nelson</title>
		<link>http://www.adamfrisby.com/blog/2009/04/o3d-colour-me-impressed/comment-page-1/#comment-7942</link>
		<dc:creator>Gareth Nelson</dc:creator>
		<pubDate>Mon, 27 Apr 2009 06:28:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.adamfrisby.com/blog/?p=195#comment-7942</guid>
		<description>AJAX is under-estimated for communication in VWs. Two things to bear in mind:

1 - Polling is not as expensive as you&#039;d think, just make sure each individual poll sticks around for a while. I&#039;m fond of sending a POST every few seconds (if there isn&#039;t already one pending) and then having the httpd sit around keeping the socket open for about 10 seconds until an event comes in. In-between polls, events are queued up.

This is fairly similar to how EQG in SL already functions I believe and i&#039;ve tested it quite a bit for tunnelling purposes. It also works wonderfully on google app engine contrary to popular belief, and can be used to simulate background threads (I have a cool little system that serialises the full function closure between each request and stores it).

2 - You can offload some of the processing to the clientside and thus reduce network communication. Physics can be done very nicely like this, just resync every now and then. Security issues need to be taken into account of course, but in a worst case scenario a client may think it&#039;s at location A while it&#039;s really in location B - if done right it can&#039;t actually manipulate location A or even see what content is there.</description>
		<content:encoded><![CDATA[<p>AJAX is under-estimated for communication in VWs. Two things to bear in mind:</p>
<p>1 &#8211; Polling is not as expensive as you&#8217;d think, just make sure each individual poll sticks around for a while. I&#8217;m fond of sending a POST every few seconds (if there isn&#8217;t already one pending) and then having the httpd sit around keeping the socket open for about 10 seconds until an event comes in. In-between polls, events are queued up.</p>
<p>This is fairly similar to how EQG in SL already functions I believe and i&#8217;ve tested it quite a bit for tunnelling purposes. It also works wonderfully on google app engine contrary to popular belief, and can be used to simulate background threads (I have a cool little system that serialises the full function closure between each request and stores it).</p>
<p>2 &#8211; You can offload some of the processing to the clientside and thus reduce network communication. Physics can be done very nicely like this, just resync every now and then. Security issues need to be taken into account of course, but in a worst case scenario a client may think it&#8217;s at location A while it&#8217;s really in location B &#8211; if done right it can&#8217;t actually manipulate location A or even see what content is there.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam Frisby</title>
		<link>http://www.adamfrisby.com/blog/2009/04/o3d-colour-me-impressed/comment-page-1/#comment-7935</link>
		<dc:creator>Adam Frisby</dc:creator>
		<pubDate>Thu, 23 Apr 2009 04:29:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.adamfrisby.com/blog/?p=195#comment-7935</guid>
		<description>Events are a tough one - I am debating using COMET versus polling. COMET has some advantages in that it provides realtime feedback - the disadvantage is it breaks program flow.

That being said - this isnt being pushed as a next gen protocol. The reason being there are better ways to do that - eg, MXP is a lot more interesting as a full VW protocol.</description>
		<content:encoded><![CDATA[<p>Events are a tough one &#8211; I am debating using COMET versus polling. COMET has some advantages in that it provides realtime feedback &#8211; the disadvantage is it breaks program flow.</p>
<p>That being said &#8211; this isnt being pushed as a next gen protocol. The reason being there are better ways to do that &#8211; eg, MXP is a lot more interesting as a full VW protocol.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Merlin</title>
		<link>http://www.adamfrisby.com/blog/2009/04/o3d-colour-me-impressed/comment-page-1/#comment-7934</link>
		<dc:creator>Merlin</dc:creator>
		<pubDate>Thu, 23 Apr 2009 03:54:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.adamfrisby.com/blog/?p=195#comment-7934</guid>
		<description>If you have a flexible architecture, replacing JSON to protobuf can be very easy. I think the bigest problem will be the HTTP&#039;s request/response model. How the client side will be noticed about the events? As I know, the standard way is polling, but if the poll frequency is big (it must be for the VR experience), it can be also very data expensieve. Although, a flexible architecture (try to use Applet/Flash with UDP, and if it not works, change to HTTP) can help. 
This new firewall friendly architecture is very impressive. I am really excited about the results of the development.</description>
		<content:encoded><![CDATA[<p>If you have a flexible architecture, replacing JSON to protobuf can be very easy. I think the bigest problem will be the HTTP&#8217;s request/response model. How the client side will be noticed about the events? As I know, the standard way is polling, but if the poll frequency is big (it must be for the VR experience), it can be also very data expensieve. Although, a flexible architecture (try to use Applet/Flash with UDP, and if it not works, change to HTTP) can help.<br />
This new firewall friendly architecture is very impressive. I am really excited about the results of the development.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam Frisby</title>
		<link>http://www.adamfrisby.com/blog/2009/04/o3d-colour-me-impressed/comment-page-1/#comment-7933</link>
		<dc:creator>Adam Frisby</dc:creator>
		<pubDate>Thu, 23 Apr 2009 01:07:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.adamfrisby.com/blog/?p=195#comment-7933</guid>
		<description>Interesting.

I was not aware google have a protobuf JS implementation - since I have not written the serialiser yet, this actually may be a good target.

The reason I suggested JSON was that it is very simple to parse and is widely used within the JS space.</description>
		<content:encoded><![CDATA[<p>Interesting.</p>
<p>I was not aware google have a protobuf JS implementation &#8211; since I have not written the serialiser yet, this actually may be a good target.</p>
<p>The reason I suggested JSON was that it is very simple to parse and is widely used within the JS space.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Merlin</title>
		<link>http://www.adamfrisby.com/blog/2009/04/o3d-colour-me-impressed/comment-page-1/#comment-7932</link>
		<dc:creator>Merlin</dc:creator>
		<pubDate>Wed, 22 Apr 2009 19:23:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.adamfrisby.com/blog/?p=195#comment-7932</guid>
		<description>HTTP/JSON songs good. Standard communication format, firewall friendly, etc., but is JSON the right format for communication? I have no real world experience with VR protocols, but I think they must be very data intensive. So, maybe a binary protocol upon HTTP can be better choice. The Google Protocol Buffers (http://code.google.com/intl/hu-HU/apis/protocolbuffers/) witch is used in the MXP reference implementation can be a better way to implementing the communication interface. Google Protocol Buffers have a JS implementation (http://code.google.com/p/protobuf-js/), so hypotetically it is possible to create a full Javascript based client upon O3D.</description>
		<content:encoded><![CDATA[<p>HTTP/JSON songs good. Standard communication format, firewall friendly, etc., but is JSON the right format for communication? I have no real world experience with VR protocols, but I think they must be very data intensive. So, maybe a binary protocol upon HTTP can be better choice. The Google Protocol Buffers (<a href="http://code.google.com/intl/hu-HU/apis/protocolbuffers/" rel="nofollow">http://code.google.com/intl/hu-HU/apis/protocolbuffers/</a>) witch is used in the MXP reference implementation can be a better way to implementing the communication interface. Google Protocol Buffers have a JS implementation (<a href="http://code.google.com/p/protobuf-js/)" rel="nofollow">http://code.google.com/p/protobuf-js/)</a>, so hypotetically it is possible to create a full Javascript based client upon O3D.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
