<?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: How To Go From PC To Crossplatform Development : Q&amp;A</title>
	<atom:link href="http://assemblyrequired.crashworks.org/how-to-go-from-pc-to-crossplatform-development-qa/feed/" rel="self" type="application/rss+xml" />
	<link>http://assemblyrequired.crashworks.org</link>
	<description>Technical Notes On Game Development</description>
	<lastBuildDate>Wed, 28 Dec 2011 10:00:34 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Daniel C  Wessel</title>
		<link>http://assemblyrequired.crashworks.org/how-to-go-from-pc-to-crossplatform-development-qa/comment-page-1/#comment-22</link>
		<dc:creator>Daniel C  Wessel</dc:creator>
		<pubDate>Sat, 12 Apr 2008 02:27:29 +0000</pubDate>
		<guid isPermaLink="false">http://assemblyrequired.wordpress.com/?page_id=4#comment-22</guid>
		<description>Hi
I am not a developer but interested in translation.
Can you give me an example for UI-problems. You mentionend German a lot.
What about Right-To-Left-written languages</description>
		<content:encoded><![CDATA[<p>Hi<br />
I am not a developer but interested in translation.<br />
Can you give me an example for UI-problems. You mentionend German a lot.<br />
What about Right-To-Left-written languages</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ruskin</title>
		<link>http://assemblyrequired.crashworks.org/how-to-go-from-pc-to-crossplatform-development-qa/comment-page-1/#comment-21</link>
		<dc:creator>Ruskin</dc:creator>
		<pubDate>Wed, 02 Apr 2008 02:53:33 +0000</pubDate>
		<guid isPermaLink="false">http://assemblyrequired.wordpress.com/?page_id=4#comment-21</guid>
		<description>Hellow imays, that&#039;s a great question!

The short answer is that you might find what you need in a BSD tool called &lt;a href=&quot;http://www.dummynet.com/&quot; rel=&quot;nofollow&quot;&gt;dummynet&lt;/a&gt;. I haven&#039;t used it myself but I found some tutorials &lt;a href=&quot;http://www.scalabledesign.com/articles/dummynet.html&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://cs.ecs.baylor.edu/~donahoo/tools/dummy/tutorial.htm&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.

The slide you&#039;re referring to is actually the work of &lt;a href=&quot;http://www.codepuppies.com/~ben/photos/&quot; rel=&quot;nofollow&quot;&gt;Ben Stragnell&lt;/a&gt;, who as far as I can tell invented the technique. Essentially he custom-built his own router that managed all the traffic between the consoles we were testing with.

He put all of the consoles on a local network, along with a PC application that sniffed all the traffic it saw on the ethernet. Our &quot;virtual router&quot; on the PC knew the MAC addresses for all the consoles we were testing with, and it acted as a DHCP server for them. When the consoles booted up, our router picked up the DHCP request and assigned each console a fixed IP of the form 192.168.X.2, with a subnet mask of 255.255.255.0 . That gave each console its own subnetwork. We also told each console that its router was 192.168.X.1 .

Because each client was on its own network, the only way it could communicate with any other client was through the router; our application masqueraded as 192.168.X.1 for all values of X. Thus it could intercept every packet sent by every client, and do all sorts of things before sending its on to its destination, such as putting it in a delay queue, or randomly drop it, or fragment it, or so on.

All of this entails a lot of low level network programming, hand-assembling UDP/TCP packets, responding to ARP, and so on, so it&#039;s quite a bit of work. That&#039;s why it might be easier for you to set up BSD on a PC, configure it as a router, and use the off-the-self Dummynet.

If you are writing an &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/bb200104.aspx&quot; rel=&quot;nofollow&quot;&gt;XNA&lt;/a&gt; game, you get some nice &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/bb975762.aspx&quot; rel=&quot;nofollow&quot;&gt;latency simulation tools&lt;/a&gt; with Game Studio 2.0.

Another thing you can do is simply delay the sending and receiving of network packets inside your own game software. You could set up some kind wrapper for the network libraries in your game, and a debug variable that tells it how long to delay each packet, or chop it up, or so on. That works great for strictly message-based protocols, but is harder to do with more exotic network libraries, and it makes the accuracy of the simulation more dependent on the performance of the game client: if your framerates are highly variable, it&#039;ll be harder to accurately simulate latency and so on.</description>
		<content:encoded><![CDATA[<p>Hellow imays, that&#8217;s a great question!</p>
<p>The short answer is that you might find what you need in a BSD tool called <a href="http://www.dummynet.com/" rel="nofollow">dummynet</a>. I haven&#8217;t used it myself but I found some tutorials <a href="http://www.scalabledesign.com/articles/dummynet.html" rel="nofollow">here</a> and <a href="http://cs.ecs.baylor.edu/~donahoo/tools/dummy/tutorial.htm" rel="nofollow">here</a>.</p>
<p>The slide you&#8217;re referring to is actually the work of <a href="http://www.codepuppies.com/~ben/photos/" rel="nofollow">Ben Stragnell</a>, who as far as I can tell invented the technique. Essentially he custom-built his own router that managed all the traffic between the consoles we were testing with.</p>
<p>He put all of the consoles on a local network, along with a PC application that sniffed all the traffic it saw on the ethernet. Our &#8220;virtual router&#8221; on the PC knew the MAC addresses for all the consoles we were testing with, and it acted as a DHCP server for them. When the consoles booted up, our router picked up the DHCP request and assigned each console a fixed IP of the form 192.168.X.2, with a subnet mask of 255.255.255.0 . That gave each console its own subnetwork. We also told each console that its router was 192.168.X.1 .</p>
<p>Because each client was on its own network, the only way it could communicate with any other client was through the router; our application masqueraded as 192.168.X.1 for all values of X. Thus it could intercept every packet sent by every client, and do all sorts of things before sending its on to its destination, such as putting it in a delay queue, or randomly drop it, or fragment it, or so on.</p>
<p>All of this entails a lot of low level network programming, hand-assembling UDP/TCP packets, responding to ARP, and so on, so it&#8217;s quite a bit of work. That&#8217;s why it might be easier for you to set up BSD on a PC, configure it as a router, and use the off-the-self Dummynet.</p>
<p>If you are writing an <a href="http://msdn2.microsoft.com/en-us/library/bb200104.aspx" rel="nofollow">XNA</a> game, you get some nice <a href="http://msdn2.microsoft.com/en-us/library/bb975762.aspx" rel="nofollow">latency simulation tools</a> with Game Studio 2.0.</p>
<p>Another thing you can do is simply delay the sending and receiving of network packets inside your own game software. You could set up some kind wrapper for the network libraries in your game, and a debug variable that tells it how long to delay each packet, or chop it up, or so on. That works great for strictly message-based protocols, but is harder to do with more exotic network libraries, and it makes the accuracy of the simulation more dependent on the performance of the game client: if your framerates are highly variable, it&#8217;ll be harder to accurately simulate latency and so on.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: imays</title>
		<link>http://assemblyrequired.crashworks.org/how-to-go-from-pc-to-crossplatform-development-qa/comment-page-1/#comment-20</link>
		<dc:creator>imays</dc:creator>
		<pubDate>Tue, 01 Apr 2008 23:31:54 +0000</pubDate>
		<guid isPermaLink="false">http://assemblyrequired.wordpress.com/?page_id=4#comment-20</guid>
		<description>Your slides mention virtual routers.  I&#039;ve googled it, however, I could not find any appropriate one. Would you let me know any? Thanks.</description>
		<content:encoded><![CDATA[<p>Your slides mention virtual routers.  I&#8217;ve googled it, however, I could not find any appropriate one. Would you let me know any? Thanks.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

