<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>Insomniac Games - Latest R&amp;D</title>
	<atom:link href="http://www.insomniacgames.com//rss/rearch_dev/" rel="self" type="application/rss+xml" />
	<link>/rss/rearch_dev/</link>
	<description>Insomniac Research and Developement</description>
	<lastBuildDate>Sun, 14 Mar 2010 20:37:47 +0000</lastBuildDate>
	<language>en-us</language>

			<item>
			<title>Synchronizing Bots</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2010/1520939</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2010/1520939</guid>
			<pubDate>Wed, 03 Mar 2010 08:00:00 +0000</pubDate>
			<description>Here&#38;rsquo;s an introduction to a method for synchronizing AI in multiplayer games.  It addresses an implementation that uses the Sync Host system that was described in the previous presentation as well as outlining the methods it uses to synchronize the many different aspects of AI.  You&#38;rsquo;ll find details on the rationale behind why systems are synchronized in the way that they are, as well as the problems and solutions programmers have to keep in mind when using this method of synchronization
&#38;nbsp;</description>
		</item>
			<item>
			<title>Introduction to Sync Host</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2010/1520338</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2010/1520338</guid>
			<pubDate>Thu, 25 Feb 2010 08:00:00 +0000</pubDate>
			<description>Online functionality has become a fundamental component of our games.  This is an introduction to Sync Host, a system developed to address some of the tougher issues we&#38;rsquo;ve encountered when implementing network synchronization.
&#38;nbsp;</description>
		</item>
			<item>
			<title>An Algorithm for Lockless Processing of Sound Data</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2010/1513818</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2010/1513818</guid>
			<pubDate>Wed, 06 Jan 2010 05:00:00 +0000</pubDate>
			<description>An algorithm has been developed to asynchronously load, unload, play and relocate sound files without the use of locks. The algorithm allows the programmer to arbitrarily assign different logical subsections of the underlying system to different threads, all while remaining completely lock-free.
&#38;nbsp;
An example implementation has been developed that asynchronously loads and unloads sound files in one thread while playing and relocating the same sound files in another thread. All of this happens in a single shared memory heap, all without locking. A complete working version of this system will be described, highlighting the simple yet elegant design principles.</description>
		</item>
			<item>
			<title>Wavelets for the Layman</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2010/1513819</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2010/1513819</guid>
			<pubDate>Wed, 06 Jan 2010 05:00:00 +0000</pubDate>
			<description>Here&#39;s an internal presentation I gave just about a year ago on using wavelets for image compression. A nice and gentle introduction to a subject that&#39;s really pretty simple that is often buried under so many details that people don&#39;t know how to approach learning it.</description>
		</item>
			<item>
			<title>Color Spaces and You</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2009/1500796</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2009/1500796</guid>
			<pubDate>Fri, 23 Oct 2009 04:00:00 +0000</pubDate>
			<description>A basic introduction to the concept of a colorspace for artists, programmers, and anyone who&#39;s just curious about the meaning of terms like &#38;quot;sRGB, &#38;quot;gamma,&#38;quot; and &#38;quot;color profile.&#38;quot;  Talks about where colorspaces come from, what they look like, and why you might need to think about them.</description>
		</item>
			<item>
			<title>Three New Systems of Dynamic Components</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2009/1500757</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2009/1500757</guid>
			<pubDate>Mon, 21 Sep 2009 04:00:00 +0000</pubDate>
			<description>The Dynamic Component System is now firmly established in our gameplay architecture.  We&#38;rsquo;ve realized substantial benefits in workflow and performance from implementing gameplay as Dynamic Components.  In this presentation, I provide a brief introduction to a few gameplay systems of Dynamic Components.</description>
		</item>
			<item>
			<title>Down the concurrency rabbit hole</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2009/1500943</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2009/1500943</guid>
			<pubDate>Sat, 15 Aug 2009 04:00:00 +0000</pubDate>
			<description>This presentation was an introduction to solving concurrency problems. In particular it was about breaking down previously held beliefs and approaches that in fact make multi-threading and multi-core problem solving seem much more difficult than it actually is. The key is understanding that concurrency is not a code problem, it&#39;s a data problem. It always comes back down to the data. I used a doubly-linked list as a reference point in this presentation in order to demonstrate that the &#38;quot;classic&#38;quot; data structures are actually &#38;quot;sequential&#38;quot; data structures and that by looking at concurrency problems from a data design point of view you&#39;ll find that those data structures in general, and doubly-linked lists in particular are *not* concurrent data structures. Certainly you can make them work, as many people have, but you&#39;re forcing an inherently sequential data design into a concurrent system and you&#39;re going to be paying a price in terms of both added complexity and performance loss. These slides are hopefully readable on their own. So enjoy! And remember we&#39;re always happy to get feedback.</description>
		</item>
			<item>
			<title>GDC09 - SPU Wrangling</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2009/1500942</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2009/1500942</guid>
			<pubDate>Fri, 14 Aug 2009 04:00:00 +0000</pubDate>
			<description>Here&#39;s a GDC presentation outlining our SPU job-manager and some tried-and-tested SPU debugging practices - it touches on details such as job-layout, the job-building process and some of the debugging assistance it provides - it concludes by walking through two debugging case-studies from Resistance 2.</description>
		</item>
			<item>
			<title>Resistance 2 Water Rendering</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2009/1500769</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2009/1500769</guid>
			<pubDate>Fri, 10 Apr 2009 04:00:00 +0000</pubDate>
			<description>Fundamentally, the system simulates waves propagating across a planar surface. Each component wave is a sinusoid, and a detailed height field is generated by summing many such waves. The Fast Fourier Transform (FFT) provides an efficient way to perform the accumulation of the waves. For general background in this technique, see the classic paper by Tessendorf. The paper describes the method used for creating ocean water in the film &#38;lsquo;Titanic&#38;rsquo;, where the offline generation of images provides the luxury of using very large arrays in the FFT calculations &#38;ndash; 2048 &#38;times; 2048 grid points, with a grid resolution of 3cm. In real-time applications though, it quickly becomes apparent that the size of FFT array must be severely restricted. Consider also the need to render views in which details smaller than 3cm are visible. Our solution is to combine detail at many different scales. We employ only 32 &#38;times; 32 FFTs, but many such height fields are summed from long wavelengths down to short wavelengths as required by each particular viewpoint. This is not unlike rendering fractal terrain, the major difference being that in the case of water the detail added at each level of detail (LOD) must be animated in a particular way.
