Running Up the Score

With Sandy out of town for a few more days, I decided to do something silly…namely, binge on Gamerscore points by getting a Blockbuster Game Pass and renting as many easy 1000-pointers as possible. The goal is to see how much I can pump up my score in a short period of time. In preparation, I consulted Achieve360Points.com’s achievement list (which can be filtered by difficulty) to see which games out there are the cream puffs of the 360 line-up.

Starting Gamerscore: 10781

The first game I rented was the notorious Avatar: The Last Airbender: The Burning Earth. This game just came out recently, and has already earned a (well-deserved) reputation as an easy 1000 points. Why? You can get all of the achievements within a couple of minutes by simply mashing the B button. This video demonstrates how it works. Overall, I only played the game for the couple of minutes required to get all of the points.

Next up was NBA 2K6. By tweaking the game and coaching sliders at various points in the game, I was able to get all of the required achievements in one game. After maxing out Shaquille O’Neal’s stats, the 90’s West All-Stars coasted to a 264-39 victory over the Atlanta Hawks. O’Neal finished with 202 points, 26 boards, 28 assists, and 33 steals in a dominating performance, scoring over 50 points in the last 3 minutes of the game to reach the 200 mark. Since I was playing with 12-minute quarters, it actually took me a little over an hour to rack up the 1000 points from this game. Some of that was running up the score, though, so it’s probably possible to do it in a shorter amount of time.

Third on the day is Madden NFL 06 — I settled for this since they didn’t have NBA Live 06 available, and it took me a little more time to finish than NBA 2K6. The big kahuna in this game is the “complete 30 years of franchise mode” achievement, which any sane individual would accomplish by simulating those 30 seasons. This is where the picture-in-picture mode of my TV comes in handy — while slowly advancing through the 30 simulated seasons, I was watching TV or otherwise entertaining myself in between the sporadic button presses required to continue simming. Afterwards, I played one quick-play game to get most of the remaining achievements (a 192-9 victory for the Patriots over the Niners, in which Tom Brady threw for something like 1700 yards, and Deion Branch had over 1000 receiving yards), and one franchise game with 1 minute quarters (won 6-0 by the Cowboys).

Today I picked up NHL 2K6, which I’m about to start playing. After this, I should be up to 14781 points. UPDATE: That was fast. I pumped up the Dallas Stars, and faced off against Belarus, which was the lowest-rated default team that I could find. After figuring out the fastest way to get some of my own guys in the sin bin (wiggling the right analog stick furiously when defending against an offensive player), I quickly got all of the achievements except for the one involving a penalty shot, which took a little more research to obtain. Ring up another 1000 points.

Whistle-Blowing

The Anaheim Arsenal lost to the Utah Flash earlier tonight, 102-90, in a game that was seemingly interrupted by a whistle every 30 seconds or so. There were tons of technical fouls called (some of which were unjustified, in my opinion — the most egregious one being a technical foul on the Arsenal after a Flash player refused to give up the ball following an offensive turnover), and a few close fouls that really took the wind out of the Arsenal’s sails in the 3rd. Unfortunately, the box score doesn’t seem to list the technicals. There was a stretch of five or six offensive possessions in a row in the 3rd that were stopped on Arsenal fouls or turnovers — pretty brutal.

Notable tidbits:

  • Utah’s Kevin Kruger shot 1-for-7 yet wound up scoring 17 points, thanks to 15-of-16 shooting from the free throw line. I think he must have taken something like six or seven technical free throws…
  • The Arsenal were without the services of Marcin Gortat, who was recalled to the Magic. Gabe Pruitt was back with the Flash after a cup of coffee with the Celtics, but he didn’t get a huge amount of PT.
  • There was a huge disparity in assists (21 for Utah versus only 8 for the Arsenal), which surprised me as I didn’t think that Utah’s ball movement was that much better than Anaheim’s.
  • Clipper Darrell was there at the start of the game, but didn’t stick around for some reason. Perhaps the Bat-Signal was lit?

