Rome

fountainMan, central Rome is thoroughly awesome. It seems like there’s something fascinating hidden in every street, be it a ruin, a huge basilica, a fountain or sweet alfresco dining. The sights we queued for weren’t as interesting as the ones we found serendipitously.

Rome is easy to get around. Most sights are within walking distance. My guidebook says the metro isn’t worth bothering with, but it’s wrong, wrong, wrong. If there’s a metro stop near where you need to go, it works extremely well. Far easier than trying to figure out how the buses work.

Share Comment Forum

Back from Italy!

Freshness is Protagonist!

Soon I’ll post about how it went, but first I have to make some travel insurance claims. :-/

Share Comment Forum

Radiohead model applied to World Of Goo

2D Boy, the developers of the indie classic, World of Goo, recently concluded a promotion where customers could name their own price for the game. They’ve released a ton of information about how much people paid and why they chose the price they did. There are two datasets, 57,076 units were sold in total, and 4,095 people completed an after sale survey (at the time I requested the survey data).

2D Boy are doing their fellow developers a fantastic service here. If you’re trying to price your games, you couldn’t ask for more pertinent data.

Here’s a histogram of unit sales versus price:

histogram

Here’s the same data, multiplied out to find the revenue versus price:

revenue_vs_price

Look at that peak at $5! Looks like iPhone App Store-style pricing might be here to stay.

From the survey, here are the reasons why people chose their prices:

price_reasons_overall

The segment of reformed pirates is about 10%, which is disappointingly small, considering the very high piracy rates that 2D Boy have alleged.

It’s interesting to see a significant number of people using this as an opportunity to pick up the game for a different platform, especially since if you bought it from 2D Boy back when it was first released, they gave you download links for Windows, Mac and Linux. I’m tempted to interpret this segment as people who bought it from WiiWare, disliked the imprecision of the wiimote, and bought it again for PC to play it with a mouse.

The graph gets far more interesting if you break it down by the price chosen:

price_reasons

Now, bear in mind that a large majority of the revenue came from prices $5 and over. The grid’s right-hand half is where the money was made. Notice how nearly 40% of that side chose their price because they wanted to reward 2D Boy for using this business model. If pay-what-you-want becomes the norm, it’ll no longer be a novelty, and those customers will start paying what they feel is affordable. The novelty factor could be boosting 2D Boy’s revenues by up to a third.

The survey also asks how much the game should ordinarily sell for. You get an entertaining graph if you put that against how much people actually pay:

professed_over_actual

See, this is why market research surveys are full of shit. People will tell you one thing and then act completely differently. There’s a general consensus that World of Goo is worth at least US$12, but on average people paid US$2.03 for it.

It’s said that a thing’s only worth what people will pay for it, but if you give people a bargain and a fair price, and they’ll take the bargain.

Share Comment Forum

Flashbang no longer doing the portal thing

raptorsafariFlashbang have announced they’re discontinuing further Blurst games in favour of a full-fledged Off-Road Velociraptor Safari game.

Blurst hasn’t met our expectations.  More specifically, Blurst’s traffic has not increased to levels where it will pay for itself. … We are halting development of our 8-week projects and beginning longer-term development on Off-Road Velociraptor Safari.
Flashbang Studios are the guys that single-handedly brought Unity 3D out of obscurity. They created Off-Road Velociraptor Safari, which spread all over the web. For people outside the Mac sphere such as myself, it was a showcase of the technology. As far as I know Unity weren’t paying them to build games on the platform, but they should have been.

To confuse their branding situation further, Flashbang created Blurst, a site which collects all their Unity games together with the same user and highscore table system. They embarked on a plan to create a new game prototype every 2 months. It resulted in some superb stuff, and they’ve been a huge influence on what I’m doing with Mostly Tigerproof.

(Except for their plan to grow into a portal with an army of repeat visitors, of course. Pretty unlikely I could pull that off! Mine’s more of a portfolio site.)

It’s a slight disappointment to see them pick Off-Road Velociraptor Safari for full production, but totally understandable given its brand recognition. If you ask me, Blush is their best work. It’s the same basic game mechanic as Velociraptor Safari, but the camera is more helpful. It also has much greater focus: there’s only one goal, fetch eggs and feed them to a spooky glowing orb. Compare that to Velociraptor Safari: when I play that, I’m torn between dinosaur hit ‘n’ run, corpse fetching, orb collection and driving stunts. If you play only one Flashbang game, play Blush.