&#38;nbsp;
We decided early on to devote much of the development budget to the modelling of interactive waves &#38;ndash; waves emitted by local disturbances such as the impact of a projectile or a character wading through the water. The result is that while we feel the system is still lacking in certain features, we believe it demonstrates a technological first in games: interactive waves with the property of dispersion (a physically-based dependency between wavelength and wave velocity).
&#38;nbsp;

    Full details: water.pdf
    Source code (via Nocturnal Initiative):&#38;nbsp;Nocturnal_igR2O_1.0.zip
</description>
		</item>
			<item>
			<title>GTC09 - How a Physics Solver Works</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2009/1500846</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2009/1500846</guid>
			<pubDate>Fri, 10 Apr 2009 04:00:00 +0000</pubDate>
			<description>This year I spoke at GTC about how a physics solver works. My intention was to provide a simple run-through of rigid bodies, constraints, and how they are used to pre-condition a solution. The presentation is meant to be comprehensive for everyone, so regardless of math background the information should be relatively easy to grasp. My hope is that this presentation will demystify how core solvers work. As a supplement to the presentation, I&#38;rsquo;ve provided source code for a simple 3D constraint solver which you can find on our nocturnal site. I encourage you to download the source code and experiment with it. I&#38;rsquo;d also like to point out that the solver does not have to be used for physics, as illustrated in my presentation.
&#38;nbsp;

    Source code (via Noctural Initiative):&#38;nbsp;Nocturnal_SolverExample_1.0.zip
    Presentation: Physics_GTC_2009.pdf

&#38;nbsp;</description>
		</item>
			<item>
			<title>GDC09 - Gameplay Systems on the SPU</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2009/1500921</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2009/1500921</guid>
			<pubDate>Fri, 10 Apr 2009 04:00:00 +0000</pubDate>
			<description>This presentation, given as part of the Insomniac tutorial at GDC 2009, describes some of the systems and conventions used to support gameplay code on the SPUs.</description>
		</item>
			<item>
			<title>GDC09 - Resistance 2 Prelighting</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2009/1500923</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2009/1500923</guid>
			<pubDate>Fri, 10 Apr 2009 04:00:00 +0000</pubDate>
			<description>Resistance 2 had a big dynamic lighting overhaul from previous Insomniac titles. Here Mark Lee describes the new lighting and shadowing schemes used and touches on some of the implementation gotchas.</description>
		</item>
			<item>
			<title>GDC09 - Insomniac Physics</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2009/1500924</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2009/1500924</guid>
			<pubDate>Fri, 10 Apr 2009 04:00:00 +0000</pubDate>
			<description>This year I had the opportunity to be part of Insomniac&#38;rsquo;s all day tutorial for GDC. I gave a presentation on Insomniac&#38;rsquo;s proprietary physics system, describing the evolution of its pipeline from inception to current day. In this presentation I explain the importance of optimizing a system for the SPU via shaders (isolated code fragments) and library shaders, as well as explaining the importance of good data design for optimal concurrency.