Once again I got moved up to courtside (along with my former coworker Adam), which was a nice upgrade. At one point, a ball skipped out of bounds, hit my drink in the cupholder to my right, and flipped it over into the cupholder on my left with only minor splashing — pretty funny!

Arsenal Playing Better…

The last couple of Arsenal games have shown real signs of improvement. First of all, I think the team’s offense is finally on-track — there was much better ball movement and players moving without the ball in both games. Second, the defense has improved, with a lot more help and defensive pressure when appropriate. The difference between the most recent games and the pre-season is huge.

On Friday night, the Arsenal handily defeated the Jam 103-85 for their first win of the season. We actually got impromptu upgrades to courtside seating, which was really cool — I’ve never watched a basketball game (apart from stuff like intramurals) from the sideline, and it’s fun to hear all the communication on the court. And, of course, I felt obligated to help the home team’s cause by trying to sow confusion in the Jam where possible. Fun stuff.

Last night, though, the LA D-fenders came to town and won a close one 99-95. The Arsenal never let the game slip out of reach, but, at the same time, could never quite get a substantial lead going. They were in it down to the final ticks, thanks to some timely rebounding, but couldn’t sink the 3s when it mattered. The only major statistical difference was, once again, foul trouble for the Arsenal — almost every other category was tight. Coby Karl (son of George Karl) had a great, efficient game for the D-fenders, going 7-for-11 for 19 points, including 3-of-5 from downtown. The president of the D-League was in attendance — hopefully he’s not looking too hard at the attendance figures at Arsenal games, which have been lagging behind those for franchises that lack major sports teams in the area.

A recent fixture courtside at Arsenal games has been Clippers super-fan Clipper Darrell. He’s extremely energetic, has a bullhorn for a voice, and loves to get the crowd going. His car is decked out in Clippers red and blue, and his wardrobe includes a similarly-colored outfit reminiscent of Two-Face. Not sure if he came of his own accord or was invited by the Arsenal, but whatever it was, it was a good move — he really livens things up. I assume we’ll only see him when the Clippers aren’t in town — apparently he hasn’t missed a Clips home game since 2001…

Revision Control

Having recently started to get more serious about development at home, I decided to install a couple of different revision control programs and give them a whirl.

First, I installed Perforce. Perforce is a commercial version control system, but it’s free to use for up to 2 users and 5 client workspaces. I was already familiar with Perforce from my time at Obsidian, but that was from a user perspective — I was curious to see if setting up and administering a Perforce database was also straightforward. Fortunately, it is pretty straightforward — I was able to get things set up and working in minutes, and haven’t had any hiccups in my (admittedly simple) use of it so far. It gets two thumbs up from me.

Next, I installed Subversion. This is the de-facto replacement for crusty old CVS, and it’s come a long way in the last few years. I installed it via pre-packaged binaries, and also added the Tortoise SVN Windows shell plugin and the VisualSVN package. My first impression of Tortoise was negative — the installer caused a problem with Windows Explorer that forced it to restart. Considering that shell plugins can cause a wide variety of mayhem, this is not an encouraging sign, even less so considering that my past experience with Tortoise (several years ago) resulted in the same strange issues. I haven’t used it for a project yet, but I’m somewhat discouraged by the fact that it does not integrate with the MS SCC API, and their FAQ response regarding SCC API support is just plain incorrect in parts — Perforce supports atomic transactions as well as the SCC API, and I haven’t yet seen the case where you would want to mix source control providers within the same solution. I’ll have to play around with this some more…

