Author Archive

Support page for GDC16 “TLDR statistics”

Thanks to everyone who came to my GDC talk. Here are my PowerPoint slides, with a summary of my narration in the speaker’s notes. You can also download a .PDF export. Macros Here’s the further info and how-to on the Excel macros I demonstrated. The Student’s t-test is built into Microsoft Excel. You can use […]

Under Reconstruction

Due to a failure at my previous webhost, I’ve moved Some Assembly Required to a new hosting service. Most of the text has come over, but a lot of the images and media need to be restored manually. Leave a comment here if you find anything missing.

“AI-Driven Dynamic Dialog” at GDC 2012

At last week’s Game Developers’ Conference I delivered a talk titled “AI-driven Dynamic Dialog”, describing the dialog system used in Left4Dead, Dota, and basically all of Valve’s games since The Orange Box. A PDF export of the slides for my talk is now available here. I’ve also created a support page where I’ll gather all […]

Why is it called a “core dump” anyway?

The diagnostic file emitted by a crashing process in a modern operating system can contain a variety of useful information, including exception type, current instruction, CPU state, call stack, and sometimes the entire contents of the current thread’s stack or even the entire process heap. So why is it called a “core dump”? For years […]

Annotated slides for GDC11 “Forensic Debugging”

The annotated slides for my “Forensic Debugging” GDC talk are now available here.

Forensic Debugging: Thanks Are Due

While debugging a smashed stack may seem like a heroic feat, the most heroic thing about my talk is the amount of time, effort, and care my friends spent to help me put it together. I would never have made it to the GDC, let alone made any sense whatsoever onstage, without the support of […]

Preliminary GDC slides posted

Until the full slides are available in the GDC Vault, I’ve exported most of my GDC2011 slide deck as a PDF series of still images, to help fill in the notes of anyone who might have attended but missed a point or two.

Square Roots in vivo: normalizing vectors

Following my earlier article on timing various square-root functions on the x86, commenter LeeN suggested that it would be useful to also test their impact on a more realistic scenario than square-rooting long arrays of independent numbers. In real gameplay code the most common use for sqrts is in finding the length of a vector […]

Timing square root

The square root is one of those basic mathematical operations that’s totally ubiquitous in any game’s source code, and yet also has many competing implementations and performance superstitions around it. The compiler offers a sqrt() builtin function, and so do some CPUs, but some programmers insist on writing their own routines in software. And often […]

Code For Testing Virtual Function Speed

I’ve just updated my prior article on virtual function overhead with corrected timing numbers — I hadn’t noticed that my CPU cycle counts were only 32 bits wide so timings of more than 2secs would wrap back around to zero. If you want to run this test on your own hardware, I’ve put my code […]