<?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: Networking for Physics Programmers</title>
	<atom:link href="http://gafferongames.com/2009/03/24/networking-for-physics-programmers-draft/feed/" rel="self" type="application/rss+xml" />
	<link>http://gafferongames.com/2009/03/24/networking-for-physics-programmers-draft/</link>
	<description>Glenn Fiedler&#039;s Game Development Articles and Tutorials</description>
	<lastBuildDate>Tue, 20 Mar 2012 18:51:49 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Glenn Fiedler</title>
		<link>http://gafferongames.com/2009/03/24/networking-for-physics-programmers-draft/#comment-1088</link>
		<dc:creator>Glenn Fiedler</dc:creator>
		<pubDate>Wed, 25 Mar 2009 20:59:28 +0000</pubDate>
		<guid isPermaLink="false">http://gafferongames.com/?p=800#comment-1088</guid>
		<description>OK liam so sorry i missed your first comment somehow. you are right about all you say, I just simplified things to give people a very simple overview of the problem.

So this is why I told a white lie and said 64kbit/sec is 256 byte packets 30 times a second. It&#039;s a nice round number. In truth this *is* slightly more than 64kbit/sec, so in reality you need packets that are a bit smaller. To cope with this what I do instead is drop to 10pps under bad network conditions. This way I&#039;m hitting a half-decent bandwidth (nearish to 64kbit/sec) but then I drop to something around ~20kbit/sec when network conditions are poor.

Regarding the other points, the topic of the lecture was a very limited subset of the problem of networking physics. I only covered how to VIEW a physics simulation on a remote computer, no mention of topology, client side prediction, latency compensation, and all that - I wanted to keep it simple so people could get started with it.

There is definitely a whole other series of lectures where I cover the points you mentioned...

In fact, my friday lecture will touch on all of them - this is where I show the generalization of this technique to 4 players in peer-to-peer topology.

That&#039;s all I have to say for now, I have to get back to work on the demo for friday