A third option I wanted to try was SourceGear Vault. I’ve never used it before, but it seems to bill itself as a drop-in replacement for the muchmaligned Visual SourceSafe. Unfortunately, it uses IIS and SQL Server as its back-end, which I don’t have (or want, at least for now) installed on my machine, so I couldn’t set up my own server and had to settle for checking out the demo server. My impressions were not super great — the demo server was slow, leaving the client unresponsive in many cases. While there appears to be support for atomic transactions, this only seems to include checkins — it does not include delete, rename, or other operations. This is really a killer problem in situations where you have even a small number of people working with a project — it adds “friction” to the seemingly simple tasks of reorganizing files, thus making people reluctant to do them (and more likely to put up with bad organization). The SourceGear website bills their products as solutions for “small and midsize teams,” but with the aforementioned weaknesses (and readily-available alternatives) I would hesitate to recommend Vault for anything more than a single developer. Fortunately, a single-developer license is free.

I may try a few other options when I have the chance, so there may be a follow-up to this in the future. (After all, I still need to play around with Subversion some more.) But so far, it looks like I’ll be sticking with Perforce.

Top Billing

I saw a link to this article with a blurb about J.J. Redick:

Magic SG J.J. Redick said he had been frustrated enough with his lack of playing time that he wondered if perhaps he should ask about playing with the Anaheim Arsenal of the NBA’s Developmental League.

I have to say that I would get a kick out of it if he were assigned — I could give him some crap about his video. (In TV commercials, it’s billed as featuring advice from “the best shooter in basketball history.” The website inserts a strategic “perhaps” in there…weak.)

0-3

The Arsenal lost 99-91 to the Rio Grande Valley Vipers last night. The box score pretty much tells the story — the Vipers shot 90% from the free throw line (on 25 attempts), grabbed 16 offensive boards, and only turned over the ball 12 times. Compare that to the 71% free throw shooting, 20% 3-point shooting, 14 total free throw attempts, and 20 turnovers for the Arsenal. The Arsenal fell behind by 13 points during the first (then closed it to 9 at the break), came back to take a 2 point lead, then fell down 11 points and never recovered. The Arsenal play, both offensive and defensive, was inconsistent. There were stretches of good offensive and defensive possessions broken up by panicky, one-on-one play (or my other favorite, long 3-pointers early in the shot clock), and overly-conservative defensive play that let the Vipers either take uncontested shots, or beat their defender off the dribble to the hoop.

The quality of play and officiating is definitely improving, though. The first couple of games were marred by tons of clock problems, including a case towards the very end of the home opener where the clock started before a player received an inbounds pass. Given that the game went down to the last shot attempt, I don’t think it’s a stretch to say that the extra second taken off by the clock error might have had an effect on the outcome. The game last night had no clock problems, fortunately.

Since I can’t watch Cowboys-Packers tonight due to distribution issues with the NFL Network, I am watching the CelticsKnicks game. The Celtics are absolutely drilling the Knicks, which, of course, brought to my mind the question of how well the Knicks would play against D-League competition. Another interesting tie-in: the Celtics’ Gabe Pruitt was assigned to the Utah Flash just in time to play the Arsenal in their home opener, in which he hit the game-winning shot. Two days later, he’s recalled to the Celtics. Life just isn’t fair sometimes…

UPDATE: Man, the Knicks can’t do anything right, entertainment-wise. They failed to let the Celtics double them up, and at the buzzer, Nate Robinson hit a 3 from halfcourt to prevent the Knicks from breaking their all-time lowest score (58). Weak.

Watching Movies With Film Majors

Having constructed the Potemkin villages that are game environments, game developers just don’t see games the same way that the general public sees them. Every game developer I know has, at some point (and usually, often) sat around with co-workers, playing the latest and greatest game and critically ripping it apart for problems that are both easily seen and those that are more subtle. “You can totally see a seam on that texture.” “Oh, great, another FedEx quest.” “This UI is terrible.” “That cutscene sequence was dumb.” “Weapon X is totally worthless.” “This game is so unbalanced.” There are probably a million more complaints that you could come up with. Knowing what goes on behind the curtain makes us understand limitations of game engines, where corners have been cut, and seemingly inexplicable design decisions better than most.