The trouble with Blurst was the low frequency of new games. A consistent style and level of quality is peachy, but to make it in the portal business you’ve got to have a game for every occasion a visitor wants to kill time. That means 3rd-party games. Perhaps this product-centric business model will suit them better.

Share Comment Forum

Orbital Billiards Revisited

I was all set to go off in a totally new prototyping direction, but for some reason my thoughts kept returning to the first Mostly Tigerproof prototype: Orbital Billiards. The prototype UI had a lot of really obvious problems, so perhaps I was hasty to consider the game concept a dead end.

I’ve made some improvements that should make it more of a game and less of a physics toy:

  • A prediction line for the cue ball’s path.
  • You can rotate the globe to view the reverse side.
  • Single player score keeping.
  • It’s properly turn-based this time, instead of letting you strike the ball any time.
  • Twice as many pockets, twice as many balls. The pockets are now arranged around the globe in a tetrahedral formation. The starting configuration has a rack of six balls placed at the centre of each tetrahedron face. I’m hoping this gives the player far more viable shots than the old set-up with pockets at the North and South poles.
Play it on the web here.

Share Comment Forum

Does game advertising ever work?

shotgunfreeLately I’ve been taking an interest in ad supported games. It’s tempting to believe that you can make a living as an indie without ever asking your players for their credit card numbers, but it’s ultimately dependent on the advertisers getting decent value, and I have serious doubts about that.

For example, take this case study prepared by an ad network called Mobclix. It’s about an iPhone app called Shotgun Free. It makes shotgun noises in response to being shaken as if it’s a pump-action shotgun. (Idiotic, huh?)

The app displays ads across the bottom of the screen for a scanty 15 seconds per ad. You wouldn’t imagine that many people would see, let alone click on an ad while they’re making gun gestures with the whole device! Surprisingly the ad network behind this game is trumpeting a superb 6.5% click-through rate for this game.

If you believe any of these users intentionally clicked, I have a bridge going cheap. While they’re loading the shotgun, their pinky finger will be in the neighbourhood of the ads. The developers are making money off poor ergonomics!

You don’t have to be on the iPhone to take advantage of wayward clicks. The only times I’ve ever clicked on an ad at Kongregate have been during frantic gameplay.

You can only fool the advertisers for so long. Eventually they’re going to realize that visitors sourced from Mobclix never stay on their site for any length of time, and that their purchase rates are terrible. They won’t know why, because advertisers never deal with developers directly, but they’ll invent some explanation. Maybe they’ll assume that gamers are the wrong audience. Maybe they’ll think there’s click fraud. Whatever they conclude, it’ll force down Mobclix’s advertising rates.

I can see two outcomes:

  1. Conventional wisdom forms among advertisers that game ads just don’t work. Ad rates dwindle to nothing. See MochiAds for a preview of this: they’re paying $0.20 CPM. A million page views is worth a measly $200!
  2. Ad networks insist on stringent requirements on how ads are presented.
I’m not relishing either possibility because I’ve been really enjoying the fruits of the ad supported Flash scene. I’d hate to see their livelihood dry up, or their creative options dictated by ad networks.

Share Comment Forum

Gathering statistics using Google Analytics and Unity 3D

This article is ancient. Unity has analytics built in now, and also there’s a modern Asset Store implementation if you’re looking for Google Analytics in particular: https://www.assetstore.unity3d.com/#/content/11098


As a game developer I’m terribly jealous of the data-gathering schemes that companies like Valve and Bungie have going. Take Valve for example: they have detailed stats of where players get killed in their games. This is invaluable stuff for creating a consistent level of difficulty. I decided that I wanted a system like this of my own.

I started designing a database and looking at server-side programming languages. After I’d been working on this for a couple of days, I thought “logging events and aggregating statistics is incredibly common, someone must’ve done this already. If only I could use their code…”

Then I realised, Google Analytics. Duh!

Google Analytics logs web traffic numbers and gives you a nice user interface for slicing and dicing the data. Not only had they already written the server code, they also run the server for you! It’s free for the first 5 million page-views per month. I’d been reinventing the wheel.

All I had to do was trick Google, by feeding them a special fake page view whenever a player dies. I soon discovered that Google was way ahead of me. They already have an API for tracking ‘events’ that happen on a page. People seem to mostly use these for integrating e-commerce sale figures into their web traffic reports, but it’s equally suitable for tracking in-game events.

Setting Up

If you sign up for Google Analytics and put their Javascript snippet in the page with the game, you’re all set. You’ll need your own domain name, or a subdomain at the least to sign up.

Here’s the code you need to run in Unity whenever something happens:

Application.ExternalCall("pageTracker._trackEvent", new object[] { category, action, label, value} );

