<?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>New Fun Blog - Scott Bilas &#187; conference</title>
	<atom:link href="http://scottbilas.com/blog/category/conference/feed/" rel="self" type="application/rss+xml" />
	<link>http://scottbilas.com</link>
	<description>Take what you want, and leave the rest (just like your salad bar).</description>
	<lastBuildDate>Sat, 17 Sep 2011 23:47:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Build Conference 2011: Wednesday</title>
		<link>http://scottbilas.com/blog/build-conference-2011-wednesday/</link>
		<comments>http://scottbilas.com/blog/build-conference-2011-wednesday/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 23:02:29 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[conference]]></category>
		<category><![CDATA[windows8]]></category>

		<guid isPermaLink="false">http://scottbilas.com/?p=568</guid>
		<description><![CDATA[[This is my notes from Wednesday. See Tuesday's Notes.]
Important: some of these are out of date and superceded by later notes I took after talking with Microsofties. I’ve tried to mark them as such where I remember with a [*].
Visual Studio 11
No release date of course, same as Win8. Feels like “definitely not this year”. [...]]]></description>
			<content:encoded><![CDATA[<p><em>[This is my notes from Wednesday. See </em><a href="http://scottbilas.com/blog/build-conference-2011-tuesday/"><em>Tuesday's Notes.</em></a><em>]</em></p>
<p><em>Important: some of these are out of date and superceded by later notes I took after talking with Microsofties. I’ve tried to mark them as such where I remember with a [*].</em></p>
<h2>Visual Studio 11</h2>
<p>No release date of course, same as Win8. Feels like “definitely not this year”. Did you all download the preview yet? It’s available for everybody. Win8 and the dev tools (VS11, Blend 5, etc.) are online.</p>
<p>Anyway, what’s new…</p>
<ul>
<li>After 10 years they finally updated the image editor. Now it supports transparency and DDS’s. </li>
<li>VS has an FBX viewer w/ property editor. Right in the IDE you can open a 3D model, select meshes, set properties like color and transform. </li>
<li>They put a lot of work into a new thing called DGSL that is your typical shader graph.</li>
<ul>
<li>Preview rendering at different stages of the pipeline, things like pins and wires connecting them to output a final render.</li>
<li>Good for the XNA crowd I guess? Seems like a distraction for the VS team. </li>
</ul>
<li>Pix is integrated into VS.</li>
<ul>
<li>You can debug a 3D app, take a frame grab, then in VS walk the drawprim calls backwards from a pixel. Get call stack per graphic event and all that.</li>
<li>Being integrated into VS means that this this will have a nice, consistent UI, yay.</li>
</ul>
<li>There is this great DOM Explorer (JS/HTML only)</li>
<ul>
<li>Reminds me a lot of the tools built into Firebug or Chrome’s dev mode, except it runs through VS.</li>
<li>Even on a server web app you can hover over a rendered web page and it will point you at the aspx line that generated it. </li>
</ul>
<li>Productivity Power Tools are part of VS now. You probably already know this. Well, perhaps they’ll fix some of its many bugs if it’s an in-box addon. </li>
<li>Nice random improvements to the VS UI like categories for Intellisense (“commonly used by you” vs. “all”) and minor new features in snippets.</li>
<ul>
<li>Maybe now R# will pick up this much-needed feature that VisualAssist has had for a while..</li>
</ul>
<li>Await/async is deeply supported in the debugger.</li>
<ul>
<li>Step through async code (like WinRT’s ShowDialogAsync) procedurally without needing to get confused by all the underlying thread context switches. I like. </li>
</ul>
<li>Tons of new unit testing support. Now is the time when I remind myself to look into unit testing again..</li>
<li>The Kernel Debugger can now run from inside of VS. Sure to come in handy next time you’re developing a device driver (har).</li>
<li>Static code analysis is now a plug-in architecture.</li>
<ul>
<li>He talked about, for example, the kernel mode driver validation static analysis tools that just show up as part of the compile.</li>
<li>Works on C++ or C# or whatever.</li>
<li>I expect we’ll see the same type of integration for FxCop/StyleCop</li>
</ul>
<li>Javascript in VS now has a REPL command pane, just like the browsers have had.</li>
<li>Full support for ECMAScript 5. I’m only familiar with 4, which added (I think) static typing. Well, fake static typing. Anyway, now we have 5! That’s 1.0 better than 4!</li>
<li>No word of improving E&amp;C like supporting altering a function containing a lambda..I’m going to ask them about this. <em>[* answer: no]</em></li>
<li>Ooh a nice new color picker for CSS. Probably for Xaml as well.</li>
<li>VS11 projects are going to be the same format as VS2010.</li>
<ul>
<li>No upgrade required, forward/backward compatible. That will make testing the beta on our stuff easier.</li>
</ul>
</ul>
<h2>WinRT (Windows Runtime – the Metro API)</h2>
<ul>
<li>“Language Projection” is what they’re calling the layer between the language and the kernel services. It maps a language onto the underlying API’s, reflection and type system (the metadata).</li>
<ul>
<li>They are dropping the least-common-denomenator “CLI” system and instead are mapping things as close as possible to the language you’re using.</li>
<li>Example: on an array returned by the core, C# uses “.Add()” to add an item, whereas Javascript uses “.append()”. I like this. Least common denominator probably wasn’t working out for them anyway because nobody really cared about making things VB-compatible when writing libraries in C#.</li>
<li>WinRT types are automatically adapted to the language. For example getting an array back from WinRT will come back to C# as an IList&lt;T&gt;, done through adaptors but not by making a new list (no copying). In C++ they have adaptors to get it into STL iterator form, etc.</li>
</ul>
<li>Async is embedded very deeply.</li>
<ul>
<li>Martyn said that in .NET when they provided a sync and an async version of the same function, people would just use the sync version and then get crap behavior and experience.</li>
<li>New stuff heavily encourages use of async, though not sure if that means the sync functions are unavailable <em>[* they are]</em>.</li>
</ul>
<li>New Windows Metadata format that is used sort of like the Reference Assemblies, sounds like, except this metadata IS the OS. Not libraries on top, but the actual Windows API’s.</li>
<ul>
<li>Format is based on .NET type system but extended to meet the new needs.</li>
<li>Metadata catalog is extensible (again, Metro apps only, for custom WinRT objects) but only privately. No publishing of shared assemblies. Not that they are using the word “assembly” any more…</li>
<li>Sharing across apps is done exclusively through “contracts”, which are part of the OS. If you want to communicate across apps it must be done through a preexisting contract, looks like.</li>
</ul>
<li>YAY! A new string type!!! This one is called HSTRING and is probably the 15th string type I’ll have used.</li>
<ul>
<li>It gets mapped onto whatever the local language thinks of as a string but sounds just like a .NET string – immutable, and so does not copied.</li>
</ul>
<li>WinRT is heavily interface driven, as is now common in the rest of the programming world</li>
<ul>
<li>IUnknown is now IInspectable. They said IUnknown confused people or something. Anyway, IInspectable -&gt; ISpecificInterface -&gt; ConcreteClass (runtime, private).</li>
<li>C++ binds statically as usual.</li>
<li>C#/VB binding is mostly static but also uses some runtime metadata (very cheap though)</li>
<li>JS/HTML binding is dynamic dispatch at runtime, works completely through metadata as you expect a dynamic language to operate</li>
</ul>
<li>Some MC++ changes, like “gcnew” is now “ref new”. <em>[* turns out this is not true. See later notes.]</em></li>
</ul>
<h2>Other</h2>
<ul>
<li>Lots and lots of stuff about Azure, which is pretty neat but I’ve heard is very expensive for large-scale use.</li>
<li>Pithy statement I just made up: “swipe is the new right click”.</li>
<li>TFS marches forward.</li>
<ul>
<li>The new stuff looks really cool, and I’d consider using their hosted TFS if I had a small studio. They even support scrum directly.</li>
</ul>
</ul>
<h2>Expo Floor Queries</h2>
<h3>WPF</h3>
<ul>
<li>What&#8217;s New in WPF Version 4.5 Developer Preview: <a href="http://msdn.microsoft.com/library/bb613588(v=VS.110).aspx">http://msdn.microsoft.com/library/bb613588(v=VS.110).aspx</a></li>
<li>WinRT is definitely Metro only.</li>
<ul>
<li>We cannot embed Metro in WPF, and vice versa (well we can, but they said it would be awful, dirty, and please run away).</li>
<li>Metro really is a completely independent sandbox that has little to do with Windows.</li>
<li><em>[* Some of the above is a lie, as I found out on Friday. WinRT is definitely useable outside of Metro. See later notes I’ll post.]</em></li>
</ul>
<li>Very little work has been done in WPF. It still exists! Visual Studio and the Expression suite are all WPF apps and will remain that way. But for 4.5 they focused exclusively on perf and stability. I suppose that’s ok.</li>
<li>I lost track of how many times I’d ask someone about desktop apps (WPF) and would get asked why we didn’t just “rewrite it all” for Metro. Ah, Microsoft, never change!</li>
</ul>
<h3>Blend/VS</h3>
<ul>
<li>The reason Silverlight has data-binding breakpoints is because the Silverlight team put the hooks in there independently and VS was able to use them.</li>
<ul>
<li>Until someone does that for non-SL Xaml (whether Metro or WPF) we will not have this functionality in VS.</li>
</ul>
<li>The reason JS/HTML has such freaking awesome debugging support (like interactive mode) is completely provided by the hooks already developed independently in IE over many years.</li>
<ul>
<li>Again, work that Blend/VS did not have to do.</li>
<li>So they’re waiting for debug hooks in Xaml frameworks, which may never appear. Complicated problem to solve and limited resources/initiative to do it.</li>
</ul>
<li>We should use DynamicResource and not StaticResource as a general rule.</li>
<li>They know that debugging resources sucks.</li>
<ul>
<li>They want to work on the problem. They aren’t working on the problem. They have no plans to do so.</li>
<li>They recommended using DynamicResource (again) and binary-search style commenting out stuff to narrow down problems. Yeah, so, nothing new here.</li>
</ul>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://scottbilas.com/blog/build-conference-2011-wednesday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Build Conference 2011: Tuesday</title>
		<link>http://scottbilas.com/blog/build-conference-2011-tuesday/</link>
		<comments>http://scottbilas.com/blog/build-conference-2011-tuesday/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 16:41:58 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[conference]]></category>
		<category><![CDATA[windows8]]></category>

		<guid isPermaLink="false">http://scottbilas.com/?p=565</guid>
		<description><![CDATA[I’ve been at Microsoft’s Build 2011 conference. Over the years I’ve gone to a handful of Microsoft conferences – Gamefest, Meltdown, Gamestock, Windows World (if you go waaay back). Mostly gaming related. Build is the merger of PDC and WinHEC, neither of which I had attended in the past. Unlike the gaming conferences I’ve been [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been at Microsoft’s Build 2011 conference. Over the years I’ve gone to a handful of Microsoft conferences – Gamefest, Meltdown, Gamestock, Windows World (if you go waaay back). Mostly gaming related. Build is the merger of PDC and WinHEC, neither of which I had attended in the past. Unlike the gaming conferences I’ve been to, Build has serious money behind it. It’s been incredibly well-managed.</p>
<p>I sent out notes about the conference to my team and figured I’d post them here as well in case it would be useful to anyone. Stripping out any Bungie-specific commentary that wouldn’t be generally applicable of course.</p>
<p><em>Important: some of these are out of date and superceded by later notes I took after talking with Microsofties. I’ve tried to mark them as such where I remember with a [*].</em></p>
<h2>Notes From Tuesday</h2>
<p>I’m writing these up while it’s still fresh in my head..</p>
<p>Two big takeaways for me:</p>
<ol>
<li><strong>Windows 8 will actually be really awesome. Seriously.</strong></li>
<li><strong>It won’t matter to production tools developers. Business as usual.</strong></li>
</ol>
<p>As a consumer, I am really looking forward to Windows 8. They did what needed to be done in order to live in the modern world: new API, breaking of backwards compatibility, heavy integration of touch and gestures, complete guidance provided for new design, large library and protocols for connecting apps together, support for web development on the desktop to bring in all those crazy kids, plus some really forward looking design&#8230;</p>
<p>But only for Metro – “the new stuff”. Windows 8 will run all the apps that 7 did, but there are now two classes: <span style="text-decoration: underline;">desktop apps</span> and <span style="text-decoration: underline;">Metro apps</span>. Desktop apps are 3DS Max, Photoshop, Word, Notepad, etc. Metro apps are 100% new. It is a brand new platform in just about every way. Really don’t even need to call it Windows.</p>
<p>Metro has clearly been the focus of Build and therefore Microsoft. So far today, the only thing I heard about ordinary desktop apps is that “they will still work great”. They all run within a context in Metro called “Desktop”, which is already seeming very antiquated, almost like Windows XP Mode was with Vista. Everything MS is talking about here is geared towards Metro. And it’s <em>seriously cool</em>. I look forward to switching all my home machines over to it, especially my girl’s Dell Duo. Win8 is fast, lean, and cool as hell.</p>
<p>So I don’t have much to report on the future of our platform: Win32/64 + WPF/.NET. I’ll be finding out what I can over the next three days.</p>
<p>I did take some notes, though. Here they are in no particular order:</p>
<p><em>Non-Metro:</em></p>
<ul>
<li>No mention of WPF all day. Not even whispered. Is WPF rolled into Silverlight? Is WPF on life support? What about frogs? No word yet.</li>
<li>New C++ standards compliant compiler is shipping with Visual Studio vNext. I saw the “auto” keyword being used for duck typing.</li>
<li>They kept making a big deal about performance as a top priority, over and over again. This is a pillar of Win8.
<ul>
<li>Perf is even more important than in Windows 7 due to touch support, because people are unwilling to put up with any latency whatsoever when using a touch interface. So look for a lot of async support integrated at all levels.</li>
</ul>
</li>
<li>Cider is <span style="text-decoration: underline;">gone</span>. Blend&#8217;s designer is now integrated into Visual Studio. Big yay. Always annoyed me that something would work in one place and not the other, or vice versa. (Now we can have things not work in both places, but at least it will be consistent.)</li>
<li>There’s a new debug view that lets you view parallel stacks of async/TPL tasks as well as the program flow through the tasks. I’m going to ask them if this can be applied to our own scheduling system (or if we should switch to Task in order to take advantage).</li>
<li>Looks like they upgraded the remote debugging, way easier to set up. Even have remote Javascript breakpoints. Definitely won’t need Firebug in this world.
<ul>
<li>There is even a DOM inspector for JS that works over remote debugging. Not only are the UI elements hot as you hover/touch them (like in Snoop or Chrome dev) but you can modify properties on the fly while debugging. Remotely! OMG!</li>
</ul>
</li>
<li>Blend has a crazyass new interactive mode where you can run the app inside of Blend, fully interactive, then pause it on the screen you want to modify and switch to design mode to update the Xaml. Sort of like play-in-editor. (Think Expanders or other state-dependent stuff..a bit of a pain to do right now.)</li>
</ul>
<p><em>Metro:</em></p>
<ul>
<li>XAML is coming to C++ which compiles down to native x86/ARM. Appears to be Managed C++ due to use of ^ ref modifier <em>[* nope]</em>. Makes sense. Don’t know how they’d make any of this work with pure C++.</li>
<li>Thankfully they’re not just copying Apple but fixing a lot of stupid UI problems on the iphonepodpad. My favorite is how they said that the modal rearranging of the home screen is crap and how folders bury things too far. Couldn’t agree more.
<ul>
<li>They are also expanding the “touch language” beyond existing standards of swipe-to-scroll and pinch-to-zoom/rotate. Selection, context bars, app switching..</li>
<li>Totally eliminating the “mouse-ish” stuff like holding down a touch to bring up the context right-click. All of those old Windows 4 Pen-isms are gone. This is why touch sucked on Win7/Vista and is finally usable on 8.</li>
<li><em>BTW if you have any time at all, be sure to watch Jensen Harris’s “big picture” talk from today (should be posted online sometime on Wednesday). I thought it was superb.</em></li>
</ul>
</li>
<li>Metro apps do not have access to Win32 api&#8217;s (such as MessageBox or anything in GDI)! &#8211; no overlapping windows etc
<ul>
<li>All graphics are done through DirectX only.</li>
<li>Metro apps are totally different. Don&#8217;t even have a message loop. <em>[* not true]</em></li>
</ul>
</li>
<li>I saw examples of the “await” and “async” keywords a lot in the demos. This is a key part of delivering high perf UI. Their expectation is that nothing is synchronous.</li>
<li>WinRT (windows runtime, the new API) appears to be a true new API and not just a forms/.net style wrapper.
<ul>
<li>This one appears designed well from the start! Takes advantage of modern design patterns and not held back by obsession with backwards compat.</li>
<li>They said several times that this is definitely not a “layer on top” (like how winforms wrapped up user32 etc.) but talks straight to the kernel. <em>[* mostly true]</em></li>
<li> Fully object-oriented, has reflection, even in C++.</li>
</ul>
</li>
<li>Async support features are implemented in all languages.
<ul>
<li>For example in Javascript, known as “promises”: mediaCapture.initializeAsync().<span style="background-color: #ffff00;">then</span>(function() {&#8230;}) type stuff.</li>
</ul>
</li>
<li>The javascript integration is pretty damn cool. Has data binding even. Hope this brings web devs in to make things for Win8 (obviously MS does too).</li>
<li>Can write native C++ to reference-in from javascript. They gave a demo of HLSL compute shader-based image processing lib written in C++ and used in Metro javascript app. Neato.</li>
<li>Single file .appx package for distro. Yay finally. No more installers! Turns out this is just a zip file too, like Java did with jars. Yay, no more proprietary package formats!</li>
<li>They have a very cool Metro simulator that runs your app through a fake local RDP session that makes it easy to test different rez / dpi / orientation without needing a VM or separate computer with the correct display.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://scottbilas.com/blog/build-conference-2011-tuesday/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tornado Outbreak + Wwise = Love</title>
		<link>http://scottbilas.com/blog/tornado-outbreak-wwise-love/</link>
		<comments>http://scottbilas.com/blog/tornado-outbreak-wwise-love/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 20:50:44 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[conference]]></category>
		<category><![CDATA[loose cannon studios]]></category>
		<category><![CDATA[wwise]]></category>

		<guid isPermaLink="false">http://scottbilas.com/?p=340</guid>
		<description><![CDATA[Well obviously it’s been really quiet here lately. A lot has been going on in my personal life, but the end is in sight. One of the things I’ve been doing is working on a talk for Audiokinetic for their 2009 Wwise Tour. I presented it over at Microsoft last week as part of a [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Tornado Outbreak" href="http://www.konami.com/games/tornado/"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px 10px; display: inline; border-top: 0px; border-right: 0px" title="Tornado Outbreak" border="0" alt="Tornado Outbreak" align="right" src="http://scottbilas.com/wp-content/uploads/2009/11/image.png" width="153" height="160" /></a>Well obviously it’s been really quiet here lately. A lot has been going on in my personal life, but the end is in sight. One of the things I’ve been doing is working on a talk for Audiokinetic for their 2009 Wwise Tour. I presented it over at Microsoft last week as part of a tag-team with Robert Ridihalgh of <a href="http://omniaudio.com/">OMNI Interactive</a> (he was the principle audio engineer on Tornado Outbreak).</p>
<p>Oh, did I forget to post on here that <a href="http://www.konami.com/games/tornado/">our game</a> shipped? Wow, I totally did! Well, we shipped in September on <a href="http://www.amazon.com/Tornado-Outbreak-Xbox-360/dp/B002BSA1WQ/ref=sr_1_1?ie=UTF8&amp;s=videogames&amp;qid=1258313834&amp;sr=8-1">360</a>, <a href="http://www.amazon.com/Tornado-Outbreak-Playstation-3/dp/B002BRZ6Z4/ref=sr_1_2?ie=UTF8&amp;s=videogames&amp;qid=1258313834&amp;sr=8-2">PS3</a>, and <a href="http://www.amazon.com/Tornado-Outbreak-Nintendo-Wii/dp/B002BS4JI8/ref=sr_1_3?ie=UTF8&amp;s=videogames&amp;qid=1258313834&amp;sr=8-3">Wii</a>. Become a <a href="http://www.facebook.com/#/pages/Tornado-Outbreak/295642410413?ref=search&amp;sid=735055878.316616379..1">fan</a> on Facebook!</p>
<p>The reviews have generally been in the B range, though Metacritic’s <a href="http://www.metacritic.com/search/process?sort=relevance&amp;termtype=all&amp;ts=tornado+outbreak&amp;ty=0&amp;button=search">average</a> is a little depressing at ~70. Nearly every review uses the words “Katamari” and “clone” which makes me think they didn’t really give the game a chance. The similarities with Katamari begin and end at the concept of “grow bigger”. Might as well call Call of Duty a Doom clone because they both involve shooting things to get to the end of the level.</p>
<p>But whatever… I’m proud of our effort, and I think it’s a super fun game. Hell of a job for a small team with a tech base built from scratch, to ship on time and on budget on three platforms.</p>
<h2></h2>
</p>
</p>
<h2><a href="http://scottbilas.com/wp-content/uploads/2009/11/image1.png"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://scottbilas.com/wp-content/uploads/2009/11/image_thumb.png" width="91" height="120" /></a> Wwise Tour</h2>
<p>One of the reasons we were able to ship on time was <a href="http://www.audiokinetic.com">Audiokinetic’s</a> <a href="http://www.audiokinetic.com/4105/wwise-introduction.asp">Wwise</a>. I’ve been evangelizing this excellent sound engine to everybody I meet. I just can’t say enough good things about our friends up in Montreal. I’d use Wwise on every future game if I could.</p>
<p>On Tornado Outbreak, I did most of the engineering and the initial audio rig design and prototyping. Robert and his team did the actual audio work, and took over management of the Wwise project. They probably did 95% of the audio related work on the project, which is awesome! As everybody knows, engineers are really slow and are pulled in 20 directions at once, so the more I could step out of the way, the better.</p>
<p>Audiokinetic asked me to put together a talk for the <a href="http://www.audiokinetic.com/4105/events.asp">tour</a> they’re doing right now to promote the product, particularly the new features they’ve been adding. I invited Robert to join me and we presented the two halves of our audio solution for Tornado Outbreak. We split the presentation roughly along the lines of our responsibilities.</p>
<p>The event was recorded, so at some point we may see video clips showing up online. That will be necessary to get Robert’s part of the talk, because he was exclusively walking through the Wwise project, using elements of it to tell his story. So no slides, you’ll have to get the video if it comes out. Anyone using or considering Wwise should try to get a hold of that – his talk was really interesting and includes some great tricks on saving memory without sacrificing variety.</p>
<p>Now, all I know how to do is present slides, so here they are! Tornado Outbreak + Wwise = Love [<a href="http://scottbilas.com/files/2009/wwise_tour/wwise_tornado_love.pptx">PPT 2.5M</a>] [<a href="http://scottbilas.com/files/2009/wwise_tour/wwise_tornado_love.pdf">PDF 1.4M</a>].</p>
<h3></h3>
<h3>Our Project</h3>
<p>I also got approval from the bosses to release the Tornado Outbreak project file for Wwise. This is really generous of them to agree! Here it is. [<a href="http://scottbilas.com/files/2009/wwise_tour/tornado_outbreak_audio.zip">ZIP 1M</a>]</p>
<p>Note that this doesn’t include any content (wav files) but is only the project itself. That should be plenty though.</p>
<p>The point of releasing the project is to help out other studios who are integrating Wwise, in hopes that the favor will be returned. Everybody benefits from information sharing like this. With Wwise, in order to get a good rig set up you really need to have experience and good examples to draw from. As I say in my presentation, <em>Wwise is different</em>. Every other SDK out there is a “play samples + DSP” library. Getting the Wwise rig right is hard, and it’s not going to be right the first time. Just as if you were to build a Maya rig and had no experience with it before. You’ll screw it up for sure.</p>
<p>Audiokinetic provides some synthetic examples to help get started, but it’s not from a real, shipping game, and besides, every game is different. Tornado Outbreak has an enormous amount of unique objects that produce audio (over 400) and all those crashes and shakes and panics can become very difficult to manage. It would have saved a lot of time if, when I started building the initial rig, I had some examples to draw from. To that end, we’re releasing our particular solution for this situation. I hope that it inspires even better solutions and ideas on how to tackle these kinds of problems in the future.</p>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://scottbilas.com/blog/tornado-outbreak-wwise-love/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Game Camp videos posted to YouTube</title>
		<link>http://scottbilas.com/blog/game-camp-videos-posted-to-youtube/</link>
		<comments>http://scottbilas.com/blog/game-camp-videos-posted-to-youtube/#comments</comments>
		<pubDate>Sat, 11 Oct 2008 20:39:33 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[conference]]></category>

		<guid isPermaLink="false">http://scottbilas.wordpress.com/?p=55</guid>
		<description><![CDATA[The videos from the Game Camp sessions are now posted on YouTube.
Special note: I was slightly drunk when I gave my second talk (optimizing the dev process), and moderately drunk by the time the panel started. Not my fault! People kept buying me drinks! Maybe that biased me, but I think the people I met [...]]]></description>
			<content:encoded><![CDATA[<p>The videos from the Game Camp sessions are now <a href="http://www.youtube.com/results?search_query=game+camp+september+2008">posted</a> on YouTube.</p>
<p>Special note: I was slightly drunk when I gave my second talk (optimizing the dev process), and moderately drunk by the time the panel started. Not my fault! People kept buying me drinks! Maybe that biased me, but I think the people I met at Game Camp were among the coolest and friendliest I&#8217;ve met at any game conference. <img src='http://scottbilas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://scottbilas.com/blog/game-camp-videos-posted-to-youtube/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slides from Game Camp</title>
		<link>http://scottbilas.com/blog/slides-from-game-camp/</link>
		<comments>http://scottbilas.com/blog/slides-from-game-camp/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 12:37:17 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[conference]]></category>
		<category><![CDATA[game camp]]></category>
		<category><![CDATA[oslo]]></category>

		<guid isPermaLink="false">http://scottbilas.wordpress.com/?p=48</guid>
		<description><![CDATA[What a fun event! Definitely one of the best I&#8217;ve been too, everyone was so friendly. They even got me a bottle of tequila and a lemon (ha ha) which I&#8217;ll be working on as we travel to Copenhagen today.
As promised, I&#8217;m posting my slides. PowerPoint 2007 and PDF format are available at my Googlepages [...]]]></description>
			<content:encoded><![CDATA[<p>What a fun event! Definitely one of the best I&#8217;ve been too, everyone was so friendly. They even got me a bottle of tequila and a lemon (ha ha) which I&#8217;ll be working on as we travel to Copenhagen today.</p>
<p>As promised, I&#8217;m posting my slides. PowerPoint 2007 and PDF format are available at my <a href="http://scottbilas.googlepages.com">Googlepages</a> site on my <a href="http://scottbilas.com/publications/">Publications</a> page. Which reminds me, I really have to find a better host than Googlepages. Also have to migrate all that old stuff from my Drizzle site as well. So much to do, so little likelihood that I&#8217;ll get to it&#8230;</p>
<p>Anyway here are direct links to the files:</p>
<ul>
<li>Do What You Want [<a href="http://scottbilas.com/files/2008/game_camp_oslo/do_what_you_want.pptx">PowerPoint</a>] [<a href="http://scottbilas.com/files/2008/game_camp_oslo/do_what_you_want.pdf">PDF</a>]</li>
<li>Optimizing the Development Pipeline [<a href="http://scottbilas.com/files/2008/game_camp_oslo/optimizing_the_development_pipeline2.pptx">PowerPoint</a>] [<a href="http://scottbilas.com/files/2008/game_camp_oslo/optimizing_the_development_pipeline2.pdf">PDF</a>]</li>
</ul>
<p>I&#8217;m pretty happy with how the keynote went but the Development talk was a mess. I think the slides have some pretty good material in them, though. The couple of beers I had before the talk might have been a little too much. Same as writing code &#8211; one drink helps (lubricates the neurons), but two drinks can only hurt. Ah well.</p>
]]></content:encoded>
			<wfw:commentRss>http://scottbilas.com/blog/slides-from-game-camp/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Speaking at Game Camp in Oslo, Norway</title>
		<link>http://scottbilas.com/blog/speaking-at-game-camp-in-oslo-norway/</link>
		<comments>http://scottbilas.com/blog/speaking-at-game-camp-in-oslo-norway/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 05:48:45 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[conference]]></category>
		<category><![CDATA[game camp]]></category>
		<category><![CDATA[oslo]]></category>

		<guid isPermaLink="false">http://scottbilas.wordpress.com/?p=43</guid>
		<description><![CDATA[It looks like the schedule is up on the Game Camp page. This is a recurring local game dev conference in Oslo that my friend Dan Strandberg co-hosts. Dan and I met way back in the Dungeon Siege days and have kept up ever since. He asked me to fly out and do the keynote, [...]]]></description>
			<content:encoded><![CDATA[<p>It looks like the schedule is up on the <a href="http://gamecamp.no/events/default.aspx" class="broken_link">Game Camp</a> page. This is a recurring local game dev conference in Oslo that my friend Dan Strandberg co-hosts. Dan and I met way back in the Dungeon Siege days and have kept up ever since. He asked me to fly out and do the keynote, which I&#8217;m looking forward to (I wonder if they have tequila in Norway). I&#8217;ll also be doing a tech talk on development process, and will be on the panel at the end of the day.  I&#8217;ll post slides here after the conference. After we visit Copenhagen and Stockholm, that is!</p>
]]></content:encoded>
			<wfw:commentRss>http://scottbilas.com/blog/speaking-at-game-camp-in-oslo-norway/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Some Notes on Dungeon Siege</title>
		<link>http://scottbilas.com/blog/some-notes-on-dungeon-siege/</link>
		<comments>http://scottbilas.com/blog/some-notes-on-dungeon-siege/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 03:50:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[dungeon siege]]></category>

		<guid isPermaLink="false">http://scottbilas.wordpress.com/2007/12/10/some-notes-on-dungeon-siege/</guid>
		<description><![CDATA[I get emails on occasion from people asking about this or that GDC talk I did. Recently someone asked me a few questions about my Continuous World paper, so I figured I&#8217;d reprint it here.
Q: Could you describe some of the &#8221; countless optimizations &#8221; based on the world node graph?
It&#8217;s been a very long [...]]]></description>
			<content:encoded><![CDATA[<p>I get emails on occasion from people asking about this or that GDC talk I did. Recently someone asked me a few questions about my <a href="http://scottbilas.com/files/2003/gdc_san_jose/continuous_world_paper.html">Continuous World</a> paper, so I figured I&#8217;d reprint it here.</p>
<p><span style="font-weight:bold;">Q: Could you describe some of the &#8221; countless optimizations &#8221; based on the world node graph?</span></p>
<p><span style="font-weight:bold;"></span>It&#8217;s been a very long time since I worked on DS so I&#8217;ve forgotten most of the optimizations. We had stuff for physics, shooting arrows, pathfinding, all of which I didn&#8217;t work on much unfortunately. One big one I do remember is the &#8220;AIQuery&#8221; system. Most AI-capable objects would query periodically to ask what&#8217;s near them and what they&#8217;re doing. So a shaman may ask for dead krugs near it so it can consider resurrecting them. Or the hero waits until an enemy enters a certain radius and auto attacks if so. This can be ridiculously expensive, worst case being n^2 distance calcs per frame (where n = # active game objects). In DS&#8217;s case it&#8217;s even more expensive due to the node/world transformations required to get the distance.</p>
<p>A normal game just does a space partitioning scheme like quadtrees (DS was essentially a 2D game, we usually dropped the &#8216;z&#8217; component). In DS the whole game is already partitioned based on these siege nodes, so we did tricks with that, where a database would track who&#8217;s in which node, watch when transitions were made, and cache queries. So it may have a stationary object asking for enemies every frame. This would get cached as a query that returned instantly, only getting invalidated as either the object moves past a certain distance, or if the membership state of any affected nodes changes. Or of course if a new node enters the world or a current one leaves it, based on world streaming.</p>
<p>I think some more of the optimizations we did were trying to work in local space as long as possible, and then getting notified when the focused (camera) node changed. Looking back, that&#8217;s absolutely how we should have done everything, assuming we kept the node system (which many on the team didn&#8217;t think was worth the cost). I would have wrapped up the concept of a position in a class owned by a manager, and updated for the new transform on entering a new node, everybody all at once. Then have individual objects check in/out positions from the list as needed for real-time updates. But I really would try to do everything in my power to discourage using a node-based system like that again. Very interesting engine but that feature cost us a couple million dollars at least.</p>
<p><span style="font-weight:bold;">Q: Could you explain the curious &#8220;spherical traits-based occupants queries&#8221; used by AI? Some kind of walk through the graph?</span></p>
<p>Ah, that&#8217;s the AIQuery system. A few where spherical but most were just radius based. I think we always referred to them as spheres, because that&#8217;s how the debug engine drew them. Anyway, occupants were members of siege nodes. So for example, a call might look like this:</p>
<pre>gAIQuery.GetOccupantsInSphere(
  GetGo()-&gt;GetPlacement()-&gt;GetPosition(),
  r,
  GetGo(),
  NULL,
  output ? 0 : 1,
  OF_PARTY_MEMBERS | OF_ALIVE,
  output,
  !IsRidingElevator() );</pre>
<p>This says to do a query based on the current component&#8217;s owner Go&#8217;s position, of a certain radius, with a source used in the filter part, up to 1 member, where we only want alive party members, and only cache it if we&#8217;re not riding an elevator. So this one finds the closest alive party member. The filter (OF_*) checks against traits in the Go set at load-time and updated as needed during runtime. In this case the cache would probably be a sorted list of Go&#8217;s relative to the current Go out to the max radius asked &#8216;recently&#8217;. So on a cache hit it just has to walk through that short list, testing max radii and the filter to see who to include in the output. Cached queries would expire after too much had changed (distance, occupancy, etc.) or after a certain amount of time (around a second or two I believe).</p>
<p>It was a difficult system to get right, had a lot of bugs until the very end. I would never do it this way again. Uncached queries using normal space partitioning (like quad trees) is a much better way.</p>
<p><span style="font-weight:bold;">Q: Could you describe some of the “self-healing” features used by the logic? I imagine things like event checking to suspend execution etc.</span></p>
<p>I think I used &#8217;self-healing&#8217; with a couple meanings.</p>
<p>First, it would repair bad content. Stuff like values out of range, handling where someone typed in the class of an object wrong, or parse errors in the spec files. My attitude was that the game should never ever crash. It should complain loudly and then try as best it can to keep going. The most important thing is to keep the content developers moving. They&#8217;re making the game, and try to keep out of their way. A crash is going to stop them completely. Then log the errors and deal with them separately.</p>
<p>And second, and I think this is the more interesting one, it would gracefully handle severe failures in the game related to objects going missing. In DS, an object you&#8217;re working with &#8211; shooting an arrow at it, have a &#8220;daze&#8221; spell cast on it, whatever &#8211; may simply disappear next frame. Happened all the time, due to world streaming. We did some tricks with putting objects in purgatory and deferring deletes and such but we needed to release these things to get the memory back. In DS, programmers were getting the rug pulled out from under them pretty much constantly. And it is pretty painful to write code where you are checking if an object exists or not all the time. In script code it&#8217;s easy &#8211; I could detect a NULL and just abort the script. Simple. In C++ code it was more work, and honestly most of the time we did just end up testing for IsValid on everything. But most of the game&#8217;s AI was done in script so this handled it pretty well.</p>
<p><span style="font-weight:bold;">Q: Could you provide an overview of the loading process and some of the optimizations and special cases you discovered?</span></p>
<p>If I remember right it went something like this. We&#8217;d check to see if one of the world frustums had moved (there were up to 8, one for each party member) and if so, see if that encompassed any new siege nodes. If so, we queued the geometry and textures etc. to load on another thread. Once those work orders were complete we&#8217;d populate them with game objects based on the SCID&#8217;s in the level&#8217;s .gas files. Again, on another thread. It was nuts &#8211; everything was multithreaded in this game, which is easy to screw up. We&#8217;d run script, do initial pose animations, whatever. Game objects would calculate parameterized content (such as their starting inventory) on this thread too, and then recursively load them. On the main thread we&#8217;d also get orders from the server in multiplayer games to construct Go&#8217;s.</p>
<p>There really wasn&#8217;t much we could do to optimize the loading process beyond the usual stuff you do in a game &#8211; reduce the size of the data to transfer, reduce how long calls are blocked due to fighting over resources controlled by critical sections, write a little assembly, use different types of specialized allocators, etc. Memory usage was a huge concern, so I had to do things like making a string database that stored unique strings, where things like the template name would reference off that.</p>
<p>After all that, we&#8217;d figure out which siege nodes were no longer in any world frustum, and queue them for deletion, which would in turn queue their occupants for deletion. Not super interesting but this is where the self-healing code came in. Old references were still often valid for about 15 seconds if I remember right, before they&#8217;d finally end up colliding and point at a real (but the wrong) object instead. That had more to do with the size of the magic # I used in the ID (5 bits I think) than any timer.</p>
<p>I remember on the siege node loader we had a lot of pathological cases to deal with, from the way the worlds were constructed. Every major area in DS was very different. We couldn&#8217;t optimize for a single type of level, such as the farmhouse to Stonebridge route. That had nodes that were a couple meters square on average, and they were all rectangular pretty much. The castle on the other hand had enormous nodes of weird shapes, which was another set of special cases we had to do (I remember lighting info being one of them, just storage space). And then there were these really long crazy high up nodes in the dragon cave that had yet another use pattern. This game was the opposite of simple.</p>
<p>Well that&#8217;s about the contents of my brain, everything else has fallen out!</p>
<p>Scott</p>
]]></content:encoded>
			<wfw:commentRss>http://scottbilas.com/blog/some-notes-on-dungeon-siege/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amsterdam slides posted</title>
		<link>http://scottbilas.com/blog/amsterdam-slides-posted/</link>
		<comments>http://scottbilas.com/blog/amsterdam-slides-posted/#comments</comments>
		<pubDate>Tue, 13 Feb 2007 05:09:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[amsterdam]]></category>
		<category><![CDATA[casual games]]></category>
		<category><![CDATA[conference]]></category>

		<guid isPermaLink="false">http://scottbilas.wordpress.com/2007/02/13/amsterdam-slides-posted/</guid>
		<description><![CDATA[Yay, they&#8217;re posted. Sorry for the delay. I added an entry for my Publications page to the list at the right, or you can just click here.
]]></description>
			<content:encoded><![CDATA[<p>Yay, they&#8217;re posted. Sorry for the delay. I added an entry for my Publications page to the list at the right, or you can just click <a href="http://scottbilas.com/publications/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://scottbilas.com/blog/amsterdam-slides-posted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>In Amsterdam!</title>
		<link>http://scottbilas.com/blog/in-amsterdam/</link>
		<comments>http://scottbilas.com/blog/in-amsterdam/#comments</comments>
		<pubDate>Fri, 09 Feb 2007 13:01:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[amsterdam]]></category>
		<category><![CDATA[casual games]]></category>
		<category><![CDATA[conference]]></category>

		<guid isPermaLink="false">http://scottbilas.wordpress.com/2007/02/09/in-amsterdam/</guid>
		<description><![CDATA[I&#8217;m in Amsterdam right now. Just gave my talk today. I promised slides to be posted at this web site! If you&#8217;ve come here seeking them, please check back in a few days. I need to clean them up first before I can post them.  
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in Amsterdam right now. Just gave my talk today. I promised slides to be posted at this web site! If you&#8217;ve come here seeking them, please check back in a few days. I need to clean them up first before I can post them. <img src='http://scottbilas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://scottbilas.com/blog/in-amsterdam/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>In Kyiv!</title>
		<link>http://scottbilas.com/blog/in-kyiv/</link>
		<comments>http://scottbilas.com/blog/in-kyiv/#comments</comments>
		<pubDate>Fri, 17 Nov 2006 10:12:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[conference]]></category>
		<category><![CDATA[kiev]]></category>
		<category><![CDATA[kyiv]]></category>

		<guid isPermaLink="false">http://scottbilas.wordpress.com/2006/11/17/in-kyiv/</guid>
		<description><![CDATA[I&#8217;m in Kyiv right now at Casuality Eastern Europe. If you&#8217;re coming to this blog by way of the Minna Magazine interview being handed out here, and you want to know where my paper on Flash is, please check my old web site. I&#8217;m in the middle of setting up a new site but haven&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://photos1.blogger.com/x/blogger2/7603/424686663475821/1600/56211/DSC01859.jpg"><img style="cursor:pointer;margin:0 10px 10px 0;" src="http://photos1.blogger.com/x/blogger2/7603/424686663475821/320/159693/DSC01859.jpg" alt="" border="0" /></a><br />I&#8217;m in Kyiv right now at Casuality Eastern Europe. If you&#8217;re coming to this blog by way of the Minna Magazine interview being handed out here, and you want to know where my paper on Flash is, please check my old web site. I&#8217;m in the middle of setting up a new site but haven&#8217;t gotten it done yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://scottbilas.com/blog/in-kyiv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

