<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>gafferongames.com &#187; Uncategorized</title>
	<atom:link href="http://gafferongames.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://gafferongames.com</link>
	<description>Glenn Fiedler&#039;s Game Development Articles and Tutorials</description>
	<lastBuildDate>Fri, 09 Dec 2011 19:24:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Networking for Game Programmers</title>
		<link>http://gafferongames.com/2009/01/15/networking-for-game-programmers/</link>
		<comments>http://gafferongames.com/2009/01/15/networking-for-game-programmers/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 04:29:27 +0000</pubDate>
		<dc:creator>Glenn Fiedler</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gafferongames.wordpress.com/?p=657</guid>
		<description><![CDATA[Ever wondered how multiplayer games are coded? I&#8217;m a professional multiplayer game programmer, and I do this stuff every day. Honestly, it&#8217;s not really that hard, provided you know the basic techniques. Problem is it&#8217;s difficult to find good information about game networking, and there is a lot of harmful info out there written by [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Ever wondered how multiplayer games are coded?</p>
<p>I&#8217;m a professional multiplayer game programmer, and I do this stuff <u>every day</u>. Honestly, it&#8217;s not really that hard, provided you know the basic techniques. Problem is it&#8217;s difficult to find good information about game networking, and there is a lot of harmful info out there written by n00bs that will lead you astray.</p>
<p>So a few month ago, during my time off after shipping Mercs2, I started work on a series of articles called <a href="http://www.gaffer.org/networking-for-game-programmers/">Networking for Game Programmers</a>.</p>
<p>So far I have four pretty decent articles, with several more to come when I get the time to work on them. Ideally, over time I&#8217;d like to work all the way up from low-level networking to high-level, you know moving beyond the simple tutorials out there like &#8220;how to create a socket&#8221; (blergh)&#8230; How about, <a href="http://www.gaffer.org/networking-for-game-programmers/reliability-and-flow-control">how to implement your own reliability and flow control on top of UDP</a> &#8211; that&#8217;s more like it!</p>
<p>So if you are interested in game networking, and sick of reading about the basic stuff, why don&#8217;t you man up and <a href="http://www.gaffer.org/networking-for-game-programmers/udp-vs-tcp">have a read</a>, just be sure to let me know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://gafferongames.com/2009/01/15/networking-for-game-programmers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GDC 2009 Talks Accepted!</title>
		<link>http://gafferongames.com/2008/12/12/gdc-2009-talks-accepted/</link>
		<comments>http://gafferongames.com/2008/12/12/gdc-2009-talks-accepted/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 17:23:44 +0000</pubDate>
		<dc:creator>Glenn Fiedler</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gafferongames.wordpress.com/?p=627</guid>
		<description><![CDATA[I have two talks accepted at GDC 2009: Networking for Physics Programmers Drop-In COOP for Open World Games The first talk is part of the physics tutorial day, covering networking basics (UDP vs. TCP), reliability and flow control, building a node mesh &#8211; then moving on to how to synchronize a physics simulation, interpolation/extrapolation, client [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I have two talks accepted at GDC 2009:</p>
<ul>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8531">Networking for Physics Programmers</a></li>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8645">Drop-In COOP for Open World Games</a></li>
</ul>
<p>The first talk is part of the physics tutorial day, covering networking basics (UDP vs. TCP), reliability and flow control, building a node mesh &#8211; then moving on to how to synchronize a physics simulation, interpolation/extrapolation, client side prediction and authority management. The end result, hey look! a fully networked Havok simulation that plays well even under terrible internet conditions.</p>
<p>The second talk is the cutting edge of my personal research&#8230;</p>
<p>Here is the quick overview:</p>
<blockquote><p>Open world games typically have high per-player simulation, streaming and memory costs, making them exceptionally difficult to network with a traditional client/server approach. This session presents an alternative peer-to-peer networking architecture that avoids this O(n) cost, while supporting seamless drop-in and drop-out play.</p>
<p>Topics covered include how to structure your game and networking systems when networking a large streaming world, how to synchronize a physics simulation so players feel no latency in their interactions with the game world, and how to synchronize mission progress when players can drop-in and drop-out of the game at any time.
</p></blockquote>
<p>Let me break that down a bit&#8230;</p>
<p>Basically, the challenge is you have a large streaming world game with physics simulation, and you want to network this. Problem is you have a very high per-player cost: CPU for physics, streaming for your open world, memory overhead. Assuming your players can each move freely around your large open world, this cost grows at O(n).</p>
<p>So if you just network your game using a traditional client/server model, suddenly you have this per-player cost on the server, and you find that you either have to reduce game quality by 1/n, tether your players together (the suck), or both &#8211; *OR* you end paying a shit-ton of money to host dedicated servers&#8230;</p>
<p>This talk is all about how to <u>break</u> this O(n) cost by distributing it across all players in the game using a new peer-to-peer architecture. Basically, it generalizes the authority management technique I developed in last year&#8217;s GDC talk: &#8220;Mercenaries 2: Networked Physics in a Large Streaming World&#8221; into a new way to distribute simulation, streaming and memory costs across all nodes. As a bonus it gives you host migration for free, because <u>there is no host</u>.</p>
<p>I also share a cool technique for synchronizing mission progress that is super-robust and makes it possible to support drop-in/drop-out COOP with a complicated mission structure, as well as the usual physics synchronization tricks from my networking lectures. Yes there will be a demo with cubes at some point &#8230; a large streaming world of cubes! <img src='http://gafferongames.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>OK so enough about my talks&#8230;</p>
<p>Looking through the other talks, it seems to me that we have a <u>very</u> strong programming track at GDC next year.</p>
<p>Here are some of the talks I&#8217;m really excited about:</p>
<ul>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8544">The Light Pre-Pass Renderer &#8211; Renderer Design for Multiple Lights</a></li>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8543">Insomniac Games&#8217;s Secrets of Console and Playstation 3 Programming</a></li>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8550">Lockless Programming in Games</a></li>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8546">Massive Software Complexity</a></li>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8539">Mixed-Resolution Rendering</a></li>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8549">Momentum vs. Character Animation</a></li>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8540">Out of Order: Making In-Order Processors Play Nicely</a></li>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8533">Real-Time Deformation and Fracture &#8211; Finite Element Simulation and its Use in STAR WARS: THE FORCE UNLEASHED</a></li>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8534">Real-Time Water Dynamics: Practical Rendering of Fluid Simulations</a></li>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8638">Rendering Techniques in GEARS OF WAR 2</a></li>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8545">Robotic Testing to the Rescue</a></li>
<li><a href="https://www.cmpevents.com/GD09/a.asp?option=C&amp;V=11&amp;SessID=8530">Turbulent Fluid Motion for Particle Systems</a></li>
</ul>
<p>See you guys at GDC next year!</p>
]]></content:encoded>
			<wfw:commentRss>http://gafferongames.com/2008/12/12/gdc-2009-talks-accepted/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