Um, that’s all of it. This is a non-blocking call to run a Javascript function in the page that holds the Unity Player. I haven’t investigated triggering events from a standalone app yet.

The line above will work with the standard Javascript that Google hand out upon signing up. Note that you won’t be able to test it locally - it needs to run on a page hosted at your domain. If you run it locally, you’ll get an error in the Javascript console saying ‘O not defined’.

Data Model

By now you’re probably wondering what the 4 parameters are to our function call:
  • Category. This is a free-form string used to categorise your events. It’s the highest level of organisation applied to your events. I’ve been storing a concatenation of the game name, version number and level ID in here.
  • Action. Another free-form string which represents the type of event. I’ve been using actions such as “killed” and “game_start”.
  • Label. This is an optional string parameter to the action. For example, the killed action uses the label to store the cause of death.
  • Value. This is an optional fractional number parameter to the action. For example, I keep the length of the game session in here when I send the ‘game_end’ action.

Analysis

So what’s all this look like from inside Google Analytics? It’s a batch processing system, so first you need to wait overnight for your data to come through. Next, log in, pick your site and select ‘Event Tracking’.

analytics1

You’ll see a hierarchy of categories and actions, like so:

analytics2

Yes, those are real numbers. Some day I’ll get around to promoting this site. :-)

If I want a breakdown of causes of death in Glob Arena, I hit the ‘killed’ link and get this moneyshot:

analytics3

Glorious.

Cross-domain scripting

Unity Player 3 tightened up the security model to match the same-origin policy of Adobe Flash Player. Basically if you request information from a different domain to the one where the .unity3d file is hosted, the owner of that domain has to explicitly allow it using a file called crossdomain.xml. You’d imagine that would prevent the analytics from working, but it’s not affected.

With this technique the sequence of events is:

  • The app makes a Javascript call to the enclosing page.
  • Google’s Javascript snippet rolls up all the event data into a query string, then requests a GIF image from their servers with the query string in the URL.
  • Google’s server logs the information in the query string, and sends back an empty GIF which is discarded by the client.
Cross-domain restrictions apply to the request of the GIF, but luckily it’s the web browser making the request, not Unity. Loading an image in the browser isn’t subject to Javascript’s same origin policy. It works just as if you were hot-linking the image at Google.

Limitations

Thankfully, collecting personally identifiable information via Google Analytics is not allowed. Not only is it a sleazy thing to do to your customers, it’ll get your account banned.

This means that you’ll only get aggregate information on player behaviour. You can split the statistics up into sub-populations using the Advanced Segments tool, but it won’t ever show you a log of some individual’s actions. Google Analytics is no substitute for asking someone to test your game, while you look over their shoulder.

Share Comment Forum

Mostly Tigerproof Launched

I’m pleased to announce my new website: Mostly Tigerproof.

“Huh, what the hell is that?”
Mostly Tigerproof is a place for me to organise my game prototypes and other hobby projects.

It has all the prototypes I’ve posted here, but in web player form, so you don’t need to go through the rigmarole of installing them. Prototypes are by their nature are small games, so I’ve tried to make the playing them as quick and convenient as possible.

If it’s not quick and convenient, comment about it and I’ll fix it.

“Yeah, yeah, but when’s the next game due out?”
Don’t know. I’m not sure what I’ll try next. If I build a game based around abusing particle systems, it’ll be next week. If I start making a 4X with a stone-age tribal theme, it’ll be a while longer.
“What’s this got to do with tigers? Are you even slightly tigerproof?”
It’s not named after me! It’s named after Aunt Barbara. She’s not allowed in zoos any more.

Share Comment Forum

Glob Arena Revisited

Glob Arena 2

Glob Arena was the prototype I enjoyed the most. I’ve gone back to it and filled it out with 5 more enemy types. While none of them has changed the game as much as I’d hoped, the extra variety has given it more longevity.

I’m starting to explore the idea of an ecology of creatures inhabiting the arena, interacting with one another. The first revision of the game just fills and fills with obstacles. I’ve given this one some monsters that consume others and it’s helped to maintain a reasonable enemy density in the endgame.

The windows executable is here (5MB).
Play it on the web.

Share Comment Forum

Osmos

Looks like I wasn’t the only guy playing around with game concepts based on movement by firing reaction mass. Osmos is a game about collecting mass while trying to conserve the mass you’re using for propulsion. It’s played on a 2D plane and there are no sticky bullets, so I guess the territory I’ve been exploring hasn’t been completely mined out. :-)

Share Comment Forum