Many game designers are so enamored with their game that they neglect the player.
I’ve been sick for the past week or two, so I’ve been getting very little done and pursuing rather escapist past-times. One of the unhealthier things I’ve done is play a lot of Bethesda Game Studios’ Oblivion. A whole lot of it. Steam says I’ve put in 39.3 hours, and I’ve only been playing for four or five days.
It’s an escapist game that appeals to my urges for exploration, completion, and optimization, even if I feel the need to patch the hell out of it. I’ve got 39 mods installed for it, all graphical upgrades, bug fixes, or interface tweaks. People no longer look like corpses and most of the bugs are fixed, making the game quite playable.
As much as I clearly enjoy the game, it suffers from a fatal flaw: the developers sacrificed user experience in their pursuit of their game system. Oblivion has an elaborate, interesting setting and backstory, an impressively large and detailed world, and a complex set of mechanics. But it’s all a lot less fun than it should be.
I posted the other night about my difficulties with Adobe’s iPhone packager for Flash, the program that lets you convert a Flash app into an iPhone app. I’ve managed to track down at least one of the issues that’s been eluding me, but it’s a doozy.
If I name an embedded bitmap resource “sprBatteries,” the app hangs at startup on the iPhone.
I can name it “sprDryCells” or “sprBatteriesX,” and it works fine. I can replace the resource PNG with a PNG I know works elsewhere, but if I name it “sprBatteries,” the app hangs. The app runs fine on my desktop. I believe (although I haven’t done systematic testing to confirm) that it works on the iPhone if I compile it as a simple AS3 app using the Flex compiler instead of compiling it as an AIR app. The resource variable name doesn’t collide with any others in the project.
If you’re not a programmer, let me explain that this behavior is bizarre. Variable names are totally arbitrary. As long as you don’t use any prohibited characters, you can name a variable anything you want. A college friend of mine liked to call his loop iterators “taco.” Many languages/compilers won’t even bother remembering the variable names once the source code is turned into a program. Flash happens to record theirs in the compiled SWF for various reasons, but there’s no sensible reason why “sprBatteries” should be treated differently than “sprBatteriesX.”
I give up on AIR for iPhone unless someone can get me a solution. I’ll see if I can get this running in simple AS3 without any hardware APIs, but it’s unlikely that my final product will contain any accelerometer input (for example). This is frustrating, and I’ve spend a total of over 12 hours fighting with this thing. Adobe hasn’t represented this as a finished product, and rightfully so. In its current form (and assuming I haven’t overlooked something simple), the Packager for iPhone is not ready for use in serious AIR development.
Yesterday, Richard Terrell at Critical-Gaming posted about the genius of slowdown. In the post, he discusses the slowing down some games display in complex scenes due to hardware limitations. Terrell writes:
The benefits for the slower gameplay are the same as with bullet time. When the game is slowed down, the player has additional time to process and analyze the game. But unlike bullet time, the amount of slowdown that occurs is directly proportional to the amount of in game “chaos” on screen. Like the smart slow-mo from Perfect Dark that activates when two players in a multiplayer match move within a certain proximity of each other, slowdown makes the game time relative to action and position.
Slowdown like Terrell describes was far more common on older consoles of the SNES era or earlier. Typically, when a large number of enemies or other sprites were on the screen at once, the game itself would slow down as the console churned to keep up with the graphics. Examples are the slowdown that occurred in some Zelda games when healing fairies filled the screen with a ring of hearts, or the lag that happened in early Megaman games when there were more than a handful of enemies and projectiles visible. As Terrell points out, these slowdowns aren’t just unintended errors. They connect the player to the medium, in a similar way to the oddities in Mark Z. Danielewski’s book House of Leaves connect its readers to the medium of the book.