Monday, June 14, 2010

This is exactly what I was afraid of

I remember the first time I heard the idea floated about "microtransactions" in gaming, the so-called "freemium" model, where instead of paying $20-$50 up front for a game, you get it for free, and then pay for small bits of content or on an as-you-go basis.

I remember thinking, "yeah, that's going to suck." Why? Because it sets up a situation where the developer's goals and the gamer's goals are at odds.

In the traditional model, the goal of the developer is to maximize fun for the gamer - the more fun the game, the more the gamer is willing to pay for it, and once the game is purchased, there is nothing standing in the way of the game developer trying to make everything as fun as possible.

In the "freemium" model, the goal of the developer is to not maximize fun for the player, but instead maximize the frustration of the player, without having them quit the game altogether, so that they are willing to pay as much as possible.

I remember trying to make this point with some fellow gamers, and being told, no, no, I've got it all wrong - it will just be used to deliver more content. In other words, it's the same model, but the framework for delivering content is free.

Well, some games may follow that model, but those weren't the ones I was worried about.

Lo and behold, I was bitten by the freemium model recently. GodFinger, by Ngmoco, for the iPad, was a casual little game with charming graphics and some fun, toy-like mechanics. My boys enjoyed watching over my shoulder as I played it. At its core, it is a "grinding" game, namely, it takes exactly zero skill to play; instead, you advance by patiently and dutifully issuing commands to your units, buying new resources for them with the in-game money they amass, etc.

Now, as with most "freemium" games, GodFinger also allowed you to buy "Awe points" with real money to skip over the things that require patience. "Instantly recharge your mana!" "Build this building now instead of waiting 24 hours!" And so on. But for the time being, I was willing to patiently grind away without buying Awe points. I saved up for a long time to buy a Deluxe Tavern, which would allow me to refresh four units at a time AND earn income while doing it. It was an expensive item, and took a long time to save up for, but after getting it into operation, it was working well.

Then a game update hit. Suddenly, all money-generating buildings began giving less money, and instead of yielding gold multiple times before needing to be recharged, would only yield gold once, and would not start on this process until they were fully charged. Moreover, you could no longer "top off" buildings, so you had to let them fully drain before recharging them, which not only made your time spent between playing inefficient, but also removed a fun gameplay mechanic wherein you could place multiple buildings together and recharge the next building with the over-charge from the first.

But worst of all, my new Deluxe Tavern now only refreshes three units, and it no longer yields income. My $2400 Deluxe Tavern now does the same thing as a $400 tent.

Now, I can see no way this update, nerfing players across the board, was done with the players' interests in mind. The effect of this update, across many changes, is to slow everything down and make mana less productiv, presumably to get people to buy more "Awe Points" with real-world cash. Heck, they even added in-game goals to award experience points for spending Awe points. This was nothing but a transparent, deliberate change to add frustration to all players to wring money out of them.

Now, lest you accuse me of being a freeloader, consider this: Awe points add nothing to the game. All they do is allow you to not wait for something to happen. The rate at which things happen in the game is arbitrary, is set by the developers, and may be changed at a whim on system updates. This is not paying for new scenarios, new gameplay capabilities, new fun. This is pure and simple throttling back the gameplay to extort money out of people. (There are a few buildings which can only be bought with Awe, but each of them has a nearly identical alternative that can be purchased with the in-game currency, so I am not counting these.) Ngmoco is not really offering anything content-wise for the money you give them; only a different speed at which things happen.

And what if I had invested some real-world cash in Awe points to buy that Deluxe Tavern instead of grinding for it? That Deluxe Tavern would have cost me $5 in real world money to purchase in Awe points. Days later, its capabilities - that which I was buying, essentially, would have been arbitrarily removed without warning or recourse. It's one thing to hold back some special premium-only game features, but it's an entirely different thing to offer players cool new in-game gadgets they can buy with real-world dollars, and then after they buy them, remove the capabilities that prompted you to buy the gadget in the first place. At this point, I'm glad I didn't buy any Awe points, and I feel sorry for anyone who did, because every dollar they spent was turned into a fraction of its in-game value with this last update.

It's also relevant to note that while the value of mana and gold you buy with Awe points has gone down, because they can do a lot less now than before, the cost of Awe points has not gone down proportionally to the value of what it can buy. All of the above might be excused if it was balancing everything across the board, even Awe, but that is clearly not the case.

Basically, this has all been a very telling (and sadly, predictable) experience with the "freemium" game model. Ngmoco is "freemium" at its worst - starting a game on false pretenses, and then slowly throttling back the fun to frustrate the poor saps who have been playing the game into buying Awe just to get an approximation of their old experience back. This is why I like to own my game instead of rent my game.

