<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:cc="http://web.resource.org/cc/"
xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://www.brettdouville.com/">
<title>Brett&apos;s Footnotes¹</title>
<link>http://www.brettdouville.com/</link>
<description>¹A selection of thoughts about games, based on things I learn from other media.</description>
<dc:creator></dc:creator>
<dc:date>2012-02-06T07:30:30-05:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=3.14" />


<items>
<rdf:Seq><rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2012/02/i_should_have_f_1.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2012/01/2012_the_year_i.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/11/i_should_have_f.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/09/discussion_suns.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/07/brief_notes_on_1.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/05/interview_on_th.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/04/the_falling_fra.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/03/the_apprentice.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/03/gdc_2011_late_w.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/03/gdc_2011_wednes.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/03/knives.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/02/scaffolding.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/02/new_series_of_p.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/02/alienated_from_1.html" />
<rdf:li rdf:resource="http://www.brettdouville.com/mt-archives/2011/01/birdhouse_1.html" />
</rdf:Seq>
</items>

</channel>

<item rdf:about="http://www.brettdouville.com/mt-archives/2012/02/i_should_have_f_1.html">
<title>I Should Have Finished... Final Fantasy VII</title>
<link>http://www.brettdouville.com/mt-archives/2012/02/i_should_have_f_1.html</link>
<description>Well, fifteen years and five days have passed, and I finally got around to finishing Final Fantasy VII, the game which more than any other gave prominence to the Japanese-style RPG here in the West. I started it twice in the last fifteen years and never got very far with it, maybe only to the point of meeting Aeris each time. For whatever reason, it just didn&apos;t grab me at the time. I took notes on my playthrough, though not nearly to the exhaustive level of my notes on Crash Bandicoot; there&apos;s already plenty of writing out there on this game and I don&apos;t think there&apos;s much I have to add. There are encounters with various enemies who manipulate the variables that govern combat, assign various buffs and penalties, etc. There&apos;s a storyline, saving the world, and there are cutscenes used as rewards for completing specific battles. The only bits that were somewhat unexpected were the action sequences, which I didn&apos;t recall, though they have been a feature of some of the other games. The tactical elements outside of battle largely involve determining what abilities to install into your characters; the mechanics of that weren&apos;t immediately apparent but gradually occurred to me as the game progressed (though far too late for me to benefit too much from this understanding, which was a little frustrating). For me, the emotional core of the story isn&apos;t actually the much-referred-to death of Aeris (oops, spoilers!) but instead the touching way Tifa kept Cloud together afterwards. She is the keeper of his history. The end of the game... well, it wasn&apos;t my favorite. It was frustrating enough to see short cutscenes every time I summoned Bahamut or what-have-you. But the Supernova video? That&apos;s insane... not only is that cutscene set in our solar system, so setting the game on Earth contrary to my expectations. That&apos;s fine and dandy, I guess, if weird; but the thing is nearly a minute long. I know that by Final Fantasy IX, they had made those long mid-battle cutscenes less frequent via an option, but it is sorely lacking here and you have to wonder how they justified such large non-interactive elements in the midst of what is the core play. That said, it was worthwhile playing it through to the end. For my part, the story in FF IX was actually more effective and affecting, but I can see why this would have resonated at the time....</description>
<dc:subject>Games</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2012-02-06T07:30:30-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2012/01/2012_the_year_i.html">
<title>2012: The Year I Catch Up</title>
<link>http://www.brettdouville.com/mt-archives/2012/01/2012_the_year_i.html</link>
<description>A bit of an annual navel-gazy post After 2009 and 2010, I took time to write a blog post where I talked about how much I read, watched, and played in the last year. (For no particular reason that I can recall, I didn&apos;t do that last year.) Year in questionBooksFilmsGames 20118515515 20105412311 20097413911 200863190?? Typically, I look at these a few different ways. First, what&apos;s in the numbers: 85 books. A number which surprised me, though I knew it was up there. I credit a few factors. 1) I got really invested in checking stuff out of the library this year, and got into a habit of going every three weeks or so and checking out a few books. 2) I got in the habit of reading on my Kindle app (via iPad, primarily), particularly when I traveled to France with my kids last summer. This meant I always had something at my fingertips. I even traveled completely without books when I went to my folks&apos; over winter break, something I never would have imagined I would do. 3) I read a fair amount of light material (genre fiction). Balancing that out, though, I read three of Hemingway&apos;s novels and quite a lot of what I would generally call &quot;literary fiction&quot;. By the numbers, it boils down to mostly fiction, with 68 fiction books and 17 nonfiction books, 6 of which I would consider &quot;stuff I read for work.&quot; There were relatively few graphic novels on my shelf this past year. 155 films. Likewise, a pretty staggering number. I saw 15 series of television as part of that number (series/seasons are just one entry), and 30 films in the theater. I credit this with having sons and a girlfriend who are all nearly as much into movies as I am. I watch a huge variety of stuff -- highbrow alone or with my girlfriend, and lowbrow typically with my boys. 15 games. This is more than in previous years, and I also kept track of AAA titles that I started but didn&apos;t finish (another 8). Though there are a couple of iOS games in that mix, it&apos;s mostly big AAA titles, one from the PS1 era (see recent entry) and the rest on the PS3. I counted Skyrim once, but it would be fair to say I&apos;ve logged hundreds of hours on Skyrim; I&apos;ve probably played over 100 hours of Skyrim just since it launched, though not really on consumer hardware (devkits instead). I rarely play games to which I&apos;ve contributed except as part of development or to show folks who are interested in what I&apos;ve been a part of. I also haven&apos;t counted the uncountable games of Dominion, backgammon, Quarriors, Munchin*, and whatever else we played this year (Arkham Asylum, Qwirkle and Qwirkle Cubes, etc, etc). I usually look at these through a few different lenses. The Resolutionary. I&apos;m pretty happy with my film and television balance (though I may have left out a couple of seasons of TV, such as Monk; I probably watched a season or two this year, mostly while doing short but mindless tasks like wrapping presents or folding laundry). I&apos;m even more happy with the balance of literary to genre fiction and the nonfiction/critical stuff. What I&apos;m not happy with is this: The bedside table That&apos;s an image of my bedside table. There are 36 books or so visible in the picture; on the left, there&apos;s a book in the foreground that blocks at least half a dozen more, and under the table there are three more I haven&apos;t read. The strata of books on this table go back to purchases of at least as early as 2009, and maybe further (I worry about disturbing the delicate balance). There are books on the bookshelf behind me as I took this picture that go back even further, though there are also books on that shelf that I bought since 2009 that found a slot on the shelf. This is to say nothing of the games. I have 109 console games I&apos;ve bought that I either started and never finished, or in many cases never even removed from the shrink wrap (at least 25, though who really knows). I have easily a dozen DS games I never finished. I have no idea how many iOS or GBA games I never finished (though to be fair -- who really needs more than Drop7 on their phone?). The resolution for this year is to make a dent in all of this. I&apos;ve already read one of the books on the side table, loaned to me last year and soon to be on its way to the person from whom I borrowed it. One down. Dozens to go. The Accountant: Wow, despite shipping a game this year, this is quite a staggering amount of content to consume. The only thing I&apos;d maybe like is to see more films on the big screen - not that 30 is a small number. That does take a chunk of time, and with more baseball obligations with my kids on Sundays this year, finding that time was hard. This year we have a head start already - by the second day of the year we had seen three on the big screen! The Apologist: I don&apos;t write much about the games I play here lately - largely because I&apos;m working in the AAA space and that&apos;s often what I play. It&apos;s hard to make good games of this caliber and when I have thoughts, I don&apos;t want to be misconstrued as some successful developer looking down on his peers (believe me, I have more thoughts about the quality of games I&apos;ve made). However, as I dig into the back catalog a bit I&apos;ll chat about those games as I see them. Hopefully, I&apos;ll find more time to blog, but as always, no guarantees! That&apos;s my content consumption for 2011, thanks for dropping by!...</description>
<dc:subject>General</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2012-01-13T08:25:47-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/11/i_should_have_f.html">
<title>I Should Have Finished... Crash Bandicoot</title>
<link>http://www.brettdouville.com/mt-archives/2011/11/i_should_have_f.html</link>
<description>Welcome to the first installment of “I should’ve finished...”, an occasional series of posts about games from my back catalog I bought but never got around to finishing (or, in some cases, even starting). I’ll play these titles and take notes as I go about my mental state, about design decisions I think worthwhile, or other things that strike my fancy. Generally speaking, I’m not interested in tearing games apart, so these will tend to be positive (or at most, gently critical). Look elsewhere for snark. The first title in the series is 1996’s Crash Bandicoot, developed by Naughty Dog for the PlayStation, and published by Sony. Before I sat down to play, I thought a little bit about what I remembered about the series -- vague memories of an orange-suited mascot with a megaphone yelling at the Nintendo building in commercials, its run-into-screen platforming (which seems fresh even now), its crazily difficult bridge levels¹, and crates... lots and lots of crates. And now to the game itself, taken from notes as I played. Depth and into-the-screen platforming are still fun, and the remarkable thing about this 15-year-old game is that the graphics are just fine for me. Granted, we’re looking at 200 poly meshes at best with flat textures and no hardware-supported perspective correction, if I recall correctly, but they really made the most of what they had, even with this early title. It took me a bit of time to figure out the timing on these early shield-bearer enemies, but I got them. Here are a few things that have mostly faded from triple-A games, though there are of course exceptions to all of these: Limited saves (moderated saves) Passwords as a means to allow players to continue from a certain point (owing to add-on nature of memory cards at the time) - and quitting the game after play to get that new password Lives (and ways to get more lives) Today, the market has less room for skills-based game play than it had at that time Lack of analog sticks -- purely the dpad and face buttons on this game, which briefly confounds me every time I start it and try to change my menu selection to &quot;Password&quot; or &quot;Load Game&quot; Some of these are reminders of a time when arcades were still a recent memory, or perhaps even still financially viable; I can recall a small arcade in one of the Penn buildings when I was an undergrad perhaps five years before this title came out. But even saving came with difficulty -- to save, you had to successfully make it to the end of a bonus level. To get to the bonus level, you had to find the three crates containing pictures of Crash’s girlfriend. Papu Papu SSXSSTXT I died many, many times on the first boulder level until I realized that a spinning Crash ran a bit faster than a simply running Crash. The game requires this sort of discovery and experimentation to beat its challenges. Rolling Stones XSXCXSTX Resource usage in these early games was quite efficient - the shield bearers the more traditional scrolling platform levels appear later in the “Hog Wild” segment, but only able to move left and right. There’s this clear maintenance to the player of what their abilities should be - they are allowed to move left and right relative to the camera, even if that means side-to-side or forward-and-back relative to their own orientation. This lets them serve a different function as an obstacle, while keeping constant player expectation as to their movement. Native Fortress SSTXOOXT Ripper Roo CSSCCXXX 22% ² In the Lost City, the pieces all start to come together -- the recognition of pieces that will behave differently, provide rewards not available to the less aware. Positive reinforcement here -- a virtuous cycle for the attentive player; pushing yourself to better play and taking risks rewards you with goodies that better your odds, such as extra Crash lives. Temple Ruins XCXCCXSC 27% Crash Bandicoot values patience and timing over speed -- in those cases where I hurry, frustrated, to replay some short section I’ve already played, inevitably that’s when I make silly errors -- running into bats that appear just when I know they will, messing up the timing of a jump. You can’t hurry Crash, you have to find its rhythm. Boulder Dash SXTTXSXT 31% It takes focus and anticipation to get past these “boulder chasing you” levels, an early precursor of several challenges in the Uncharted series. While you run relentlessly on, you need to feel ahead, to anticipate the next drift from right to left. The same rhythmic approach, patience first and then speed. Koala Kong XCCCXSCS 36% As I reach the third boss, Koala Kong, the locale turns definitely more mechanical. Good storytelling simply through the themes in level art. There’s a clear sense of progress through the differentiation of level assets. Heavy Machinery SSXTXSCS 38% The next level after “Heavy Machinery” is tough indeed, “Cortex Power,” though this is often because I start here with few Crashes avaliable to me. But there are several of the masks here which allow you to make one mistake, and gathering three of them makes you invincible for a short time as with Mario’s star. You feel invincible, too, and so you are far less tentative, and therefore... more likely to succeed. In Cortex Power, the real failure is being tentative, and in these levels Crash Bandicoot is telling us to GO FOR IT, even without the masks that give us confidence. You can spend days trying to get through some level and then one morning just breeze through it on your first try. Cortex Power is just such a level for me, involving one or two attempts daily for around a week. Crash Bandicoot is a process of mastery -- of dealing with the plateau long enough to be able to accomplish your goals. I thought I learned that reading George Leonard’s “Mastery”, but here it’s taught to me in a visceral way. These breakthrough moments are so terrific because they leave you stocked with extra Crashes -- chances to make an even bigger dent, to ride that crest of surmounting that plateau. I pass through the Generator Room on my first try. Generator Room SXCXCXSS 43% This pleasure was much of the appeal of these difficulty-based games. Surmounting something difficult. Pushing yourself. Sure, the successes are ephemeral, but the satisfactions are real. It was hard, but I didn’t give up, and in the end after dozens of attempts, I did that thing. Dark Souls and Demon’s Souls players have been describing this feeling with triumphant tweets over the past months. We’ve grown bigger -- found a much bigger audience -- but in doing so it often seems we’ve lost much of this. It’s there if you look hard enough, but you have to look hard indeed. Once you take the time to get good at the game, taking a week off is no big deal -- you have enough skill that you won’t fall off your plateau quickly. You may make stupid mistakes your first time back, but you’ll quickly get back where you were. Which is good, because my longest, most arduous section of the game comes next. The Generator Room and its subsequent challenges are the hardest I’ve faced in the game so far, making me feel trepidation for what more fiendish battles will follow. First is the Generator Room itself, a traditional platform area with only camera bots for enemies. Then a challenging, into-the-screen section... this contains a “bonus round,” so in theory I can save, but the one time I manage to get to the bonus round it kills me with TNT blocks. Soon after I’m on a boss, Pinstripe, who takes some figuring out, then a challenging bridge section. Zowie. Even with my tons of extra Crashes, my last three or four are drained away so fast my head spins like a bandicoot. The grinning weasels of “Toxic Waste” fairly haunt me -- especially their rigor mortis when my spin attack bangs them off to oblivion, frozen at whatever animation frame they last held, surprised with odd grins on their faces. Pinstripe’s pattern becomes simplicity itself, even after beating him only once, and I thank whatever designer made this boss fight relatively simple after the beatings I took getting here. Indeed, most of the bosses are fairly straightforward and reveal their unchanging patterns quickly; they serve as mere story-based punctuations to the player’s progression in skill, not genuinely difficult challenges. On subsequent mornings, I might need to learn his patterns again -- but I don’t think so. He’s the easiest boss so far... which is good, because I’ve failed the bonus round yet again. ... Four quick deaths in rapid-fire succession on “The High Road” -- all stupid stuff that gets my blood up. But you have to be calm, playing Bandicoot, you have to be Eastwood at the end of Unforgiven. But then I get to a section where I’ve got to hit turtles at just the right moment and I’m sunk -- another six Crashes and it’s over. ... Third attempt this morning and I’ve finished “Generator Room” with eleven Crashes to spare -- my best thus far. How will I do with “Toxic Waste”? Must. Stay. Calm. By the time I’m at the second checkpoint, I have 16 Crashes and still bear a mask, allowing me one mistake for free. This has never gone this well... stay frosty. And I complete the bonus round! 19 Crashes in my quiver. And still going, though without the mask this time. Back through Pinstripe without further incident, and I’ll start “High Road” with 21 men -- hopefully, enough to either get me through or enough to teach me all I need to know about it. By the time I get to the first checkpoint, I’m at 20 Crashes -- I’ve gained two, but died three times -- and the big challenges are still ahead of me. But it’s long before I’m down to zero before I know I’ll go no further today. Happily I can start from Pinstripe now. Pinstripe SXCXTXOO 47% ... Starting from “The High Road” with only 5 or 6 Crashes seems like an impossibility. Will this be the truest test of devotion in the game thus far? Having played three times this morning, I’ve only succeeded in reaching the first checkpoint on my last two Crashes of the morning. Sadly, work beckons. ... Aha! A discovery! The turtles must first be turned over -- their soft underbellies are huge trampolines. What looked like a timing puzzle isn’t... Crash Bandicoot is teaching me to continue exploring, even on your ninth or tenth playthrough. This discovery propels me very nearly to the end of the level - in my excitement I nearly lose to Pinstripe on my next play... and that excitement carries through to the High Road, where I burn through all my Crashes before even reaching the first checkpoint once. ... The game reveals more secrets to me -- the High Road is an onion of game design, layer upon layer. Running towards the camera at the start of the level nets you more lives -- the boards appear beneath your very feet. And at last, I make the bonus round on the High Road, my reward. Slippery Climb CSSXTSST 52% Doing well at Slippery Climb takes a fierce concentration -- there are so very many ways to go wrong that after a while you begin to think a trap-by-trap, jump-by-jump outline might be helpful. I often feel my ability to focus getting exhausted, which leaves me falling off a cliff, mistiming a jump. Impatience is an enemy here more than the new, dynamite throwing minion of Dr. Neo Cortex is. The level is punishing -- after many attempts, only once have I made it to the first checkpoint. ... For whatever reason, every stupid mistake one can make in Crash Bandicoot, I will make on the Slippery Climb. For whatever reason, it demands things that I feel unable to provide. I feel like the percentage complete should jump to 75% after this level, based solely on the time I’ve spent on it. My mistakes, though, at least have the virtue of being further and further into the level, though this necessarily means that my play sessions get longer and longer. ... After ten days off, I’m worried... but for no reason. I make it to the first checkpoint without a single death, even picking up two other lives and 60 peaches in the meantime. And even though I miss the bonus round’s save -- I’m through, with 8 lives to spare... only to discover that the next level, “Lights Out” is too much for me. ... I have to hand it to them. This game, in seeking new platformer experiences, finds new affordances for me. I hadn’t thought of being able to see the level as something I needed to earn, but the masks I put on now both protect me and light my way, for a time. If I move too slowly, or make the mistake, I won’t die... but death will be highly likely, given that I’ll be unable to see the obstacles in my path. ... It feels odd to try to get so good at something... only to never see it again. ... Lights Out falls to my persistence, taking me on to Jaws of Darkness. ... Two days pass -- I try a few times, but it’s only on the third day that I get to the Bonus Round on Jaws of Darkness, with no Crashes left. It’s only the second time I’ve been on the level, but I get to save. “Castle Machinery” starts with a bit of design witticism -- just out of jumping distance sits the exit level, and trying for it sends you down floor after floor, falling until you start to wonder if you’ll ever land, and then suddenly you do. Castle Machinery CXXCSCSS 59% ... Castle Machinery is relatively easy after the others -- really it and the Nitrus Bio boss battle are palate cleansers, giving me that breather which makes me renew my faith that I will eventually beat this game. I make it to “The Lab” soon after -- and get my next save point. The Lab CSCSSXSX 63% ... One positive about The Lab is that although I’m failing, I’m failing fast. Despite recent levels taking up to 20-25 minutes to lose (due, usually, to extra Crashes), here I’m in and out in only a few minutes -- enough time to iterate my skills but short enough that I can make multiple attempts in my limited time with the game. It’s wonderful at this stage of the game. The final series of jumps, across boxes filled with TNT, are diabolical, and they require that I trust my skills there rather than letting them faze me. They are tricky, but ultimately very beatable. ... The game takes a strange turn at this point, and I can’t work it out until afterwards. Having beaten The Lab, the next level is “The Great Hall”, which is basically an empty level, just jumping twice to the exit. (I’ll reconstruct afterwards that having beaten levels perfectly at various points of the game would open up others, or branching points in other levels. Instead, I find myself at 63% basically finished with the game. The manual gives hints at this, but lessons learned in early console generations: no one reads the manual.) The next level is a fight with Neo Cortex himself. He is like the other bosses, in that his patterns are easily discernible, and he’s pretty easily beaten. I enter here at one point with seven or eight Crashes, and Neo Cortex goes down. Crash is reunited with his girlfriend. Roll credits. ... I thoroughly enjoyed my time with Crash Bandicoot, and look forward to more games in my “I Should’ve Finished...” series. I’ve got seven unfinished or unstarted games from the PS1 era, and 58 games from the PS2 era (31/12/15 PS2/GCN/Xbox). Should give me plenty of old playthrough material for a long time! ¹These now seem like a hallmark of Naughty Dog, if Uncharted 2 is any indication. ²It’s at Ripper Roo, the second boss, where I start keeping track of the percentage through the game the save screen reports to me. It’ll turn out to be a distraction, ultimately, since what the game is reporting to me and what I read it to be reporting to me are different....</description>
<dc:subject>I Should Have Finished</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-11-21T19:30:49-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/09/discussion_suns.html">
<title>Discussion: Sunset Park, in progress</title>
<link>http://www.brettdouville.com/mt-archives/2011/09/discussion_suns.html</link>
<description>Note: the following will contain spoilers for the first fifty or so pages of Paul Auster&apos;s Sunset Park, as it largely contains my impressions after reading that far. One of the things that strikes me about Paul Auster is that he is able to easily inhabit these narrators who are on the surface both somewhat unappealing and also apparently different from you or I. This time it&apos;s a young man named Miles Heller, who has been walking for miles in his own privately imposed Hell since he was involved in the death of his brother Bobby -- an accident by even Miles&apos; account, but his guilt won&apos;t let him believe that. Auster is like this, so very on-the-nose with some of his naming and metaphors that his stuff actually works at times. It has a sort of a charm to it, and on balance his books succeed at pulling off little magic tricks that surprise entirely on the basis of everything having been done in plain sight of the reader. When the narrator&apos;s girlfriend asks if the Heller Publishing on the back of a book he&apos;s loaned her is any relation (it is, though he doesn&apos;t admit it), he replies that Heller is actually a pretty common name, when you get right down to it -- Auster pointing out here that quite a few people are actually also in Hell, it&apos;s a common thing. As for unappealing, well, Heller is involved in a relationship with a young woman who is seventeen and therefore he has been committing statutory rape, though there are no direct depictions of such. Here, too, Auster is working in plain sight, because the fact of this relationship will propel the plot forward in very short order. Heller has cut himself off from his former life, maintaining only a single connection with his old life in the form of a friend still in New York, someone who can give Heller occasional glimpses of the life he&apos;s left behind, and who can give him an opening to return. All of this directness, this nothing-up-my-sleeve, makes me wonder if Auster is indeed going to pull off a sort of magic trick at the end. It&apos;s not as if you don&apos;t see this elsewhere. One of my favorite films this year, Midnight in Paris, has a character named Gil Pender, pointing out the fact that here&apos;s a guy who hasn&apos;t quite got his life going yet, despite a certain amount of success. With a film, however, I&apos;m more likely to consume it all in one sitting, whereas reading fifty or so pages of a book at a time is more my habit, allowing for reflection to sort of come along the way. And so, the meaning of Pender&apos;s name sort of comes with my later reflection on what I&apos;ve seen, and lends the film a sense of inevitability and helps hold the whole thing up. There are other obvious bits in Sunset Park, such as the fact that Heller&apos;s job is something called &quot;trashing out,&quot; by which banks empty out foreclosed homes of belongings and clean up after messes left by the mortgagors who abandoned their payments¹. This is a direct reflection of what Heller himself is doing with his personal life, fleeing the tragedy that left him so full of guilt, abandoning comfort and certainty for an attempt at Zen-like removal of emotion. The games it has most called to mind thus far has been Passage, of course, which attains a sort of &quot;everyman&quot; status by both its aesthetic and its algorithmic choices, and also a little browser game by MollieIndustria, Every Day the Same Dream. In the former, the pixellated presentation and abstracted characters do so in a fairly direct way. In the case of games like these, though, which are meant to be consumed in a matter of a few minutes, the meaning comes through in a different way -- we either get it through repeated play, or through the impact of a single experience. I&apos;ve played each of these more than once, but Passage I&apos;ve played dozens if not hundreds of times². Passage achieves its &quot;everyman&quot; quality by abstracting about as far as one reasonably can -- its characters are male and female and apparently Caucasion, sure, so they are at least that particular, but beyond that there&apos;s not much. Every Day the Same Dream goes after an archetype, the working cubicloid who repeats day after day after day -- it&apos;s not far to abstract that to anyone who&apos;s in a particular rut in life. I&apos;m super busy right now shipping a game, but thought I&apos;d drop a line here to let people know I&apos;m not dead (yet). ¹Perhaps themselves to move on as Heller has, or enter another circle of their own private Hells, who knows. ²I kind of use Passage as a sort of memento mori at times. I&apos;ve gone through periods where I play it once daily....</description>
<dc:subject>Books</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-09-01T07:59:52-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/07/brief_notes_on_1.html">
<title>Brief Notes on &apos;The Bicycle Thief&apos;</title>
<link>http://www.brettdouville.com/mt-archives/2011/07/brief_notes_on_1.html</link>
<description>Last week a group of us (@michelmcbride, @selmaleh, @melissa_mullen, and @lessthankyle) banded together for a Netflix party to watch Vittorio de Sica&apos;s 1948 classic, The Bicycle Thief. I made a few notes to set the film in its historic context, which I reproduce for you here. &apos;The Bicycle Thief&apos; (also known as &apos;The Bicycle Thieves&apos;) came along at a particular point in Italy&apos;s cinematic history. Prior to and during the war, the Fascists invested heavily in cinema, developing a skilled group of craftsman as directors, screenwriters, and cinematographers in particular. But the Fascist cinema was very different in kind from what would develop after the war in Italian neo-realism, of which &apos;The Bicycle Thief&apos; is perhaps the finest example. Neo-realism was developed by a scriptwriter named Zavattini, who would work closely with de Sica on this and several other films. Neo-realism reacted to the films of the Fascists by turning away from heroic epic stories which reflected the cult of personality which began with Mussolini and carried on down, in favor of smaller stories about real people, set against real locations with ambient sound. The Bicycle Thief exemplifies these ideals, presenting a multi-layered story playing out with non-actors on the streets of Rome. Italian neo-realism had a brief day in the sun, as it were, lasting no longer than a decade really. However, if you enjoy this film, here are a few others to consider: Rossellini&apos;s Obsession and Rome, Open City; de Sica&apos;s Umberto D.; and Visconti&apos;s The Earth Trembles. I am currently vacationing in France but will return next week to view Jean-Luc Godard&apos;s 1960 classic, Breathless, schedule (and jet-laggedness) permitting. Just send a Twitter message my way Tuesday or so....</description>
<dc:subject>Movies</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-07-06T10:11:27-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/05/interview_on_th.html">
<title>Interview on the Bethesda Blog</title>
<link>http://www.brettdouville.com/mt-archives/2011/05/interview_on_th.html</link>
<description>Quick post (real ones coming soon, promise); an interview with yours truly has shown up today (or perhaps yesterday) on the Bethesda Blog....</description>
<dc:subject>Professional </dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-05-19T14:45:19-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/04/the_falling_fra.html">
<title>The Falling Frame</title>
<link>http://www.brettdouville.com/mt-archives/2011/04/the_falling_fra.html</link>
<description>Jill answered the knock at the door to find Al behind it. “Oh, hey Al, come on in. Tim’s in the living room.” Al went back to where his friend Tim was squatting on the floor, inserting a bit into a variable-speed drill he held in his hands, fiddling with the chuck. “Oh, hey Al. What brings you by?” “Oh, I just wanted to borrow your... hey, what are you doing?” “Well Al, I’m going to mount this frame on the wall. It keeps falling down but Jill really likes it here.” “By driving screws through the frame? Seems a little extreme.” “Well, I have this putty, I think I can make it match...” “Care if I take a look?” Al inspected the nail currently in the wall and saw the multiple holes there, along with one that looked like the nail had been pulled down on. “What’s the story here? Looks like you’ve tried a few things.” “Well, I used to have it hanging just on a brad, but every few weeks I’d come through here on my way for morning coffee and see the picture on the floor. So I switched to a bigger nail and it’s come down again. I figure I’ll fix it for good.” “Wait, hold on. You say you always find it this way in the morning.” “As far as I remember.” “And you found it on the floor *this* morning?” “Yes.” “Why didn’t you see it last night?” “Well, I went up to bed through here, sure, but it was dark. I had watched an old war movie on the tube and then went up to Jill.” He fired up the drill to check the bit. “Ug ug ugh.” “Just a second, there, maniacal dentist. Isn’t this wall shared with the family room?” “Yeah, why?” “Hold on just a second.” Al walked around through the threshold to the room beyond. “Tim, I think you ought to come in here for a second.” Tim followed his friend through. “This is the wall in question, right Tim?” “Yep.” “And this is where you were watching that old movie last night?” “Yep” “Probably one with lots of explosions and such?” “Yep. The Dirty Dozen, in fact.” “And would you say that the subwoofer was thumping along pretty good amongst all the noise?” “Yeah, I guess so.” “This subwoofer here. The one touching the wall. The wall on which a somewhat heavy frame keeps falling off?” Al dragged the subwoofer an inch away from the wall. “Why don’t you pop another nail in that wall and rehang the frame on it, see what happens.” “Well, I’ll be darned...” Today’s little parable comes to remind us of one fundamental fact about programming, or more specifically, about debugging: you haven’t fixed a bug until you understand its cause. Over the course of my career, I’ve run into dozens of types of bugs, and have probably committed quite a fair number of them. There are off-by-one errors, underflow errors, uninitialized data errors, constructor argument dependency errors (rare, but they happen), plain old logic mistakes, simple typos, and any number of issues which compilers have grown better at catching over the years, such as unintentional assignments inside of conditionals. New hardware has brought all manner of different, fun new bugs to learn to diagnose and discover, and new opportunities to foul up, like DMA chaining issues or the host of hard-to-find Heisenbugs that occur when you’re working with multiple processors or threads sharing resources, such as unusual race conditions. Now, I’ve seen lots of techniques to deal with bugs, some quite... eccentric. I think my favorite was a guy who, encountering unusual data inside of his local variables, would literally rearrange the order in which functions appeared in his source file until the bug disappeared -- certainly the least likely to be effective method I’ve ever heard of for what were most likely uninitialized variables. Almost all of these methods proceeded from the same flaw; that the disappearance of the symptom indicated a solution to the problem. In the end, I’ve come to believe that there’s literally only one thing that is guaranteed to be the same in any successful solution to a bug: you have to understand the cause of the bug first. Even as hardware changes and our approaches to developing also change, this is one I think that will remain constant throughout my engineering career: to solve a bug, you need to comprehend its root cause. In this case, as so often in engineering, it is better to proceed from knowledge, than from hope. To do otherwise... well, to do otherwise you risk being a fool any day of the year....</description>
<dc:subject>AltDevBlogADay</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-04-01T22:41:28-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/03/the_apprentice.html">
<title>The Apprentice</title>
<link>http://www.brettdouville.com/mt-archives/2011/03/the_apprentice.html</link>
<description>“Always two there are, a Master and an Apprentice...” My ten-year-old son told me over the weekend that he has a school project where to understand colonial life, they are supposed to find a master craftsman and learn a skill from that craftsman in the way that skills were passed on at that time. After mulling it over for about three, maybe four seconds, I offered to teach him a little bit of video game programming¹ if he’d be interested. He thought about it and told me the next day that he thought that would be pretty cool, and he seems really excited about it. Tonight we sat down and filled out his apprenticeship contract. After that we talked about how apprentices sometimes got something that they would need for their trade from their masters when they started out, and I told him that probably the most important thing to me when I’m writing a program is to have a good notebook to keep my thoughts in, both to write down ideas as I get them and to keep track of things I still have to do. I happened to have a couple 5”x8” Moleskines with quad lining and so I gave him one of those and we wrote his name and the date in it. I showed him the notebook I use for personal projects at home, with pages of checklists for various projects in various stages of development. So, the first thing he wrote down in his notebook was “make check lists and keep organized.” So proud! Well, that was enough of preparation so we jumped right in and I showed him a little something I’m working on, which is a simple tool I’m writing in Javascript and HTML5 for a home project². I showed him the few things it does (I wrote what I have in an hour or so this morning) and then we cracked open the source file and I showed him the script that produced what he was seeing. Part of what it does is to present an image centered on a canvas and allows you to zoom in and out on it, so I showed him how the program responded to keypresses (this took us on a quick detour into ASCII, but only just) and updated a bit of data storing how much to zoom the image and then I went into the place where the image is drawn on the screen and came across this: w = picture.width; zw = Math.round(w * zoom); var x = (dimx &gt;&gt; 1) - (zw &gt;&gt; 1); Oh, right. Centering on the screen, just wrote this ten hours ago or so not knowing I’d be using it to teach, and there’s bit-twiddling in my very first example. As it turned out, it was a perfect example. They’ve covered decimals enough for him to understand shifting in principle... he just hadn’t ever been exposed to binary. So we jumped in with both feet and I wrote down the number 12. “So,” says I, “you’re used to this number when it’s written in decimal, what is it?” “Twelve.” “Correct! I can also write that number using only ones and zeros!” And I wrote down 1100 next to it. “Wait, so, how is that twelve?” I explained that just like with decimal numbers, each column was associated with a value. In decimals, it’s ones, tens, hundreds, and so forth, but in binary it’s just starting with one and doubling as you go: He totally got it, which was really thrilling for me. I joked that you shouldn’t really trust someone who can count to a thousand on his fingertips and he gave me a quizzical look, so we moved along. Next I explained that what I was doing in my little bit of code I showed him was called “shifting” and diagrammed out what was happening, showing the result He thought that was really cool. So I took the TV remote and the pad of paper and explained how I was figuring out where to start drawing my picture so that it would be centered. We worked through the steps in the math to figure it out. As it turns out, the little tool I’ve been fiddling with is for rotoscoping some images I have and want to use in a forthcoming personal project, should it see the light of day³. I went up on YouTube and showed J some early examples of rotoscoping in videogames -- particularly Karateka, which was one of the first graphical games I ever played on my old Apple II, and Prince of Persia, which came along a few years later. I even showed him bits of Another World/Out of this World in silent tribute to Chahi, who reminded me of the technique at his GDC postmortem4. We talked about how natural the motion looked even though the graphics were really really simple, and he thought that was really neat. I explained how games had started even simpler, and showed him a video of Pong, too. This led us to a little discussion of how much more powerful computers are now. I dug up a picture of an Altair 8800, and showed him how there hadn’t really even been monitors on some of those early machines. I explained how I wrote my first programs on something that didn’t even have a hard drive, just floppy disks. I showed him how much performance had changed by opening up the “About this Mac” window in Finder and comparing that with the memory and performance of that Altair 8800. We used our new understanding of binary together to show the big difference between the two -- doubling performance *how many times*? We were starting to run out of time, and so I wanted to leave him with a basic lesson for the day, even though I had kind of come into the whole thing unscripted. I returned to my program and pointed out that there were really two kinds of things going on in it, functions and data. I explained that a program was really just a bunch of functions that took data and turned it into other data. He knew it was important. He jotted it down: I don’t know what kind of game we’re going to end up with, but I’m glad we’re getting a chance to do it. I hope that we’ll be able to finish something by the time he needs to give his presentation in May, and I think that’s ample time. My apologies to all of you working on or waiting for Skyrim, but I think whatever J’s game is, it’s the most important game I’ll work on this year. ¹His brother did this two years ago and learned how to cook a particular dish from his mother. I think the emphasis is on the master/apprentice relationship and not the historical appropriateness of the skill. ²I’m not convinced that Javascript is the best approach for him, but there are some features which make it nice and a constraint that makes it fairly convenient. First, it has a super quick iteration time, edit text and reload in browser, which I really like -- there’s no compilation step. It also has the virtue of being web-friendly, and the web is something he already sort of understands and sort of uses. As for constraints, well, he won’t be working on things just at my house, so having an environment that I can throw on a thumb drive for him (or even email easily, should it come to that), is really nice. ³If it does, it releases Father’s Day. You heard it here first. 4Well, me and hundreds of others. :)...</description>
<dc:subject>The Boys</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-03-16T21:31:14-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/03/gdc_2011_late_w.html">
<title>GDC 2011 - Late Wednesday to Early Thursday</title>
<link>http://www.brettdouville.com/mt-archives/2011/03/gdc_2011_late_w.html</link>
<description>Here’s the second in a series of posts covering what I saw at GDC 2011, covering from mid-Wednesday to mid-Thursday. I’m going to finish the “reporting” posts and then hopefully return with a post to tie up the kind of “themes” I was pursuing at the conference and what I learned along those themes. After the microtalks, I walked over to Frank Lantz’ talk on “Go, Poker, and the Middle Way”, which involved an overview of the tensions in Go and a fairly personal reflection of time Lantz spent getting to know the game of poker. With respect to Go, which I gather Lantz hasn’t spent as much time with, he spoke of high-level play being a reflection of wisdom and experience, the interplay between concerns of a global nature and a local nature¹. Turning to poker, he spoke in-depth about his personal experience with the game, talking about how poker will break you, and that that is part of any deep experience with the game. He spoke of how “if poker is a meal, failure is an essential ingredient” and said that it’s not a simple thing that in-depth poker play changes how you view the world, that uncertainty becomes a kind of knowledge, and he intimated that he finds that sublime². From talk of failure in poker I went to the “Failure Workshop”, where various indies talked about past failures and the lessons thereby learned. These were kind of “live postmortems” with personal reflections about how things went wrong, from the high profile failure of Stardock’s Elemental: Art of Magic, to unreleased work by the likes of Ron Carmel, Chris Hecker, and others. Chris Hecker identified the root issue he faced with his own failure, which was a fear of game design (he found many ways to avoid game design in development of his own failed title, including speaking at conferences, finding multiple technical solutions to problems), and which he has been attempting to address with Spy Party. For my last seminar on Wednesday, I took in Kent Hudson’s talk about player-driven stories. Hudson presented a good talk last year on how the AI evolved on Bioshock 2, and how they addressed shortcomings in their development process mid-stream to deliver on the gameplay they really needed. Ultimately, I was a little let down by the talk; it seemed like it started to build a case for how to put together truly player-driven stories, and then came to a point where it seemed like “magic” had to happen³. I did think he made good points about story bits overall, that you can present story in some smaller, unique ways and that if you choose to go that way, you really need to “own” it -- really delivering the best you can in the area you choose, whether that be stylized still frames (like a comic) or the right kind of voice-over or what-have-you. Thursday morning started off with a bang, with Eric Chahi presenting a post-mortem of Another World, a highly regarded game for many4. It was a really personal reflection of successful development, starting with a statement that for Chahi, “the nourishment of ideas is as important as the ideas themselves.” He described how he established his constraints early on and improvised within those constraints. From a technical standpoint, the game was built to be run with an interpreted language -- this made for the quick turn-around that permitted inspiration to flower. Chahi was really interested in the flow and rhythm of films, and he tried to replicate that rhythm in the rise and fall of action in the game. Furthermore, how scenes played out often reflected his personal feelings at the time, especially the loneliness he felt as a lone developer on this early title. This was a really terrific talk and it further amplified my interest in Chahi’s upcoming title with Ubisoft, Dust. I&apos;ll pick up next time with another old-timer, Chris Crawford, the founder of the now 25-year-old conference. ¹As it happens, I was reading David Mitchell’s The Thousand Autumns of Jacob de Zoet shortly thereafter, which features Go analogies somewhat heavily between two Japanese officials. ²Watch that word, “sublime”, it’s going to come back when I discuss Moriarty’s talk which was on Friday. ³Perhaps this just means a “significantly advanced technology” at this point, but the two have been epigrammatically linked as indistinguishable from each other. 4I admit that I haven’t played it, but I intend to rectify that when the game becomes available for the iPad, which Chahi announced late in the talk. It’s one I always wanted to play but never found time for....</description>
<dc:subject>Games</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-03-11T07:51:45-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/03/gdc_2011_wednes.html">
<title>GDC 2011 - Wednesday, Part 1</title>
<link>http://www.brettdouville.com/mt-archives/2011/03/gdc_2011_wednes.html</link>
<description>This is the first in a short series of posts about last week’s GDC in San Francisco. I’m not sure how many posts as yet, but probably no more than three or four. I came to GDC early this year to participate in some pre-GDC stuff. Game night with friends Saturday night, pre-GDC Board Games on Sunday night, and then Monday and Tuesday caught up on the city, including a visit to SFMOMA, which is one of my favorite museums in the world, and a little time with a friend from Double Fine. Tuesday night, too, was time for friends, with dinner with some great friends from Sonoma County and a visit to the bookstore with them. Wednesday morning opened early with a keynote from Satoru Iwata, president of Nintendo. It started well, showing trends in the industry over the past few years, and also recapped a little of his personal history with games and game development. Unfortunately, this was interrupted with a visit from Reggie Fils-Aime, who came up to the stage to sell us all on the 3DS. It wasn’t what I had come for, and although I wasn’t entirely surprised, I did feel like I was sold a bit of a false bill of goods by the lecture title. Iwata returned to the stage with his concerns for the future, which were loosely as follows: Craftsmanship: Iwata is concerned about game quality, as we all should be. Talent development: Modern game design and development has become more and more about specialization¹, and Iwata feels a well-rounded, balanced person is where the really great work comes from. He asked rhetorically, “Where will the next generation of master developers come from?” Price pressure: This one was a little jarring, coming as it did while Jobs prepared to announce the iPad2 literally next door to Moscone North. Iwata is concerned that it will be difficult to provide experiences like the Zelda games should prices be driven low, and that game quality will suffer. I could, and may, write a whole post about this, but my quick gloss would be that the landscape is changing; we need either to provide an experience which justifies its cost or bend to the current environment. Next up was Clint Hocking, who tackled the origin of meaning. I’m looking forward to his slides, since over the course I took few notes (knowing that the slides will be forthcoming). Hocking subscribes to the MDA Framework (Mechanics, Dynamics, Aesthetics), about which much has been written, and he used it as a means to examine the potential sets of meanings which came from his own games. It was a really terrific talk, and I look forward to thinking it over further once the slides appear on his site. I spoke with Clint later in the day and commended him on what I felt was likely to be the finest talk I saw this year, and he cautioned me that it was early yet -- he was right about that, and more on that when I discuss Friday’s talks. Around lunchtime was the GDC Microtalks, which I thoroughly enjoyed last year. This year was no different -- the format is that each speaker presents 20 slides which are visible for 16 seconds; all presentations are meant to touch on a particular theme, which this year was “Say What You Play.” Though I took notes on each speaker and enjoyed each talk, I particularly took things away from: Michael John, who spoke about “playing” with games by working with his daughter on building one with Scratch, something that I’d like to do with my own kids Jamin Warren, who urged game players to talk with non-players about what experiences they’ve had, to tell stories to encourage others to give it another look. It called to mind the gentlemen at the Radio Lab podcast and radio show, who have made similar points about the importance of storytelling to changing public perception about science. Asi Burak, who suggested that maybe our immense financial success has caused us to cease challenging ourselves. I’m not certain that’s true, but it gave me pause to think about it, and Brandon Boyer, chairman of the IGF this year, who exhorted us to speak more to the human condition, to delve into sincerity, to bring into existence what we must.² Well, I’ve got to get up and out to work, so this will have to do for the first post. I’m about halfway through the first day, so at this rate it’ll be about six posts, but I suspect it will actually be fewer. In any case, we’ll see, join me over the next few days (and in the RSS feeds if you prefer). ¹Particularly true of programming, but not just true of programming. ²For my own small efforts in this area, see “Personal Games” in the sidebar....</description>
<dc:subject>Games</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-03-07T08:39:28-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/03/knives.html">
<title>Knives</title>
<link>http://www.brettdouville.com/mt-archives/2011/03/knives.html</link>
<description>Jacques tied the apron around his waist as he finished surveying the ingredients in front of him. “You know, Dad, I’ve always wondered why you keep so many knives.” His daughter Claudine had come up behind him while he was collecting materials for dinner. “Can’t you just have one or two? I mean, you have several knives even at the same length!” “Oh, hi, Claudine. Pour yourself a glass of wine and a little more for me, and I’ll answer that as best I can.” As Claudine poured Bordeaux into two glasses, Jacques picked out several short-bladed knives and moved some raw foodstuffs to a nearby cutting board. “Now, see here, Claudine. I’ve taken many of my three-inch blades and laid them out here before you. Can you see any obvious differences?” “Sure. That one there has a serrated edge, that one has a weird curve to the blade, and that one looks a little like your big chef’s knife.” “Very good, Claudine. Each is different.” “But why do you need all of those?” “Well, each of these is better at a different sort of job. That serrated one you mentioned is particularly good for cutting tomatoes, or perhaps sausage. Its wavy edge allows it to slice cleanly into something that is a little bit soft in the center but has an outer skin. You see?” He sliced cleanly into a tomato, slicing it very thinly indeed. “What about this curved one?” “That’s a great tool for peeling fruits and vegetables -- the curve of the blade fits to the curve of the fruit.” “And this one with the wedge point?” “For removing the eyes of potatoes.” He demonstrated deftly, with a flick of his wrist. “But couldn’t you do all of these tasks with any old knife? I’ve seen you make full meals with just your chef’s knife, especially when we’ve been vacationing.” “Oh, certainly I could, Claudine. Most knives are good at doing many things, but these other knives are particularly good at doing one thing. And that lets me move a little more quickly in the kitchen, or make something just a little bit better. For example, when I use the serrated knife to cut tomatoes, it’s much easier to do so without bruising the fruit where the knife goes in.” “Oh! Didn’t it take you time to learn to use all of these?” “Well, of course, Claudine. It’s taken you a long time to learn the proper glass to use for each type of wine you drink, and why, n’est-ce pas? With knives, it is much the same thing -- I have some basic skills I use again and again, but I have to tell you, getting familiar with a new blade is such a pleasure.” “A pleasure? I know you love to cook, but why such a pleasure from this specifically?” “Well, each knife I’ve come to know has changed how I look at the ingredients I use for my cooking. I might realize that there are ways to look at preparing foods I’ve prepared before just a little bit better, or come up with a new way of thinking about a dish. Perhaps I can slice something thinner, and get a subtler flavor.” “Does it make you a better cook?” “Having more equipment doesn’t make me better in the kitchen, I don’t think. But it does let me use my skills in more ways, which might make me capable of doing more things, or doing some of them a little better. Being a good chef is in the soul and the hands and the senses. Now shoo, if we’re to eat tonight I’d better focus.” “May I help?” “Absolument. Take this serrated bread knife and cut that baguette on a diagonal...” Today I want to talk a little bit about the very fundamental tools of programming: the languages themselves and some ways in which I’ve come to view these languages over the past few years. When I began programming professionally, I spent a great deal of effort becoming proficient with C++¹, reading as much as I could and attempting to apply new techniques to problems as I encountered them. I learned from experience and the wisdom of those around me, and I would say that I had learned many of the fundamentals of programming. In the little parable above, this is like learning to use a single knife² proficiently -- one learns many techniques that will allow you to prepare ingredients in the service of your meals. I spent a lot of years coding exclusively in C++. I read numberless books on the subject, designed systems in it, coded tools in it. It became the lens through which I viewed many problems in game development³. I refined my thinking about when certain types of approaches were appropriate, discarded that thinking in the face of new evidence, and rethought it all again and again. But in the end, I started to become like a chef with only a single knife. It wasn’t the best tool for many jobs I would approach, but I didn’t have anything more specialized for the different tasks I would perform. Over the past few years I’ve sought to remedy that. I’ve been re-reading and playing with LISP lately (via Abelson and Sussman’s classic), I learned a bit of javascript, some PHP, some of the latest version of Inform, and quite a lot of Python4. I wasn’t surprised that this made me a better programmer, really; having more tools is likely to make a better craftsman of anyone. But I was a little surprised that I feel it has made me a better C++ programmer. The thing about learning new tools is that not only does it give you the ability to solve new problems in new ways, but it also changes what sort of problems you find yourself able to think about. Just as getting knives that have certain features, additional languages force you to rethink how you solve different problems, and being able to solve different problems grows your thinking altogether. I can’t recommend enough trying some new languages, for any professional programmer. A few things have been helpful for me: Learning by doing. Rather than attempt to read a bunch and apply what I know later, I try and sit down with a text editor and go -- referring constantly to the web. When learning Python, I put a book on my desk, pointed my browser at python.org, and fired up an interpreter. Reading samples of substantial size. Taking apart a good-sized project is a great way to familiarize yourself with how programs are put together, and might suggest features you’re not aware are present. In playing with Javascript and the HTML5 canvas, it has been immensely helpful to be able to dig into Darius Kazemi’s ALES project, a platformer builder that runs in the browser. Attacking “real” problems. Toy problems are useful for learning fundamentals of programming, but trying to solve a real development problem you have is useful for actually learning a language. Over the past few years I’ve built tools for work in python, presented data from those tools in PHP, and I’ve been coding up games in Inform7 and Javascript (with HTML5 canvas). I think that’s about all I have on this subject for now. I hope you’ll go out and get yourself some spectacular new knives... and keep them sharp. ¹This is, I note, a process that continues to this day. I hope to be learning new things in whatever languages I use professionally to the day I die. ²Typically a chef’s knife, if one cooks in the Western tradition, or perhaps a butcher’s knife in the Eastern tradition. The Eastern version of a butcher’s knife is a lot more flexible and of greater utility than the one you see hacking away at cuts at your local butcher’s shop. ³Development process was the other lens I would apply, but that’s a whole different can of worms. 4Also a little bit of SQL, and yes, I’ve played around with C# from time to time. The former doesn’t really feel like a programming language like the others, its domain being so specific, and I’m not much of a fan of C#, though I think it also has its uses. In the case of C#, it’s enough like C++ to me to not feel like a new language at all. I’m also not fond of it being tied to a single platform....</description>
<dc:subject>AltDevBlogADay</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-03-05T14:23:15-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/02/scaffolding.html">
<title>Scaffolding</title>
<link>http://www.brettdouville.com/mt-archives/2011/02/scaffolding.html</link>
<description>The sun beat down on poor Brett¹ as he surveyed the pieces around him. When he had taken the job to erect a pre-fab shed in a neighbor’s backyard, he had thought it wouldn’t take him more than an hour. Having just failed in his fifth attempt, he was about ready to pack it in. “Hey, how’s it going?” Gary² called from his car window as he drove up. Brett walked down to the sidewalk. “Not so good. I’ve tried at least three different ways of putting this shed up, and I just can’t figure it. I need like six extra pairs of hands just to hold the walls in place so I can add these braces to hold the whole thing together. ‘Easy assembly,’ says the instruction sheets, but I’d have to be The Flash to be able to do some of these steps before the weight pulled it down.” “Hmmm, let me take a look.” Gary got out of the car and then quickly paged through the instructions. “Yeah, this looks a bit tricky. Care for a suggestion?” “Are you kidding me? If I don’t figure this out soon, I’ll still be here come midnight. Heck, I’ll still be here come October.” “Walk with me for a minute.” Brett turned to follow as Gary walked down to his house, just a few doors away. “I think what you need here is an extra pair of hands, and I’d be glad to help you if I didn’t have some other errands this afternoon. But I think I can give you the next best thing,” Gary said, as he turned up his driveway towards a small detached garage. Beside the garage was a stack of warped 1” and 2” by 4”s. “Now, you should take a few of those over and see if you can’t build yourself some supports; just enough to hold each wall steady while you do what you need to.” Brett examined the stack of wood, leftovers from some repairs that had been done in the garage a few months previously. It was all junk wood, warped beyond usefulness and destined for kindling when winter came. But certainly it’d be strong enough to hold a wall or two in place, if he framed it right. “Can I borrow a hammer and some nails, too?” “Sure, you know where they are, just put back whatever you don’t use when you’re done.” “Thanks, Dad.” “See you around dinnertime?” “I think *now* you will.” One of the hallmarks of coding experience is knowing when to build something completely throwaway, in the service of the work you’re doing. Indeed, I’ve heard more junior engineers remark of how a senior programmer really knew how to approach problems by building the right tools to understand the problems they were facing. Due to a work experience from long before I was a professional coder, I like to think of the code we write to figure out the problems we face as scaffolding. Scaffolding is the work you do to help you deliver the work you’ve agreed upon. I’ve employed, and seen employed, many forms of scaffolding over the years, but each and every time I see a bit it follows a few general rules: It’s cheap. Scaffolding shouldn’t take you long to do³ -- it’s simple work that doesn’t respect the needs of shipping code, from memory consumption, performance, or any other work. You build it quickly and put it to use immediately. Often, it doesn’t even survive long enough to get checked in. It’s dirty. Really, this goes hand-in-hand with it being cheap, but if you find yourself thinking too much about your scaffolding, you’re probably working too hard on the scaffolding itself. If you’re trying to put up a shed and need a temporary wall to hold together a couple of pre-fab pieces, you don’t expect those pieces to look as good as the finished product you’re making. In fact, no one will likely ever see it, it may not even survive the project. So, feel free to write against all the rules you’ve been taught and whatever coding methodology to which you subscribe -- go in and remove encapsulation from objects so you can access members directly, use terribly abusive algorithms, write reams of data to disk, access memory randomly, hold raw pointers that just happen to be safe... just don’t overthink it. It’s useful. There is one measure, and one measure only when it comes to good scaffolding: utility. Scaffolding code is built only to be useful to solve other problems, not to present problems which need to be solved in itself. Once you’ve written the bits you need and answered the questions you needed answered, it’s time to move on. It doesn&apos;t ship. Take it out before you check-in (whether through pre-processor macros or brute force). Just be sure not to leave any traces which might slow down or bloat your end-product or leave extra rusty nails lying around where someone might step on them -- in particular, replacing any guards that were in place, such as objects&apos; access protections and the like. You want to leave a clean workspace behind. Every coder has things in his bag of tricks that are helpful when you’re doing scaffolding. Perhaps it’s just a bit of python/perl/javascript/what-have-ya to analyze assets you’ve received from art and design, or snatches of code you’ve written so many times you can do them in your sleep, like histograms. Perhaps you’re just printing out a running total of the specific number of objects you’ve created of a particular type using global variables and spitting it out to the debug window, or calling some instrumentation code you’ve written from your game’s console window that touches every game object. When approaching a problem that’s a little bit beyond your ability, or just unfamiliar enough to require serious thought, consider building a little scaffolding to help you through it. If you find yourself wondering what approach to take, ask yourself questions like &quot;What information would I need to approach this problem in the right way?&quot; and &quot;What sort of code would help me address this problem more easily?&quot; and build yourself a little scaffolding to give yourself good answers to those questions. It might seem like it takes you off-task for a while, but it’s often helpful enough to generate a much better solution in the long run. This post was cross-posted with AltDevBlogADay, where I post every couple of weeks. Be sure to check it out for lots of great posts from my fellow authors, on lots of different aspects of game development. ¹Names changed to protect the innocent. ²Oh, who am I kidding. Although I&apos;m a second generation computer programmer, the best lessons my dad taught me about coding had nothing to do with programming at all. ³Though it might give you ideas for future work, given time to properly build for your engine. Today&apos;s scaffolding might point you in the right direction for tools that are currently missing from your codebase....</description>
<dc:subject>AltDevBlogADay</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-02-15T21:51:26-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/02/new_series_of_p.html">
<title>New Series of Posts Coming... Soon</title>
<link>http://www.brettdouville.com/mt-archives/2011/02/new_series_of_p.html</link>
<description>So, one of the things I like to do on this blog is talk about what I think games or game developers can learn from other media.¹ Perhaps the most compelling medium of the last century was film, and as a huge film fan, I&apos;m going to present 12 Films Every Game Developer Should See. I missed January; I will try to spread three films out over February and March. I&apos;ll try to tell you what they&apos;ll be in advance, giving you a week or so, because I&apos;m not going to trouble myself over spoilers. I&apos;m aiming to put them all over the spectrum, so even though one may not appeal to you, hopefully you&apos;ll come back and check out the rest of the series. The first film you can expect to see in the series is 8½ by Federico Fellini. It&apos;s currently available via Netflix streaming, if you&apos;re a subscriber, though I will be watching it on Blu-Ray². I&apos;m going to watch it again this weekend, and will likely have a post up early next week. I hope you&apos;ll watch it with me and we can discuss it in the comments to my post. ¹This is not to say I think games need to ape other media at all. I just think there are creative lessons to be learned from them; sometimes, in fact, these lessons will be personal ones and not have anything to do with craft. ²It&apos;s worth noting that I&apos;m also going to buy each of these films on the best available format for home viewing. I haven&apos;t bought a lot of films; most of my home library is comprised of films I&apos;ve bought over the years for my kids. I haven&apos;t picked out all the films yet, though I have several thoughts, and if I have the opportunity to check one out at the AFI, for example, I&apos;ll take those targets of opportunity....</description>
<dc:subject>Movies</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-02-02T07:51:23-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/02/alienated_from_1.html">
<title>Alienated from the Arcade</title>
<link>http://www.brettdouville.com/mt-archives/2011/02/alienated_from_1.html</link>
<description>Well, it&apos;s moved to a point where I can&apos;t ignore it anymore. I&apos;m talking about the flap over at the popular webcomic. I don&apos;t need to recap the mess, I&apos;m not going to link over to them (they hardly need the whisper of traffic I&apos;d be redirecting), and I&apos;m not going to recap other arguments about it. I read the comic when it appeared, thought it a tasteless commentary about a humorous disparity between MMO written content and the behavior of players. And then I moved on. I do tend to believe that humor should have no boundaries, though reasonable cautions to be sensitive to certain audiences with psychological triggers seem appropriate. Had it been me, I would have received initial complaints, apologized privately for the lack of such warnings (owing to my ignorance; I hadn&apos;t seen such warnings before this mess), updated my site to put such warnings in place, and never said another word, wiser for the experience. It became a problem for me when they took it beyond the comedy and made it a policy to alienate others while appealing to the basest elements of their readers, who have responded in numbers under the purview of the Greater Internet F***wad Theory. (Indeed, if they find this commentary, no doubt my site will crumble under the weight. No biggie.) To those readers out writing the worst kinds of comments on blogs all over: try breathing through your nose for a little while and stop and reflect whether anything whatsoever has been taken away from you, while you&apos;re off on your idiot tirades and making your cruel, crude attacks. Anyway, I was a huge fan. Heck, our second game had a code in it that unlocked the whole game based on the name of their site and comic. Well, they achieved one of their goals, anyway. I&apos;m alienated now, in a way I never would have been had it just been the comic. Time to move on from that particular source of humor, there&apos;s no shortage of others. I can&apos;t consume the content without feeling, well, a bit dirty, in a moral sense. I&apos;ll miss it a bit, I&apos;m sure, but probably less than I would have expected. I&apos;ll throw out the couple of shirts I&apos;ve bought; I just don&apos;t want to be associated with that. Thanks for the laughs....</description>
<dc:subject>General</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-02-01T09:40:15-05:00</dc:date>
</item>
<item rdf:about="http://www.brettdouville.com/mt-archives/2011/01/birdhouse_1.html">
<title>Birdhouse</title>
<link>http://www.brettdouville.com/mt-archives/2011/01/birdhouse_1.html</link>
<description>Hank answered the door to find his friend Ralph waiting outside. “Oh, hi, Ralph, come on in, the wind is blowing cold off the pond out there! I’m just working on a little project, come on back.” The two shook hands and went back to Hank’s workroom, where bundles of sticks lay strewn about and on a worktable, a small house fashioned of sticks was beginning to take shape. “What’s this, Hank? You thinking of starting a fire in here?” “What? Oh, the sticks. No, that’s all for this little project I’m working on in here. What you see before you is the beginnings of a birdhouse I’m putting together to hang outside come springtime.” “From sticks? I wouldn’t have thought that even possible. How are you holding it all together?” “Well, I found that if I carefully heated some green pine, I could get some nice warm sap to use as a bit of glue at the joints here in the corners. It took some experimenting to get just right, but that’s one of the things I came up with.” “But that must take forever! Why not just go buy a couple of pieces and some lumber, bang ‘em together with some nails, you’d be done in an afternoon.” “Well, Ralph, as you know I’ve been trying to keep myself from taking odd jobs -- I find when I work for others, my conscience makes me use a lot of my mental power on the work, and I find I have little energy left for my writing when I come to take pen to paper. Lumber is cheap, but it’s not free, and neither are nails. These sticks dropped down in that Nor’easter we had a couple of months back.” “Sure, I recall.” “Anyways, that birch by the front porch came down in that storm and I found myself thinking the birds who nested there would need a place to nest come spring, and I do so like hearing them in the mornings when I write before breakfast. They’ve done me a lot of good, and I decided I’d repay the favor to have them back again. I plan to hang this house under the eaves.” “I can understand that.” Ralph sighed. “It just seems as if you’re putting in a lot of work, and having to figure out a whole lot. It just seems unusual to me.” “Well, sure. It’s not what most would do. But this works for me: not only do I not have to take a job to pay for the lumber, but it gives me something that I can write about. This project is a birdhouse now, but in a week from now it might be an essay I can sell. Now, what do you say you help me get this roof on, and then we can go smoke our pipes on the porch? Hand me that little pot of pitch off the wood stove...” One of the things I’m aiming for with this series of posts I’m doing with the AltDevBlogADay group is to find a constraint that helps me improve my writing, and I’ve chosen to do so by restricting myself to telling a parable and then spending a little time explaining what I mean by that parable or anecdote. I don’t often have time for creative writing, although I enjoy it, and so I’ve put myself under a constraint that forces me to write at least a little bit every couple of weeks in hopes that it’ll inspire creativity. In this parable, I recall an author who most elegantly introduced me to the topic under discussion.¹ One would tend to think that having as much time and money and resources of all kinds will lead to the very best games and products. In fact, often engineers will say or think to themselves that if they just had more time or more people, they could really make this library or module sing.² It could do x, y, and z. Indeed, many programmers will start out with a lot of architecture to solve a large domain of related problems, and end up leaving many loose ends when it turns out they don’t have the time to fill out all the functionality, which I’ve seen both in novice code and commercially licensed engines. But, as it turns out, this is exactly the opposite of what really works, in engineering, in design, in craftsmanship of any kind. What really works is to identify constraints and work within them. Constraints inspire creativity. In the parable above, what Hank really wanted to do was to have time and material for writing, not money for goods and services. He had identified a constraint he wished to place on his own efforts -- to work as little as possible for others, because that work cost him things that were more precious to him. Indeed, reminding himself constantly of that constraint made him able to creatively solve problems -- in choosing to build a birdhouse by hand, he found he needed to manufacture glue, which lent itself to a creative solution. There were a few elements at work here: He didn’t shirk the problem. Sure, Hank could have said good-bye to the birds once and for all, but he decided that this was a problem he wanted to solve, even if it meant difficult work. It’s easy to avoid problems altogether, rather than trying to solve them within your constraints. He kept his constraints always in mind. He didn’t run to the hardware store at the first sign of trouble, which left him problems that he needed to find solutions to within his constraints. He chose his constraints. What he wanted was time and space to write and think, not money he would likely not even have the time to fully spend. It was a conscious decision not forced upon him, in this case, though external constraints themselves can have value. Time and again I’ve seen the value of constraints in game development, or heard wonderful anecdotes about how some problem was creatively solved despite the lack of engineering time to fix it “properly”. Here are a couple of memorable ones. Dark Forces had a simple scripting language but no variables -- it was a simple command language, where certain types of world state could be set, but it didn’t have variable support. One of the things that could be controlled from script was moving elevators. So, unable to get direct language support for variables, level designers instead would place elevators in the world, unreachable by the player and never rendered, and move them up and down to represent variables.³ Star Wars: Jedi Starfighter had inherited a very simple scripting environment from its predecessor, and although we extended it in some simple ways, it wasn’t a language that had a lot of state. When level designer John Drake approached me and said he wanted to implement a tug-of-war between the player’s forces and the AI, moving resources back and forth through a space in the level, I thought it couldn’t be done without code support (which we didn’t have to spare). But John pushed that language to its very limits to produce one of the most interesting and tense battles of the game.4 Those are a couple of areas where craft had to respond to constraint with creativity. There are ample examples in narrative and design as well. Consider: The storyline behind both Ico and Shadow of the Colossus, two of my favorite games, boils down to “young man rescues the princess”. Each use a pared down design as well, constrained to few player actions in compelling environments. Take your favorite indie game. Indies are severely constrained in resources, limiting all aspects of their process, from development to marketing. Yet each successful indie finds creative ways through the morass, from new business models to clever marketing to innovative gameplay to simply crazy fiction. Constraints don’t just apply to your development or design environment, such as coding languages or scripting, or how you can spend your polygon budget, but also to development itself. As a parent with a couple of grammar-school-aged sons, I have quite a number of constraints on my time that I’ve chosen. When I started at my current employer, I let them know about those constraints -- that I have kids, that there are nights of the week where I am their sole guardian, that I’m very involved in their sports and activities, and that I simply wasn’t available to be at work during those times, even if the team was crunching. This was definitely a choice as some of these constraints are more flexible than others; while I must be around when they are in my care, I’m not obligated to coach their teams. I try to keep this constraint in mind throughout the life of the project; early in the project, when it’s easy to lose focus and meander through your tasks, both those that you choose and those that are chosen for you. But keeping in mind at all times that the time you are spending is all the time you’ll have helps focus you on remaining efficient, removing as much waste from your workday as possible.5 Early on, I invested in projects that would pay off not only immediately, but in keeping me able to maintain that constraint when the ship date was looming. It’s far better to choose that constraint early than to have a different set of constraints forced on you at the end. So, I turn it on you, fellow developers. Pull up a chair, grab a pipe, sit a spell, and tell me: how would you comport yourself if you had that constraint? How would you act today if you knew you could only work the forty hours a week we theoretically sign up for? And what other constraints would help inspire your creativity? ¹Bonus points if you can identify the characters here and where they are. ²I’ve been very guilty of this myself. It’s an easy trap to fall into. I call it &quot;worshiping at the altar of Yagni&quot;. ³We had a similar limitation in the first Star Wars: Starfighter game, where although there was no variable support, an LD used the fact that he could react to changing properties on an object to set the radius of a waypoint up and down and fire off scripts based on those, depending on where the player was in the level. It was crazy, but it worked. 4The level as originally designed and balanced was made for and by expert Starfighter players and it really gave me a run for my money when I played it during our beta period. We ultimately made it easier, but beating that level on its original difficulty was some of the most fun I had building that game and testing it during development. 5I often jest with a colleague, “Hey, we gotta get going, we only have three years to build this thing!”...</description>
<dc:subject>AltDevBlogADay</dc:subject>
<dc:creator>Brett Douville</dc:creator>
<dc:date>2011-01-31T09:01:28-05:00</dc:date>
</item>


</rdf:RDF>