Thanks for your valuable feedback as always!</description>
		<content:encoded><![CDATA[<p>OK liam so sorry i missed your first comment somehow. you are right about all you say, I just simplified things to give people a very simple overview of the problem.</p>
<p>So this is why I told a white lie and said 64kbit/sec is 256 byte packets 30 times a second. It&#8217;s a nice round number. In truth this *is* slightly more than 64kbit/sec, so in reality you need packets that are a bit smaller. To cope with this what I do instead is drop to 10pps under bad network conditions. This way I&#8217;m hitting a half-decent bandwidth (nearish to 64kbit/sec) but then I drop to something around ~20kbit/sec when network conditions are poor.</p>
<p>Regarding the other points, the topic of the lecture was a very limited subset of the problem of networking physics. I only covered how to VIEW a physics simulation on a remote computer, no mention of topology, client side prediction, latency compensation, and all that &#8211; I wanted to keep it simple so people could get started with it.</p>
<p>There is definitely a whole other series of lectures where I cover the points you mentioned&#8230;</p>
<p>In fact, my friday lecture will touch on all of them &#8211; this is where I show the generalization of this technique to 4 players in peer-to-peer topology.</p>
<p>That&#8217;s all I have to say for now, I have to get back to work on the demo for friday</p>
<p>Thanks for your valuable feedback as always!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Glenn Fiedler</title>
		<link>http://gafferongames.com/2009/03/24/networking-for-physics-programmers-draft/#comment-1087</link>
		<dc:creator>Glenn Fiedler</dc:creator>
		<pubDate>Wed, 25 Mar 2009 04:20:12 +0000</pubDate>
		<guid isPermaLink="false">http://gafferongames.com/?p=800#comment-1087</guid>
		<description>Yeah bytes are so scarce we think in bits instead</description>
		<content:encoded><![CDATA[<p>Yeah bytes are so scarce we think in bits instead</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pawel Stopinski</title>
		<link>http://gafferongames.com/2009/03/24/networking-for-physics-programmers-draft/#comment-1086</link>
		<dc:creator>Pawel Stopinski</dc:creator>
		<pubDate>Tue, 24 Mar 2009 22:41:06 +0000</pubDate>
		<guid isPermaLink="false">http://gafferongames.com/?p=800#comment-1086</guid>
		<description>That&#039;s what I was afraid of (this confusing convention being actually used by network programmers :P). Thanks anyway for the answer!</description>
		<content:encoded><![CDATA[<p>That&#8217;s what I was afraid of (this confusing convention being actually used by network programmers <img src='http://gafferongames.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ). Thanks anyway for the answer!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Glenn Fiedler</title>
		<link>http://gafferongames.com/2009/03/24/networking-for-physics-programmers-draft/#comment-1085</link>
		<dc:creator>Glenn Fiedler</dc:creator>
		<pubDate>Tue, 24 Mar 2009 18:32:38 +0000</pubDate>
		<guid isPermaLink="false">http://gafferongames.com/?p=800#comment-1085</guid>
		<description>kbits/sec is (I think) standard for networking, xbox360 TCRs are specified in it - that&#039;s where I learned it, so that&#039;s what I use

cheers</description>
		<content:encoded><![CDATA[<p>kbits/sec is (I think) standard for networking, xbox360 TCRs are specified in it &#8211; that&#8217;s where I learned it, so that&#8217;s what I use</p>
<p>cheers</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pawel Stopinski</title>
		<link>http://gafferongames.com/2009/03/24/networking-for-physics-programmers-draft/#comment-1084</link>
		<dc:creator>Pawel Stopinski</dc:creator>
		<pubDate>Tue, 24 Mar 2009 18:21:04 +0000</pubDate>
		<guid isPermaLink="false">http://gafferongames.com/?p=800#comment-1084</guid>
		<description>Maybe not the biggest issue in a world but I wonder why do you use kbits/sec instead of kbytes/sec? I understand why ISPs  are doing that (so they can show 8 times bigger numbers in advertisements, and that annoys me so much), but what&#039;s your excuse? :P
Even if one uses for example a compression &quot;thinking in bits&quot; (Huffman), it&#039;s still stored and send in bytes. Is there a reason in networking to talk about sending bits, other than that&#039;s how ISPs show connection speed?</description>
		<content:encoded><![CDATA[<p>Maybe not the biggest issue in a world but I wonder why do you use kbits/sec instead of kbytes/sec? I understand why ISPs  are doing that (so they can show 8 times bigger numbers in advertisements, and that annoys me so much), but what&#8217;s your excuse? <img src='http://gafferongames.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /><br />
Even if one uses for example a compression &#8220;thinking in bits&#8221; (Huffman), it&#8217;s still stored and send in bytes. Is there a reason in networking to talk about sending bits, other than that&#8217;s how ISPs show connection speed?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Glenn Fiedler</title>
		<link>http://gafferongames.com/2009/03/24/networking-for-physics-programmers-draft/#comment-1083</link>
		<dc:creator>Glenn Fiedler</dc:creator>
		<pubDate>Tue, 24 Mar 2009 17:55:55 +0000</pubDate>
		<guid isPermaLink="false">http://gafferongames.com/?p=800#comment-1083</guid>
		<description>yes i will briefly touch on authority scheme and how it works, then finish the talk with a Q&amp;A session - i will show this in the demo, without slides

you didn&#039;t like the pipes joke? waaaaaaah :)</description>
		<content:encoded><![CDATA[<p>yes i will briefly touch on authority scheme and how it works, then finish the talk with a Q&amp;A session &#8211; i will show this in the demo, without slides</p>
<p>you didn&#8217;t like the pipes joke? waaaaaaah <img src='http://gafferongames.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gizard</title>
		<link>http://gafferongames.com/2009/03/24/networking-for-physics-programmers-draft/#comment-1082</link>
		<dc:creator>gizard</dc:creator>
		<pubDate>Tue, 24 Mar 2009 15:28:52 +0000</pubDate>
		<guid isPermaLink="false">http://gafferongames.com/?p=800#comment-1082</guid>
		<description>Maybe you could talk about the problem to solve interactions (collisions) between rigid bodies in different timelines, or better said, under different authorities. I think that&#039;s a very exciting thing for physics guys who love tech demos with brick stacks melting down, and bouncing balls runing down a valley :)

...Too much pipes.</description>
		<content:encoded><![CDATA[<p>Maybe you could talk about the problem to solve interactions (collisions) between rigid bodies in different timelines, or better said, under different authorities. I think that&#8217;s a very exciting thing for physics guys who love tech demos with brick stacks melting down, and bouncing balls runing down a valley <img src='http://gafferongames.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8230;Too much pipes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Glenn Fiedler</title>
		<link>http://gafferongames.com/2009/03/24/networking-for-physics-programmers-draft/#comment-1081</link>
		<dc:creator>Glenn Fiedler</dc:creator>
		<pubDate>Tue, 24 Mar 2009 15:01:21 +0000</pubDate>
		<guid isPermaLink="false">http://gafferongames.com/?p=800#comment-1081</guid>
		<description>yeah i think i&#039;ll add something on that - maybe a quick section on topology after the UDP/TCP/IP comparison

what i&#039;m going to do is explain initially in the context of just two computers, so it&#039;s kind of moot --- but i will have to touch on authority issues, client/server vs. distributed peer-to-peer

my goal here is to show folks how to send their physics state over the network, do smoothing and extrapolation - then leave them with resources that explain further client side prediction, authority scheme, and my networking articles - so people can go read more and network their own sims

but yeah, i TOTALLY glossed over topology, so i&#039;ll add that :)

thanks liam</description>
		<content:encoded><![CDATA[<p>yeah i think i&#8217;ll add something on that &#8211; maybe a quick section on topology after the UDP/TCP/IP comparison</p>
<p>what i&#8217;m going to do is explain initially in the context of just two computers, so it&#8217;s kind of moot &#8212; but i will have to touch on authority issues, client/server vs. distributed peer-to-peer</p>
<p>my goal here is to show folks how to send their physics state over the network, do smoothing and extrapolation &#8211; then leave them with resources that explain further client side prediction, authority scheme, and my networking articles &#8211; so people can go read more and network their own sims</p>
<p>but yeah, i TOTALLY glossed over topology, so i&#8217;ll add that <img src='http://gafferongames.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>thanks liam</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Liam</title>
		<link>http://gafferongames.com/2009/03/24/networking-for-physics-programmers-draft/#comment-1080</link>
		<dc:creator>Liam</dc:creator>
		<pubDate>Tue, 24 Mar 2009 11:48:38 +0000</pubDate>
		<guid isPermaLink="false">http://gafferongames.com/?p=800#comment-1080</guid>
		<description>Just some quick thoughts.
Is this for a peer to peer model or client server model?
You do not seem to mention UDP frames overhead which adds to the upstream rate.
I am a little confused with your diagram of a packet, does this imply that input is sent even if the server is the sender?
Your maths seems wrong (or mine)64kBit is not 256 at a rate of 30 per second.
256*8*30 = 61440 bits per second
28*8*30 =6720 bits per second UDP overhead.
Users connections :
Reducing send rate for bad connections when packet loss above a threshold or the ping becomes high.
99 percentile is 8kbs - Bungie studios research.
Delta compression: is this used to snap an object or is this how position etc are send, as this may require knowledge of a packet which never arrived and was not reliable therefore not resent.
Compression: I assume you are going to talk about packing floats into uint16&#039;s ie within a range?
When an object is close to the user sending high precession updates instead of compressed?
Client side reaction to events before server has authorised like your steering example?

I need some work doing in the bathroom do you have any more of the pipes :)</description>
		<content:encoded><![CDATA[<p>Just some quick thoughts.<br />
Is this for a peer to peer model or client server model?<br />
You do not seem to mention UDP frames overhead which adds to the upstream rate.<br />
I am a little confused with your diagram of a packet, does this imply that input is sent even if the server is the sender?<br />
Your maths seems wrong (or mine)64kBit is not 256 at a rate of 30 per second.<br />
256*8*30 = 61440 bits per second<br />
28*8*30 =6720 bits per second UDP overhead.<br />
Users connections :<br />
Reducing send rate for bad connections when packet loss above a threshold or the ping becomes high.<br />
99 percentile is 8kbs &#8211; Bungie studios research.<br />
Delta compression: is this used to snap an object or is this how position etc are send, as this may require knowledge of a packet which never arrived and was not reliable therefore not resent.<br />
Compression: I assume you are going to talk about packing floats into uint16&#8242;s ie within a range?<br />
When an object is close to the user sending high precession updates instead of compressed?<br />
Client side reaction to events before server has authorised like your steering example?</p>
<p>I need some work doing in the bathroom do you have any more of the pipes <img src='http://gafferongames.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic page generated in 0.538 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-03-22 22:16:24 -->