The sad thing is: this game was actually very nice. In other circumstances, I'd have given it five stars. It had excellent interface elements, beautiful graphics, a unique tone, and high production values. I'd gladly have picked it up as a for-pay game in the App Store. And I would have even dropped money on Awe points if the for-pay model was to use it to provide new content like a story mode or scenarios. But this nickel-and-dime model feels like money-grubbing, and is antithetical to the relationship between developer and player wherein both are pulling for the best overall experience.

Okay, I've ranted a lot. I do want to say that there are a few developers who "get it." I'm still convinced that a scrupulous developer can make the "freemium" model work. Examples include:

  • Ramp Champ by the IconFactory, wherein you get honest-to-god new content, artwork, challenges, and other ancillary benefits when you buy a new ramp pack.
  • WarpGate HD by FreeVerse, which does let you "buy forward" in the game by purchasing a big, pointy ship, but they don't also run down the fun of the "normal" gameplay to make you want to buy it out of frustration
  • Crosswords by Standalone, which lets you subscribe to premium crossword puzzle providers in exchange for honest-to-god core content. Here, the payments go to the crossword puzzle provider and not Standalone, but the pay-for-play model is still there, and offers real, tangible value aligned with the interests of the player.


Sadly, these seem to the the exception rather than the rule.

Easy Depth Sorting in Actionscript 3

I'm working on an ActionScript 3 project, and I needed a way to height-sort objects on the screen (so that elements further down the screen are drawn on top of elements further back). Thanks to a little web searching and my own hacking, here's an easy solution to the problem. It's called "DepthSort Space", and it's a movie clip that depth sorts all its children each frame. Currently, it uses bubble sort on the list, but if speed is of the essence, you could probably use some other sorting mechanism.


package {

import flash.display.*;
import flash.events.*;

public class DepthSortSpace extends MovieClip {

public function DepthSortSpace() {
super();
this.addEventListener( Event.ADDED_TO_STAGE, this.addedToStage, false, 0, true );
}

private function addedToStage( e:Event ) {
this.stage.addEventListener( Event.ENTER_FRAME, this.enterFrame, false, 0, true );
}

private function sortDisplayList():void {
var len:uint = numChildren;
var i,j;
for( i=0; i < len-1; i++ )
for (j=i+1; j < len; j++)
if ( getChildAt(i).y > getChildAt(j).y ) this.swapChildrenAt( i, j );
}

private function enterFrame(e:Event) {
this.sortDisplayList();
}

}
}


To use this, just make a new symbol, and set its class to DepthSortSpace (or subclass DepthSortSpace as your movie clip if you're already adding custom code for it). Then, add any objects you want to depth sort as children of this movie clip. It will handle it automatically.

Thursday, June 10, 2010

Safari 5's New Feature

While Safari 5's new extensions feature is getting a lot of buzz, I can already tell you what my favorite new feature is: Safari reader.

Basically, when you're presented with a site that has something interesting to read, but it's all crufted up with horrible layout, ads, navigation, banners, tiny type, etc., a button appears in the URL bar. Click it, and the page fades to black, and the article, presented with nice, clean CSS, slides up for easy reading.

Predictably, some people are up in arms over this feature because it hides their precious ads. These people should listen to Lukas Mathis, who argues that if you're upset about Safari reader, then you've only got yourself to blame for it - if your site was readable, people wouldn't need to click a button to make it so.

In particular, I don't feel the need to click the reader button on Lukas' site. It would be redundant, because his site is so readable. But I've used the feature already today on a different site.

Friday, June 04, 2010

Apple's HTML5 Gallery

Apple just released an HTML5 Showcase showing what's possible with the current generation of browsers (read: why the need for Flash is overstated).

I think what's clear is that Flash is still the way to go if you want to do vector-based interactive animations (i.e., games), but Flash is no longer necessary (or, at least, should be the fallback) for the things it's been used for in its most popular contexts, like video playback. That's a good thing, since video is a media type that browsers should understand, just like images, and it's in the spec. The sooner people are coding to the spec, the better.

But even the interactive animation context is under assault. With the canvas element, you can already create interactive animations using bitmap graphics and crude vector graphics. It won't be long before HTML5 games start showing up. If Adobe wants to make the case for Flash's long-term relevance, they need to stop putting all their chips in fighting against the video tag - they lost that one when YouTube jumped - and start focusing more on staying ahead of the canvas element. Adding "real" 3D support (ala Shockwave3D) to Flash would go a long way toward that.

Or, better yet, make a Flash-like IDE for HTML5/Canvas, and migrate Flash users to that, and become the de-facto IDE for developing next-generation interactive web content just like they dominated the last generation. Unfortunately, I don't have a lot of confidence that Adobe is that forward-thinking from their track record with products like Director. But maybe.