When the Playstation 2 was released in the US, I sat in on our company demo of the new console. Partly due to the underwhelming launch titles, and partly just because programmers tend to be grouchy, we had plenty of fodder for complaint and discussion. But one of the more excited and forgiving souls in the room rolled his eyes and pronounced that, “Man, listening to you guys is like going to see a movie with film majors.” Truer words were never spoken.

I recently read this great blog post about Mass Effect (a game I have not yet played), in which another game developer points out some of the tell-tale signs of triage, content cutting, technical challenges, and design changes. In addition, there’s also some discussion of how these situations come into being. Having been a big part of a large, ambitious game project myself, I can vouch for a lot of the bullet points discussed, and wanted to comment a little bit further on things.

It is extremely rare for games to ship with the full feature set envisioned early on in the project — so typically, features and content are classified as either vital or non-vital. If, during development, a feature or piece of content is not working out, it can be cut if it is non-vital. The need to classify work in this manner early in the project’s life span, however, also begets a lot of the problems mentioned in that blog post.

  • “Undue or odd simplicity.” Game mechanics that sound great in design discussions may not work out so well once they are later implemented. (For example, the boss battles in Guitar Hero III have been pretty much universally panned.) Since a lot of resources may have been poured into these ideas, the preference (rightly or wrongly) is usually to keep trying to make them work somehow, rather than just cutting them. These triage efforts may take the form of simplification, or providing alternate methods to “get around” the balky mechanic. The latter category includes the “you’ve failed this part 5 times, do you want to just skip it?” crutch that has become popular in recent games.
  • “Significant differences between demos and the actual game.” Even if you do decide to cut a feature or some content, if you’ve ever showed it to the public or talked about it in the press, people are going to be wondering where it went in the finished product. And if you leave those vestiges on the shipped disc, you never know what might happen
  • “Sudden narrative leaps and loose ends.” Cutting non-vital story content and dialogue can still leave awkward gaps in a story, even if it doesn’t totally compromise it. Characters that simply show up or disappear without a trace, deus ex machina, and sudden jumps in location or disposition all tend to be signs that some non-vital content was cut and patched up in a low-risk fashion.

I also have to throw in some additional RPG-specific commentary on the “lots of bugs” category. RPGs tend to be games of large scope. They try to provide an experience that is more customizable (in terms of choices having an impact on gameplay) than almost any other genre, an engrossing and lengthy story, and interesting gameplay on top. If you imagine the gameplay experience translated into a directed graph of a player’s actions, RPGs tend to have very high branching factors compared to other game genres. This variability drastically increases the amount of test paths that must be checked, and even if you have a massive army of testers, it is extremely difficult to ensure 100% test coverage. I would go so far as to say that no modern RPG can achieve this. (The continual refinement and patching process of MMORPGs is a testament to this.)

An anecdote of the complexity of RPG games was related to me by a former co-worker at Obsidian. He told me that, several years ago at Black Isle, there was some discussion of adopting the then-new Dungeons and Dragons 3rd edition rules (widely viewed as very successful, and which simplified many arcane aspects of earlier editions) into a game that was already in development and using an existing engine. As part of the feasibility study, effort was put into determining how the combat system would need to be changed. One of the programmers diagrammed the combat resolution system on whiteboards, and wound up using something like 54 square feet of whiteboard space on an incomplete flowchart of the system, before the decision was made that it not feasible to adopt the 3rd edition rule set. The vast number of feats, spells, and items that exist in modern D&D take a massive amount of effort to implement, and oftentimes have subtle, unspecified, or ill-defined interactions with each other. Granted, as far as complexity goes, D&D is fairly high on the scale, but even simpler rules systems are tricky to get right.

Mass Effect is, by all accounts, not a short game, so I’m not surprised that it may seem buggy. But if game developers and publishers want to continue producing epic, complex RPGs, I believe that the tools for producing and testing gameplay content must become much better, and automated testing of gameplay scripting must somehow become a reality. Ensuring that changes and additions do not break progression in an RPG can sometimes be a very time-consuming process, because a bug may only affect certain character types, later parts of the game, or (worst of all) be randomly-occurring. To put this in perspective, for NWN2, we had testers who were “sprinters,” whose job was to simply go through the game as quickly as possible, to ensure that the “critical path” of the story was working and viable. If I recall correctly, “sprinting” through the game took about 20 hours. When you need a multiple-day test to really ensure that a change hasn’t caused another problem somewhere else, your iteration time and desire to make polish changes suffer.

