I thought I’d post another summary of some (mostly) recent blog posts and links that are worthy of a read, in case you didn’t read them already. Here goes…
Nick Porcino and Syoyo Fujita posted about nifty services for embedding LaTeX expressions in your blog (without having to mess around with installing stuff).
Maciej Sinilo wrote a really interesting post about Distributed Processing. This is something we’ve been looking into at work a lot, wanting to do parallel/distributed data builds, but with limited success. So far we’ve tried or looked at SN-DBS (OK for code, awful for data) and Xoreax XGE (Incredibuild is really good for code, but XGE fails to run on XP64 for data and their support totally sucks, them barely responding to our bug reports). I’ve heard some good things about Qube! and Electric Cloud (and I’ve also heard that EC is ridiculously expensive). If anyone has experiences with these or other tools for distributed data builds, please post a comment!
Maciej also wrote a glowing review of my book, calling it “one of top 10 programming books for sure” and concluding “If you haven’t read it yet, do it now.” Wow, well, what can I say to that other than, I hope it’s clear to everyone how totally brilliantly sharp and perceptive he is! ;)
Vince Scheib presents some very cool block diagrams that nicely illustrate the difference in hardware architecture between PCs, Wii, Xbox, PS3, CUDA, and Larrabee.
Microsoft finally put up presentations from GameFest 2008.
The slides from the SIGGRAPH’08 class “Advances in Real-Time Rendering in 3D Graphics and Games” are available on AMD/ATI’s tech reports site. The StarCraft 2 graphics tech presentation is also available here. A nice, large screenshot of the SC2 SSAO solution can be seen here. I posted some SSAO links before; Nick Porcino’s SSAO summary is particularly nice, with a lot of extra references in the post comments.
In Load-hit-stores and the __restrict keyword, Elan Ruskin talks about what a gigantic performance suck load-hit-stores can be on the (pretty feeble) in-order CPUs that both the XBOX 360 and the PS3 sport. He also talks about how we can use “restrict” to help resolve aliasing, with in turn helps resolve load-hit-store issues. (I don’t know how many paid attention back then, but I ranted about “restrict” already back in 2003. You can find a lot of useful info in my GDC 2003 slides on Memory Optimization, including on what restrict will do for you.)
Emil Dotchevski posted a link to Kun Zhou’s “BSGP: Bulk-Synchronous GPU Programming” paper, which talks about a language for GPU programming (that can be translated into e.g. CUDA for the backend).
Tim Farrar has a nice interpretation of Jon Olick’s Next Generation Parallelism in Games SIGGRAPH’08 slides for those who weren’t there. (Additional detail in this thread at the ompf.org forums and this thread at the Molly Rocket forums.) All the materials from the Beyond Programmable Shading class are online. (BTW, if you, like me, can’t read 4-point type on a black background drag this awesome bookmarklet to your toolbar and click it to override Tim’s stylesheet with something eye-friendly. Sorry Tim.)
I don’t do PC games, but Aras Pranckevičius’ post about the machines you can expect the typical casual PC gamer to have in Hardware of the casual gamer was still very interesting.
If you don’t have a custom memory manager in your game, you’re a fool (or a PC game developer). Learn the how’s and why’s by reading Christian Gyrling’s Are we out of memory? and Jesus de Santos Garcia’s post about Practical Efficient Memory Management (though the latter is clearly a bit too PC-centric, so pinch of salt for consoles). Also read Maciej Sinilo’s MemTracer strikes back post. BTW, before you even attempt to write your own heap memory manager, you should understand every single bit of Doug Lea’s dlmalloc memory allocator and be able to thoroughly justify any deviation from his implementation, such as needing threading support, improved alignment support, or similar. (You Design Pattern heads in particular should study the dlmalloc data structures and algorithms. Though unlikely, you might gain some enlightenment about what’s actually important in programming.)
Mick West has a nice pair of articles on how to do practical fluid dynamics for games.
Iñigo Quilez has a nice set of slides from NVScene on Rendering Worlds With Two Triangles. The “Rendering with distance fields” bit of the slides is particularly cool!
No link summary can be complete without some shadow map talk so here’s a readable shadow tech summary (of PCSS, PSSM, and screen-size shadow masks/accumulation buffers) and Marco Salvi’s twist on ESMs and his faster PCF post. Marco also talked about shadows (based off this teaser) at GDC as part of the Core Techniques and Algorithms in Shader Programming tutorial.
Also presented at the Core Techniques tutorial was Jörn Loviscach’s Care and Feeding of Normal Vectors which is an absolutely must-read on how to properly blend normal maps (I’d bet money you, yes you, are blending them wrong). Once you’ve read and truly grokked Jörn’s presentation, you’re ready to advance onto Morten Mikkelsen’s master thesis Simulation of Wrinkled Surfaces Revisited, which shows you how your tangent space computation is 100% completely and utterly wrong! (Morten, a light easy-to-read summary of the pertinent bits would be really useful, hint hint.)
Mikko Mononen has an interesting article at AIGameDev on The Structure of Action Game AI.
To end the cavalcade, Alex Champandard’s summary of the AI in Halo (based on older Bungie presentations at GDC) is old, but still worth reading. Also worth a read is JMP van Waveren and Ignacio Castaño’s year-old article about Real-Time YCoCg-DXT Compression.
Did I miss something cool? Post a comment!
This post is a real gold mine, thanks a lot for sharing that !
Not really my area of expertise, certainly not in a production environment . . . but back in school we got a lot of mileage out of Condor, University of Wisconsin’s system for distributed work loads.
http://www.cs.wisc.edu/condor/
Your mileage may vary, of course.
At my company we created our own distributed processing system and I know that Bungie did the same. Building and running your own is (in my experience at least) a full time job for at least one person plus support from other departments.