&#38;nbsp;</description>
		</item>
			<item>
			<title>Normal Maps and Cube Maps For Everyone</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2008/1500931</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2008/1500931</guid>
			<pubDate>Wed, 19 Nov 2008 05:00:00 +0000</pubDate>
			<description>Continuing our For Everyone series. Chester Hsieh (Associate Engine Programmer) had a go at describing how normal and cube maps work to the general studio population. This presentation is for the curious that might want to know a bit more about the math and logic behind these very common texture maps.</description>
		</item>
			<item>
			<title>Online Co-op Bot Synchronization</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2008/1500933</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2008/1500933</guid>
			<pubDate>Wed, 19 Nov 2008 05:00:00 +0000</pubDate>
			<description>Heather Barclay (Multiplayer Lead Programmer) gave an introduction to the programming team on our approach to synchronizing the network data for Resistance 2 Co-op mode. For those of you playing the game now, you know how crazy these games can get, and yet everything stays pretty smooth (for the most part). Enjoy!</description>
		</item>
			<item>
			<title>Ratchet &#38; Clank Worldwide Studios Debrief</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2008/1500934</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2008/1500934</guid>
			<pubDate>Wed, 19 Nov 2008 05:00:00 +0000</pubDate>
			<description>In February, we gave a presentation to the Sony first-party studios on how we progressed during the development of Ratchet and Clank Future: Tools of Technology. The purpose of these presentations is to share with other developers and to give hints to the things that improved our development process. And not just our engine or tools technology, but anything that we think might be helpful. I&#39;ve culled out a few slides due to NDA, as well as a couple that might have caused forum meltdowns. But otherwise, this should hopefully provide a good inside look into some of our processeses as well as the tech changes we made during RCF.</description>
		</item>
			<item>
			<title>Sound Formats for Everyone</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2008/1500926</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2008/1500926</guid>
			<pubDate>Wed, 02 Jul 2008 04:00:00 +0000</pubDate>
			<description>Driven by hardware design and media requirements, sound file formats are constantly changing. For example, on the PS3 we encode and decode an AD-PCM format for the majority of our sound sources during playback. On computers and portable music devices, most of you will listen to perceptually-coded, lossy, variable bit-rate MP3s. Those who still have CD players will listen to CDDA-encoded, signed 16-bit PCM sampled at 44.1 kHz. And sound designers will work mainly with chunked file formats like WAV and AIFF that give them flexibility in storage, playback and interoperability.
&#38;nbsp;
In this talk, David will demystify all the jargon. You won&#39;t walk away an audiophile, but you&#39;ll definitely understand the difference between a VAG, CD-based PCM and an MP3.
&#38;nbsp;
Who should check this out? Anyone with an interest in learning more about sound file formats.
&#38;nbsp;</description>
		</item>
			<item>
			<title>Dynamic Component System</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2008/1500927</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2008/1500927</guid>
			<pubDate>Wed, 02 Jul 2008 04:00:00 +0000</pubDate>
			<description>A year ago, we talked about a Gameplay Architecture for Performance, and since then, we&#38;rsquo;ve been hard at work putting our ideas into practice. The Dynamic Component System is our way of expressing gameplay in bite-size chunks that can be added to and removed from the game as needed. Dynamic components represent aspects of a game object or system&#38;rsquo;s behavior. They are allocated and deallocated on-demand from efficient memory pools, they&#38;rsquo;re hierarchical, and client code can query for an object&#38;rsquo;s component of a given type or a component that implements a given interface. Because of the way components are pooled, it is straightforward to run updates for a given component type in parallel with other component types, and on a different processor such as an SPU.</description>
		</item>
			<item>
			<title>Gameplay on SPUs</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2008/1500929</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2008/1500929</guid>
			<pubDate>Wed, 02 Jul 2008 04:00:00 +0000</pubDate>
			<description>What does a next-gen engine look like? Well, for one thing, it needs to take advantage of the multi-CPU architectures. Scalable systems don&#39;t just happen, they&#39;re designed that way. I was lucky enough to give a presentation at Sony Devcon 2008 about how the Cell (and multi-core architectures generally) need to influence the design of gameplay systems. Designing your gameplay to work with deferred systems is an important step to scaling your performance with future platforms. I hope that this illustrates some of the planning that should go into place to eliminate &#38;quot;gotchas&#38;quot; when writing your next-gen gameplay code.</description>
		</item>
			<item>
			<title>Optimization 101</title>
			<link>http://www.insomniacgames.com/research_dev/articles/2008/1500841</link>
			<guid>http://www.insomniacgames.com/research_dev/articles/2008/1500841</guid>
			<pubDate>Sat, 26 Apr 2008 04:00:00 +0000</pubDate>
			<description>Usually in presentations, what we (or anyone else really) usually give to the audience are answers (hopefully!) to some interesting problem. Especially when it comes to optimization techniques. It seemed to me there was a big gap there - certainly a lot of people can simply use the answers to make their code/game/application faster, but how do they get better at solving these problems themselves? Usually the answer is simply, &#38;quot;with experience.&#38;quot;
&#38;nbsp;
But maybe there&#39;s more we can do. In this talk, I wanted to focus on the PROCESS that I (personally) went through to optimize a particular function. Including all the little mis-steps and shortcuts I took along the way. The hope was that people would find that the process itself isn&#39;t something magical and it&#39;s something that can be learnt.
&#38;nbsp;
Although there are some people *cough*John Edwards*cough* that might tell you make sure you get another opinion on your optimization advice. ;)</description>
		</item>
	
</channel>
</rss>