One source of direction and inspiration is Inform, the interactive fiction authoring system whose latest incarnation uses a natural language system to construct gameplay. I’ll probably have more to write about Inform later — I think it’s fascinating and a tantalizing glimpse of the possibilities of higher-level gameplay tools.

Home Opener

Tonight is the home opener of the Anaheim Arsenal, versus the Utah Flash. I read this morning that the Arsenal started the season with a 120-113 loss to the Colorado 14ers (a name that, let’s be honest, does not roll off the tongue as easily as, say, the Sixers). Obviously this was a pretty high-scoring game, but I’m not too surprised — we saw a scrimmage between the Arsenal and the Bakersfield Jam last Friday night, and the tempo was pretty high throughout. I would say that most possessions ended with a shot when there was still 10-14 seconds on the shot clock, and the score of the scrimmage was deflated only by generally low-percentage shooting throughout the game.

It’ll be interesting to see if having a few more days of practice and work changes the pace of the Arsenal’s game. I thought that there was way too much one-on-one play during the scrimmage we saw, and not enough ball movement, but when the players actually were moving smartly without the ball, and setting picks for the ballhandler, something resembling a quality offense peeked out. I guess this will also be an opportunity to see what the team’s rotations will be, going into the season.

Not sure if there were roster cuts or whatnot before opening night, but it looks like a couple of players from the scrimmage (Derrick Franklin and Anthony Harris) are no longer on the roster. However, the roster also doesn’t include the recently-assigned (from the Magic) Marcin Gortat, who played in the Colorado game, so who knows what’s going on. I do know, however, that it’s pretty unlikely that this quote from the article was taken verbatim from Gortat, a Polish native: “Dwight (Howard) is a freak athlete and practicing against him has prepared me for the level of talent I must go against on a nightly basis in the NBA and the D-League.”

Rock Band

Rock Band is awesome. I got it this morning and have been playing the drums for most of the day, driven by the desire to crack the top 1000 in the drum career mode, if only fleetingly. (I finally managed to do so a few minutes ago, peaking at #997. It’s tough, because there are tons of other people playing as well, so I had to go back to earlier songs to get points that I missed.) I haven’t even pulled out the guitar or the microphone yet, but I think I’m going to try the new guitar in a little bit here — it’s getting a bit late to play the drums. They’re not super-loud, but they’re not super-soft either. I figure some silent tips may eventually be in order.

The presentation of the game, by the way, is awesome. The characters are animated (and lip-synched) really well, there’s a decent amount of customization for characters and gear, and there are some really great screen effects and camera angles used at various points. (One example would be the many loading screens which are run-time generated “photographs” of you and your band in various poses and situations. It shows your character with all of its customization, and is not just a canned image. It’s a pretty cool effect.) Overall, I think it’s way better looking than Xbox 360 Guitar Hero III.

XNA Game Studio 2.0 Beta is out

It can be found here. The biggest new features include integration with all SKUs of Visual Studio 2005, and support for Live on both Windows and the 360. The Visual Studio integration is huge, in my opinion, if only because it enables source control and add-in support for developers. I guess now you’re also able to use mixed-mode debugging for XNA projects, but I believe that is only useful for Windows-based projects — I can’t imagine that they’d ever allow unsigned code execution on the 360 (for security reasons). One can always hope, though. 😉

They claim that the final release isn’t far off, either. With Visual Studio 2008 having just been released to manufacturing as well, I would imagine that there will be a refresh for XNA Game Studio that will include support for 2008. (The 2.0 beta doesn’t seem to integrate with 2008, or at least Beta 2 of 2008.)