MMOG Development

This page contains the collected wisdom of all the vastly brilliant things I've found to do with MMOG development - that aren't mine. External resources, in other words. I've only just hacked together this page within WordPress, so this is all still a bit experimental. Hopefully it won't screw up too badly. Enjoy.

(I've got 50+ things to add to this page, but I'll need to sort out some more sub-categories first, and gradually add the entries. Bear with me - the page will be useless for the next few days/weeks/months until it gets to become a sizeable resource)

Resources to do with network programming...

Concepts of “object identity” in game programming…

Hume just posted his Lessons Learned from the warmup for Ludum Dare 23 (48 hours to write a game from scratch – starts this weekend!) – and his positive experience using an Entity System.

In his epic comment (sparked by a different Adam – not me, honest), is this gem:

“Using the entity system for the first time was unreal to me. It’s like polymorphic code. I did really weird things on the fly. For example:

- In the health processor, if the enemy was just destroyed, set a flag in the lifecycle component.
- In the lifecycle processor, if the fresh kill flag is set, extract its loot component and put that into a new entity with a small randomized velocity component and a gravity component so that the loot drops; then, remove most of the other components from the entity and add an explosion component.

The “enemy” still has the same entity ID — any other components that are looking for that entity will still find it (e.g. missiles homing in on the wreckage, or score processors looking for slain entities) — but by swapping one set of data with another, its implementation has changed from an enemy to some kind of non-interactive effect object.”

(emphasis mine)

Identity. It’s important.

(Quick sidenote: for all the people asking questions like “but … which variables do I put in Component A as opposed to Component B? How do I manage Events in an Entity System? … etc” – Hume’s approach above is a good concrete example of the first-draft, easy-to-write way of doing things. Copy it.)

Identity in games

This is one of those things that newbie game programmers seem to underestimate, frequently.

And when I say “newbie” I include “experienced, skilled programmers with 10+ years of coding experience – but who haven’t yet shipped a game of their *own*”.

(e.g. I’ve seen a couple of studios that started as Digital Agencies, or as Animation Studios, etc – that then transitioned to writing their own games. This is the kind of thing that they often struggle with. Not for lack of skill or general programming experience, but for lack of the domain-specific experience of game coding)

Examples of Identity in games, off the top of my head – all of these are independent, and interact in complex ways with each other :

  1. Game-role: e.g. … “enemy”, “powerup”, “start location”
  2. Code ‘object’ (in OOP terms): e.g. … “the sprite you are drawing at position (4,5) is part of Object X. X is coloured THIS colour”
  3. Gameplay ‘object’: e.g. … “the sprite at (4,5) represents a Tank. If a Tank sprite ever touches a Glass sprite, we need to play the Broken Glass noise”
  4. Physics element: e.g. … “5 milliseconds ago, our Physics Engine thought this thing was THERE. Now it’s over HERE. Don’t confuse the Physics Engine! Make sure it ‘knows’ they are the same object – not two separate objects”
  5. Network “master/clone”: e.g. … in multiplayer, there are N copies of my avatar: one per computer in the game. One of those N is the original – and changes to the original are constantly used to overwrite the clones; changes to clones are LOCAL ONLY and are discarded. Which is original? What do we do with incoming “changes” – which local Code Object do we apply them to? (your Code Object will be different from my Code Object – but they’ll both be the same identical Network Object, save mine is flagged “clone”)
  6. Proper Noun object: e.g. … “The Player’s Tank” is a very specific tank out of all the Tanks in the game. Many lines of game code don’t care about anything except finding and operating on that specific tank.
  7. Game-Over representation: e.g. … after the player has killed all the enemies, and they see a Game Over (won/lost/etc) screen, and you want to list all the enemies they killed … how do you do that? The enemies – by definition – no longer exist. They got killed, removed from the screen, removed from memory. You could store just the absolute numbers – but what if you want to draw them, or replay the death animations?
  8. …etc

Identity in Entity Systems

ES’s traditionally give you a SINGLE concept of Identity: the Entity (usually implemented as a single Integer). Hmm. That sounds worryingly bad, given what I wrote above. One identity cannot – by definition – encompass multiple, independent, interrelated identities.

But we’re being a bit too literal here. ES’s give you one PRIMARY identity, but they also give you a bunch of SECONDARY identities. So, in practice…

Secondary Identities in an ES

In OOP, the Object is atomic, and the Class is atomic. You cannot “split” an Object, nor a Class, without re-defining it (usually: re-compile).

In ES, the Entity is atomic, and the Component is atomic. But the equivalent of an OOP Object – i.e. “an Entity plus zero or more Components” – is *not* atomic. It can be split.

And from there comes the secondary identities…

A Primary Identity: e.g. “The Player’s Tank” (specific)
A Primary Identity: e.g. “a Gun Component” (generic)

A Secondary Identity: e.g. “The Gun component … of the Player’s Tank Entity” (specific)

Revisiting my ad-hoc list of Game Identities above, I hope it’s clear that you can easily re-write most of those in terms of secondary identity.

And – bonus! – suddenly the relationships between them start to become (a little) clearer and cleaner. Easier for humans to reason about. Easier *for you to debug*. Easier *for you to design new features*.

Global Identity vs. Local Identity

Noticeably, the network-related Identities are still hard to deal with.

On *my* computer, I can’t reference entities on *your* computer. I cannot store: “The Gun component … of YOUR player’s tank”, because your “Player’s Tank” only exists in the memory of your computer – not mine.

There are (trivially) obvious solutions / approaches here, not least: make your Entity integers global. e.g. split the 64bit Integer into 2 32bit Integers: first Integer is the computer that an Entity lives on, the second is the local Entity Integer. Combined, they are a “global Entity ID”.

(I’m grossly over-simplifying there – if you’re interested in this, google for “globally unique identifiers” – the problems and solutions have been around for decades. Don’t re-invent the wheel)

But … at this point, they also offer you the chance to consider your game’s network architecture. Are you peer-to-peer, or client-server?

For instance, P2P architectures practically beg for unique Global entity numbers. But C/S architectures can happily live off non-global. For instance:

  • On each client, there are ONLY local Entity numbers
  • When the client receives data from the server, it generates new, local, Entities
  • …and adds a “ServerGenerated” component to each one, so it’s easy to see that they are “special” in some ways. That component could hold info like “the time in milliseconds that we last received an update on this object” – which is very useful for doing dead-reckoning, to make your remote objects appear to move smoothly on the local screen
  • The server *does* partition all entities from all machines. But none of the clients need to know that

Or, to take it further, if your network arch is any good at all for high-paced gaming:

  • The server differentiates between:
    1. The entity that the game-rules are operating on
    2. The entity that client 1 *believes* is current
    3. …ditto for client 2, client 3 … etc (each has their own one)
    4. The entity that the game-rules accept (e.g. if a hacked client has injected false info, the game-rules may override / rewrite some data in the local object)
  • The server also tags all the entities for a single in-game object as being “perspectives on the same thing”, so that it can keep them in synch with each other
  • The server does Clever Stuff, e.g.:
    • Every 2 milliseconds, it looks at the “current entity”, and compares it to the “client’s belief of that entity”. If it finds any differences, it sends a network message to the client, telling it that “you’re wrong, my friend: that entity’s components have changed their data. They are now X, Y and Z”

… or something like that. Again, I’m grossly over-simplifying – if you want to write decent network code, Google is your friend. But the fastest / lowest latency multiplayer code tends to work something like that.

How?

Ah, well.

What do you think?

(hint: you can do wonders using Reflection/Introspection on your entity / components. By their nature, they’re easy to write generic code for.

But you WILL need some extra metadata – to the extent that you may wish to ‘upgrade’ your Entity System into a SuperEntity System – something with a bit more expressive power, to handle the concept of multiple simultaneous *different* versions of the same Entity. Ouch)

Yeah, I’m bailing on you here. Too little time to write much right now – and it’s been a *long* time since I’ve implemented this level of network code for an ES. So, I’m going to have to think hard about it, refresh my memory, re-think what I think I knew. Will take some time…

Entity Systems: integrating Box2D with Artemis

Thanks to Mike Leahy for spotting this:

http://blog.gemserk.com/2012/02/02/how-we-use-box2d-with-artemis/

…a short blog post (with code) on how a team is integrating Box2D (a very well known open source physics lib) with Artemis (a java implementation of Entity Systems which starts from the same point as my Entity Systems posts, but fleshes it out)

Realm of the Mad God – a great game, interesting monetization

I’ve recently been playing the excellent Realm of the Mad God – a very fast-paced 2d co-operative shooter. My feeling is that it’s going to be one of the most important games of 2011/2012, as it continues to grow in popularity. Typical experience of this game is that within 30 seconds of being dumped into the main level, you’re surrounded by monsters, and then surrounded by other players, all on the same screen as you, blasting away in a rainbow of colours.

Sounds good. As if that’s not enough … it’s the guys who’ve been working with AmitP (Amit J Patel) (Amit maintains one of the best up-to-date collections of links and algorithms for indie game-developers). If you haven’t seen Amit’s pages, I recommend browsing through the blog – his links collection is OK, but his blog posts on algorithm design are excellent. If you get as far as the posts on “how I auto-generated a realistic 3D-world”, you may notice a striking similarity to the 2D worlds used in RotMG …

Anyway, it parallels an idea for an MMO shooter I’ve had kicking around for a long, long time. For me, it’s been a delight to see what works (and doesn’t) about the core ideas. The RotMG authors have done a great job of making a fast, simple, quick, easy-to-grasp game.

The Good

Fast. No barriers to play

This is how MMO-shooters should be: fast, furious, permadeath – but very quick to get back into the fray. You should expect to die tens of times every hour.

Permadeath – but paralled with some perma-advancement

Your progress is split evenly between items (which can be banked) and avatar stats (which are lost forever upon death).

Perma-advancement increases variety, unlocks new features

With 10 classes, there’s plenty of variety – and each class can only be unlocked by achieving a minimum level of progress with one or more other classes.

NB: this part could be improved and expanded IMHO. In particular, the classes are wonderfully varied – but merely unlocking classes isn’t enough these days. Plenty of games have shown that permanent-unlocks work best when there’s a variety of game-features in there. Also, the classes themselves would work better if there were some cross-effects (c.f. Diablo 2′s Lord of Destruction expansion, which had abilities in one class improve abilities in your older classes, re-vitalizing them for re-play)

Free game, paying is optional – payment kicks in when you’re most bought-in to the design

Free players get a tiny storage for permanent items (1/50th of what paying players get – it’s not enough! … so pay!), and are only allowed 1 class “alive” at once.

In a delicious twist, if you don’t pay for the game, the only way to take advantage of a newly-unlocked class is … to commit suicide … since you’re only allowed a single character per account (unless you pay)

You can ONLY benefit from other players, never suffer

(there’s actually a case where you can suffer, sadly – Thief’s get killed as a secondary-effect of other players teleporting to them, since the game doesn’t have a “prevent people from teleporting to me” flag)

This is the one that should have most wannabe-MMO-designers sitting up and paying attention. If you group-up with other players:

  1. You all get the same experience-points as if you’d single-handedly killed every monster
  2. You get the points just for being nearby – no need to score hits just to “tag” it for yourself
  3. Mob strength is constant, but player damage is multiplicative on number of players present

Net effect:

Every player is willing and eager (*) to collaborate with every other player, without words being exchanged, without fear of being ripped-off.

In a game that’s fast paced and frantic, you don’t have to keep pausing to negotiate. Other players can ONLY benefit you, so … run with them.

(*) – or just ignores the other players. Their presence doesn’t provide negative impact on you. It’s only their absence that is negative (in game-design terms).

Interesting design choices for lag

As a real-time game with dozens of players on screen at once, lag is guaranteed to effect gameplay. We’re always saying “try to work around lag through game-design changes”, so here’s the decisions they made:

  1. When packets are lost, everything moves in exactly the same direction it was going, at exactly the same speed, forever
  2. “Speed” used above is the “on-screen speed, including any rubber-banding effect”
    • FAIL: this means monsters and players often move MANY times faster than they are allowed to – so that when the lag stops, the side-effects are magnified
  3. Your avatar can’t be hit NOR damaged while it’s missing packets from the server
    • For the early parts of the game, this *almost* completely fixes lag problems
  4. Projectiles (bullets etc) that your client didn’t receive are queued up and sent to you all in one go once the packet-dropping stops
    • FAIL: this multiplies the damage output of enemies (NB: not players!), breaking all the designed-in balance in the game
    • In mid to late game, this ruins the gameplay – players end up running around never seeing a single enemy, because if you’re close enough to see it, a single flicker of lag will cause you to receive ZERO damage initially, followed by MORE damage than the monster is capable of – delivered instantaneously
  5. The client is authoritative on player liveness/death
    • MILD FAIL: in effect, coupled with the other features of the game, and the lack of lag compensation … this means you CAN and SHOULD (and, for some cases, effectively: MUST) cheat. You can run a bot on your machine – and if the network is less than perfect, you have to, in order to play the game properly.

Overall, apart from the massive security flaw (where anyone could write a bot to be invulnerable – and the developers are encouraging them to do so), it seems very close to a good solution for an MMO shooter.

I’m surprised by the way they approached the “save up the enemy bullets, then unleash them all at once”. My guess is that it wasn’t designed, it was just an accident: maybe they took a slightly lazy approach to compensating for lag (they don’t), and the net effect is this. It looks very much like what you get when using TCP for game-data packets (I really hope they’re not using TCP; if so, most of the lag is the developers’ own fault)

The Bad

I’ve unlocked half the classes, and looked at what classes other people play (and which classes rise high on the leaderboards). There’s good variety, and almost all the classes get used – even the beginning class, the one you get for free, works well.

Except one.

Unfortunately, at around 50% through unlocking the special classes, one of the classes is horribly unbalanced. The Assassin (which is supposedly an upgraded Thief – but is a massive downgrade) is almost impossible to play. The special ability fails completely when there’s lag (which is frequent in this game), and the class is the weakest, lowest-range of the lot. Looking around, you rarely see Assassins (I suspect: you only see them when people are desperately trying to upgrade them, to get past this dull and frustrating point in the upgrade tree).

Worse, because the *only* way to unlock the higher level classes is to reach the level cap with this class … you’re forced to play it. Over and over again. Watching the bad game-design … over and over … and over … again.

Every time the assassin dies, it’s like another twist of the knife:

We know you don’t enjoy this

We know that a mistake in our game design has you stuck here

(and our overall game design makes that “mistake” into “a disaster”)

We know that this whole process is turning “a class that wasn’t much fun” into “a class you hate”

And there’s nothing you can do about it!

So, single-handedly, it’s driven me to *not* purchase any game credit. I’d enjoyed the game enough to that point that I’d already decided to buy it – and if this had been on iTunes, I’d have paid already. But since it’s not an iPhone/iPad game, and paying for it is a bit more difficult, I hadn’t made the payment yet.

As it stands, I’m still playing occasionally, but now it’s for research rather than for enjoyment, which is a great pity.

Monetization: money thrown away

I think the developers are missing an ENORMOUSLY successful way to make money from this game. In fact, it’s so big, I suspect they could increase their revenues by a substantial multiplier.

With a permadeath game, there really is no need to actually delete the dead character. If the player isn’t paying, they are forced to kill their character sooner or later to change characters.

Taking a leaf from Flickr’s book, why not keep ONE single character in storage, with a tempting “buy now, for goodies *and to have this one returned to you, ready to play*”?

I’d set it so that when you change class (if you’re a free player), only the last character of the PREVIOUS class is retained. If you switch from Warrior to Knight, you can die many times as a Knight, and your Warrior remains on ice. But if you then grow tired of the Knight and switch to a Rogue … the Warrior is tipped out, and replaced with the last Knight you had.

i.e. you setup the exact flow of decision-making and options and “safety” that the player would have had, if only they’d purchased sooner, and allow them to benefit from it retroactively – if only they make the decision to pay.

Of course, it’s a very limited “retroactively” – it’s a sampler, to let you see the benefits of paying.

(*) – Flickr’s early promise was “upload your photos in highest resolution, you can view them for free – but only low-res versions. HOWEVER, we keep the high-res versions for you – forever, for free – until you decide to purchase a subscription. At which point, not just your new photos, but ALL your photos, become magically available at highest res”. It was a great way of simultaneously offering a high-value to paying customers, while making non-paying customers feel they weren’t committing themselves to loss. It reassured a lot of potential customers at a time when Flickr wasn’t yet famous, and most people weren’t yet “hooked” – it bridged that gap.

Analyse this

So, the interesting question is: how common is this problem?

Are the dev team correlating “players who pay” and “the point at which they pay”?

More importantly, are they correlating “players who DON’T pay” and “how their experience differed from the average”?

The last time I saw an MMO with a level-based kick in the teeth this bad … was in Tabula Rasa. We had a point where poor signposting by the quest designers meant many players were given quests that were many levels too hard for them, and effectively impossible to do. Those players died over and over and over again in a short time – and they hated it.

The dev team knew “you’re not supposed to do that quest”, but often they (randomly) gave it to new players as the first quest. I wasn’t privy to the arguments over whether this needed to be changed (and there were definitely arguments), but I did see the analytics that eventually got produced. They showed an almost perfectly smooth, averaged, graph of player behaviour – bar a big notch at this particular location. It stuck out like Rudolph’s nose on a snowy day.

I wonder if there’s a similar notch in RotMG? For a game that’s almost *designed* to drive people to rage-quit … what stats do they see on “what the last thing was before a player stopped playing forever?” … and what stats do they see on “…stopped playing for a long time, but eventually came back”?

Mongo DB is WebScale. MySQL is not WebScale.

There’s good reasons for adopting Mongo, I’m unconvinced (but open-minded) that performance is one of them. Here’s a ROFLMAO viewpoint on it:

“If your write fails, you’re ****ed”

Obviously, MySQL’s not perfect, but in most cases I’ve seen, it’s been lack of competence on the developer side, and the lack of basic DBA skills – not problems with MySQL itself – that’s broken scalability. In which case, I’m a little suspicious that a company that fails to scale MySQL will equally fail to write their code correctly on Mongo. In many ways, throwing away SQL makes it much easier to prevent scalability…

DRM and the consumer

The mashup

(My new “preferred explanation of piracy + DRM”)

The original

(From Cyanide&Happiness webcomic, if you don’t know it already..)

Using an Entity System with jMonkeyEngine (mythruna)

If you’re interested in using an ES on indie projects, and you’re craving concrete examples, you might want to look at the comments (page 1 and page 2) on Mythruna:

“Since this is a developers forum, I’ll describe a little bit about what went on behind the scenes.

During the early development for this phase, I read about an architectural pattern called an entity system.

I had (pre Entity Systems) a plan for how I was going to store the placement of objects in the world but this past weekend when I actually got to implementing it, I couldn’t make that original plan work and came to the point where I needed to solve the general problem of world state storage. This is the kind of thing that Entity Systems make relatively straight forward… and by Saturday, Mythruna had an embedded SQL database that autogenerates tables based on the components stored. (HyperSQLdb for the win.)

So at some point I swapped out the in-memory version of the entity system with the SQL version… and suddenly objects were persistent. It was so easy I had to double check a few different ways that it was actually working. :)”

…but of course, also: use the Entity Systems wiki – put your questions there, put your ideas there, and (most of all) if you have an ES project or ES source code you want to share, please add it to the wiki!

Richard Bartle: 10 Games you Should Have Played

Normally, I don’t allow “guest posts”, but I’m making an exception for my “10 Games You Should Have Played” series. I’ve been asking other games-industry people to write up their own lists + explanations, and that’s not always compatible with their personal/work/etc blog. When that happens, I’m happy to post them here instead.

So, here’s Richard Bartle‘s take (“co-creator of MUD1 (the first MUD) and the author of the seminal Designing Virtual Worlds” – but if you read this blog, you should already know who he is ;).

I think it’s a great list. I asked him to define in his own way what he meant by “should” (why are we saying “should”? who’s the audience? etc) and to run with it, which he did …

Come up with your own rules for a top-10, define it clearly, and share your list.

“OK, well modulo all the usual complaints about lists of 10, here we go.

I don’t have any rules per se, but I am sort of assuming that this is for people who play games or design games or want to know more about games.

Also, I’m going to go with categories rather than individual games (except in the last case). This is because it’s not the games themselves that are necessarily important so much as what you get from playing them. I will, however, give an example of a game in each category that I myself have tried.

1) A game you have bought but haven’t played yet.

You should always have a game ready to play. I don’t care what it is, but unless there is one you’re never going to expand your gaming horizons.

For me, right now that game is “Victoria II”, which I’ve installed and read the manual for but haven’t actually started to play. The reason I haven’t started it is because I bought “Mount & Blade: with Fire and Sword” and snuck that in front of it in the queue. Once I do start it, I’ll be looking for another game to play when it’s completed – hopefully not another damned sequel…

2) An abstract game.

Games can be many things, but unless they have gameplay they’re not games. An abstract game only has gameplay. To understand games, whether to design, play, or study them, you need to understand gameplay; an abstract game shows you the game mechanics with everything else stripped away.

You need to play one. You may, if you’re keen, try think of a skin for it, but that’s not essential.

In my case, I guess the game would be “Chess”. I captained my primary school Chess Club, but my interest in the game waned when I realised that the openings were always the same and that people who were less good at the fun, thinking part could win by doing the boring, memorise-the-openings part. That came straight from an appraisal of the clear-for-all-to-see mechanics.

That said, I’d also like to give a shout-out to the altogether more obscure “Besikovitch’s Game”. Now that’s a mechanic with potential…

3) A tabletop role-playing game.

Everyone thinks they know why they want to play games, but they also need to know why everyone else plays games. They’re not going to get that unless they understand what it means to be part of the game. In a tabletop role-playing game, with the other players right there next to you, there’s no escape: you have to participate, you have to involve yourself, you have to become part of the game, part of the narrative. In short, you have to live the game. Unless you’ve lived a game, how can you ever hope to understand what’s gamingly possible?

For me, the hours I spent playing “D&D” with my friends in my late teens were some of the best gaming experiences I ever hard. I wish I’d been able to get a “Call of Cthulhu” group going, mind you, but it came out too late for me.

4) A spectator sport.

If a game is good enough that people will pay to watch it played, you need to understand what it’s like to play it. This gives you an insight into the theatrical aspects of games that you wouldn’t easily get from merely observing the performance. You don’t actually have to be any good at the game, and the game itself doesn’t have to be all that good either (in my case, “Snooker” fits both those categories); the important thing is to understand what gives a game presence. I don’t care whether it’s high
skill, clever strategy, viscerality, physicality – if you don’t play it, you won’t appreciate it.

In my own case, I played “Association Football” (yeah, soccer) at school (attacking midfielder if you must know); I was good, but we were never taught any skills or anything and most games descended into kicking matches. I nevertheless found out what made it “the beautiful game”, though.

5) A game in which you can lose actual money.

There is a dark side to games, and gambling gives people a chance to sense it. Personally, I don’t like playing games for money at all; however, a lot of people love it. Everyone has their limits, though.

For some, gambling games are at their best when the amounts involved actually hurt if you lose them; for others, it’s the amounts that can be won that make the difference. The point of playing a gambling game from the perspective of this list is to gain an appreciation of the morality of games. When something stops being “just a game” and starts to take over the player’s life, that’s potentially a bad thing. Unless
you’ve seen it (or something close to it), you’re never going to understand that fully. Gambling games let you do that. Warning: you run a big risk with this if it turns out you’re the one who gets hooked…

For me, I used to play “Poker” with my friends over lunch when I was 17 or 18. We played for Tic-Tac mints. This was before “Texas Hold ‘Em” got big, so we’d play mainly “Draw Poker”, “5-Card Stud”, “7-Card Stud” or, occasionally, “Montana Red Dog”. We stopped playing when one of my friends, who consistently lost, had to borrow money to buy more Tic-Tacs; I decided things had gone far enough, and called
the lunchtime sessions off. From that point on, no way would I design a game that deliberately tried to addict someone to it.

6) A game released in the year you were born.

Most games are built on the foundations of games that went before them, and an appreciation of their history means you appreciate the games themselves more. Games have a very long history (indeed, they go back into prehistory), but a modern game is unlikely to quote directly from ancient archetypes. They’re more probably going to quote from games from the generation before them. You therefore need to
play a bunch of old games to see where the advances were made. Unfortunately, “old” is a relative term: what you think is old might, to me, seem fairly new. What’s old enough for both of us is something from the year we were born in (or a year close to that). Play a game from back then and see how things have (or haven’t) changed. Bonus: you’re almost guaranteed to notice the gameplay more than you do in a (what currently looks) slick, modern game.

For me, the old game would be “Diplomacy”, which was released commercially in 1959 (the year before my birth, but that’s near enough). Ah, what a game! It’s trapped in its time, because it needs 7 players and could only really be played by post. Play-by-email is even more of a niche than play-by-mail was, so it’s not a game that is played a lot nowadays. Lovely mechanics, though!

7) A really bad game.

Some games are just BAD. The mechanics are all wrong, they’re unfun, or no fun, or the rules are ambiguous, or they drag on and on, or there’s a dominant strategy, or … well, the list continues. If you play such a game, you can ascertain what it is that’s bad about it; this will enable you to avoid similar games in future and to avoid
making similar mistakes in any games you design yourself (see next point). The more you understand about games, the more you’ll be able to find the games that are right for you.

For me, tempting though it is to nominate “Trivial Pursuit” as the game that laid waste to the British board games industry, I didn’t actually play that. However, my personal pick is one that I’m sure many other people will share, too: “Monopoly”…

8) A game you wrote yourself that no-one else has played.

Game design is actually quite hard to do well. You’re not going to know quite how hard unless you try it yourself. In the attempt, you’ll come to understand more about games and what makes them tick – but only if you actually play the game (if
it needs more than one player, play it against yourself). If you actually are a game designer, this is something you will have done many, many times before, of course; just make sure you keep on doing it.

For me, well, all game designers have a corpus of games in various stages of completion that they have never shared with anyone else, simply because doing the design itself was the fun part.

I’m a bit low on computer games in this list, so I’ll go for one I did called “Mombasa” about the exploration of Africa. It’s not all that good, but the point is that I wouldn’t know that if I hadn’t played it…

9) An MMORPG.

This is because I co-wrote the first virtual world, and therefore the more people who play these, the higher my kudos rises.

I’ll list the last MMO I played through up to the level cap as my example here: “Rift”. I came away not so much impressed by the game itself but by its developer, Trion Worlds, which is more understanding of its players than any other developer I’ve
come across except perhaps CCP.

10) “Mornington Crescent”.

It’s actually called “Finchley Central”, but I’ll go with the version that’s best known. This is a very simple game, the rules of which, in their entirety, are as follows: players take it in turns to name London Underground stations, and the first to say
Mornington Crescent wins. This is a game everyone should play, because it gets to the heart of what a game is: what happens when you freely and knowingly bound your behaviour according to a set of rules in the hope of gaining some benefit that you might not get. You play it for just so long as it’s fun, with people who also play for just so long as it’s fun. It’s the Magic Circle incarnate.

So those are my top 10 games that people should play. If you already played them, my apologies for having wasted your time with this list. If you haven’t played them, I envy you the treasure trove that lies ahead.”

“by running a spy network I am griefing”

If you’re an MMO designer, and you *still* don’t grok the griefer-mindset, or you somehow hope/believe that “one day, there will be no griefers”, then maybe this RPS interview with the always-fun-to-watch Goonswarm will help you:

MT: We are griefers. If nothing is going to happen then we’re going to try to find something that screams and bleeds and poke at it.

RPS: Griefing is something goons are known for doing, but now I’m talking to you it’s not something I can imagine you personally doing.

MT: Technically speaking, by running a spy network I am griefing.

RPS: But would you go out and aggravate other players for the Hell of it if you were a lower ranking member of Goonswarm?

MT: Well, most lower ranked Goons make their money by doing that. Scamming people is a very quick way of making money in Eve. Rather than making an honest buck, you take that buck from somebody else.

and, much further down, maybe this will help you see how griefers often serve just as positive and valuable a role as all your “preferred” player-types:

RPS: For my money, Eve might be the most fascinating game in existence today. But that doesn’t stop it from being interminably boring as well.

MT: Right. I mean most Eve players are stuck in high security space mining, and a lot of the core PvE in Eve has you sitting there are watching three grey bars slowly turn red.

Goonfleet is a socialist alliance. We give people ships so that rather than being forced to rat [fight low-powered AI NPCs] they can take part in PvP, we teach them how to scam so that they don’t have to mine, we teach them how to make ISK most effectively, we give them a lot of ISK and we reimburse their losses. This way they can focus on the fun aspects of the game, like griefing and warfare, so they’re not forced to endure derp-derp-ing around high sec.

If they play your game, you should be glad; if they grief, you should be asking yourself why – and if you’re a commercial operation, you should probably be asking:

“are they fixing a problem for us?

can we afford to leave them to it, part of our unpaid workforce?

and:

is it worth our time trying to fix the problem itself, or should we accept their help and move on down our never-ending list of pending fixes?”

Entity Systems: updates to source code

I’ve just done a round of fixes for the source-examples of ES’s. Github projects updated on this page:

http://entity-systems.wikidot.com/rdbms-with-code-in-systems

Changed:

  1. Added a complete Java implementation of the most basic ES example
  2. Fixed some minor bugs in the Objective-C basic ES example; added some missing classes
  3. Added a missing class method from the documentation (System.

The nature of a Tech Director in games … and the evils of DevOps

Spotted this (the notion “DevOps”) courtesy of Matthew Weigel, a term I’d fortunately missed-out on.

It seems to come down to: Software Developers (programmers who write apps that a company sells) and Ops people (sysadmins who manage servers) don’t talk enough and don’t respect each other; this cause problems when they need to work together. Good start.

But I was feeling a gut feel of “you’ve spotted a problem, but this is a real ugly way to solve it”, and feeling guilty for thinking that, when I got down to this line in Wikipedia’s article:

“Developers apply configuration changes manually to their workstations and do not document each necessary step”

WTF? What kind of amateur morons are you hiring as “developers”? Your problem here is *nothing* to do with “DevOps” – it’s that you have a hiring manager (maybe your CTO / Tech Director?) who’s been promoted way above their competency and is allowing people to do the kind of practices that would get them fired from many of the good programming teams.

Fix the right problem, guys :).

Incidentally – and this will be a long tangent about the nature of a TD / Tech Director – … my “gut feel” negativity about the whole thing came from my experience that any TD working in large-scale “online” games *must be* a qualified SysAdmin. If they’re not, they’re not a TD – they’re a technical developer who hasn’t (yet) enough experience to be elevated to a TD role; they are incapable (through no fault of their own – simply lack of training / experience) of fulfilling the essential needs of a TD. They cannot provide the over-arching technical caretaking, because they don’t understand one enormous chunk of the problem.

I say this from personal experience in MMO dev, where people with no sysadmin experience stuck out like a sore thumb. Many network programmers on game-teams had no sysadmin experience (which in the long term is unforgivable – any network coder should be urgently scrambling to learn + practice sysadmin as fast as they can, since it’s essential to so much of the code they write) – and it showed, every time. In the short term, of course, a network coder may be 4 months away from having practiced enough sysadmin. In the medium term, maybe they’ve done “some” but not enough to be an expert on it – normally they’re fine, but sometimes they make a stupid mistake (e.g. being unaware of just how much memcached can do for you).

And that’s where the TD-who-knows-sysadmin is needed. Just like the TD is supposed to do in all situations – be the shallow expert of many trades, able to hilight problems no-one else has noticed, or use their usually out-dated yet still useful experience to suggest old ways of solving new problems that current methods fail to fix. And at least be able to point people in the right direction.

…but, of course, I was once (long ago) trained in this at IBM, and later spent many years in hardcore sysadmin both paid and unpaid (at the most extreme, tracking and logging bugs against the linux kernel) so I’m biased. But I’ve found it enormously helpful in MMO development that I know exactly how these servers will *actually* run – and the many tricks available to shortcut weeks or months of code that you don’t have to write.

Identity theft, exploitation, and Gravatar

There’s a growing problem right now with Facebook Connect: it can silently log you in to websites that you *don’t want* to share your private data with. I saw a funny example last month where a porn website had integrated Facebook Connect … so when you visit the site, one miss-click and you’ll broadcast to all your work colleagues your embarassing love of HardCoreGrannies.

But there’s another example right now that may be worse, and is definitely food for thought. Facebook doesn’t broadcast your data – not to protect your privacy, but to prevent competitors getting access to data they are currently making money out of themselves. By contrast, there’s Gravatar: these guys take your private data and give it away to everyone – and they refuse to stop doing it (I’ve asked, directly, and they refused. They had no reason to refuse – they knew my identity, they knew my request was valid, and I believe under UK / Europe law it would be *illegal* for them to refuse. But … they’re American, and I guess all they care about is money).

So, for instance, I just had one of my online identities ruined by Gravatar. A website that I rarely use recently “upgraded” and implemented the gravatar system – and immediately took a private account and publically broadcast that I was the owner. They didn’t ask me, they just went ahead and did it. Like many web developers, I’m sure they had no idea what they were doing – few seem to be aware of the scam that underlies Gravatar.

Fortunately, I’m not going to lose something massively important, like my job / marriage / life (c.f. the news stories when Google Wave launched), but the website owners had no way of knowing that. They’ve just unleashed this upon their hundreds of thousands of users; what are the chances that one of them will be affected?

(incidentally, if you’re a website owner, I strongly recommend you think twice before adding Gravatar (or any of the clones) to your own site. I don’t know if anyone’s been sued for it yet, but I’m sure it’ll happen eventually)

There are two halves to the problem. Gravatar is fundamentally a violation of privacy: they take your data and give it to *everyone* without you knowing. So what? That’s the whole point of the service! Yes, the Gravatar author is a little incompetent (c.f. OpenID for how he *should* have implemented it), but otherwise there’s no problem, is there? In theory … if you voluntarily sign-up for it, it’s all OK. Isn’t it?

Well … maybe not. They won’t let you (the user / owner) control that flow of data. What happens if you change your mind – can you delete their data? Nope. Why? I’m not sure, but I would guess: If you did that, you’d undermine their ability to make $$$ out of you. You can (theoretically) set your pictures back to empty. But …

…But there’s a second half to this. I believe most people are on Gravatar because WordPress “gave” the user’s private data to Gravatar. That’s a nasty mess right there; what does WordPress’s privacy policy say? Again, when they acquired Gravatar, they apparently didn’t ask their users what they wanted, they just forced this privacy violation on them. Back then, it didn’t have much effect (Gravatar itself was relatively unknown / little used), but as Gravatar gets used more widely, the problem becomes more acute.

And here’s the rub: Gravatar’s staff refuse to adhere to privacy requests because (precising / summarising): “you have to use your wordpress.com account”. What if you don’t have one? “you must have had one in the past and we won’t help you. Go away, and stop bothering us”.

Meanwhile, WordPress refuses to send password details to anyone, ever. A wise security decision in some ways (e.g. many people use the same password on multiple sites. Doh!). Your only choice is to delete the password and recreate it.

Is that a problem? Sadly, yes. Because (due to some very short-sighted / stupid marketing decisions by the WP folks) there are lots of admin systems – e.g. anti-spam – that are run off people’s WordPress accounts. So far as I can tell, no reason exists for this *except* to harvest email addresses and try and lure people onto paid WordPress.com plans. Further, WordPress uses an archaic password-based system (instead of e.g. Yahoo’s permission-based API – which, again, is how WP should have implemented this) – so if you change your password, all those websites will break.

Summary

These services are a nice idea in theory, but when you get terrible implementations like Gravatar, combined with lazy / stupid staff, the user does pretty badly. They get screwed, they get patronised (just look at the Gravatar.com FAQ; they’ve cleaned it up in the last 12 months, it’s no longer so actively offensive as it used to be, but it’s still pretty bad), and many times they don’t even know about it until the violation is widespread.

And, ultimately, any website that uses this system is in danger of losing badly if it goes to a court-case. I’m not a lawyer, but when there are industry standards for user-controlled privacy (OpenID), and specific laws demanding that Gravatar honour the requests it currently refuses (UK Data Protection Act, for instance), I suspect a court is unlikely to look favourably on a website claiming innocence. Ignorance isn’t generally a valid legal defence.

But how much damage do these systems do to themselves? If Automattic were a little less greedy, or a little less selfish, would a lot more people embrace the idea of sharing their identity openly? Will OpenID provide a gravatar-replacement that doesn’t shaft the user, and will that take off much bigger than the original?

Personally, I look at recent events like Google Wave, and Blizzard’s “forum identity = credit-card name” – and the s***storm of angry users in both cases – and I suspect these privacy issues are much more damaging than corporates expect. Which is good news: the world appears to be slowly waking-up to the abuses inflicted upon them in the digital world, and the importance of keeping certain things (passwords, email addresses – and now, finally: identity) sacrosanct. And that is definitely a good thing…

A little game called Minecraft…

I’m an idiot. It only just occured to me today to wonder how common a name “Markus Persson” actually is.

My first reaction on playing with Minecraft was: “Ah, this (much success, this quickly, with this style of game) is what the WurmOnline guys would have loved to achieve, I think”. Oh, the irony. Not that I expect the WO guys are unhappy with what they’ve achieved – WO is an achievement in and of itself, and continues to evolve in beauty and depth – but it’s too slow / too little to become a mainstream success. It’s a technical and personal success, not a business success. Unlike MC.

Now that I know it’s the *same* Markus – Wurm’s Markus_Persson from JavaGaming.org, and the author of Minecraft – I’m revisiting that first impression. Incidentally, in checking out this authorship, I saw I still have the 2nd highest post count on JGO (!), despite almost 5 years of personal absence. Wow. I really did talk a *lot* of crap, I guess ;)…

Simplicity…

There are two things in MC that jumped out at me early on. The first one was pure simplicity. This game/world is bursting with a sense that someone has ended up with nothing left to take away.

Art

The art has a nice style in and of itself. This is something I’ve often talked about with other veterans of making cheap games … mostly, that means indie developers (many of the folks from JGO, for instance – especially look at the 4k Java games contest, and look at the frequent winners such as Kev), but it also includes folks from the big-budget games industry, like Thomas Bidaux and Ken Malcolm. And, of course, Matt Mihaly, whose Earth Eternal started out explicitly using an art-style to keep production costs low.

It’s a trick. It’s the avoidance of the uncanny-valley. Make your art look deliberately cheap, instead of accidentally, and you can achieve the same level of pleasure in your audience as if you’d built photo-realistic graphics. As far as I recall, it’s even been tested (in movies and visual art) and found to be literally true.

Interaction

Here’s one key point where Wurm fell down … there was a vast amount to do, but it was damned hard to know WTF you could do, how, when, why, where.

And at this point, I’m going to pull out and dust off Runescape, circa 2001. Back when it was a few thousand players, and was already taking off, but long before it became famous. RS has changed plenty over the years, and has finessed their interface, but it started off with Andrew’s unrelenting insistence that the UI must have “no menus”. Everything had to be achievable with the LMB or the RMB. There were already examples of places where the interface was crippled and made complex because 3 (or 4) buttons were needed … and eventually Andrew relented and allowed for RMB to be a menu, with LMB being the “most likely option from that menu”.

The point being that if he’d not clung so hard to that desire for ultra simplicity in the GUI, then he’d probably have ended up with a series of rich menus – or more likely a many-button interface. Sure, it had to be modified as the game grew, but IMHO it was one of the greatest attractions to RS, and helped enormously with RS’s growth and success among the school-age market (where RS thrived).

Now back to MC. In MC, your actions are very narrowly limited. Indeed, they reminded me a lot of early RS. Everything relies upon context. In MC’s case, the compromise with game-richness comes in the form of the crafting interface. Here you have to step beyond the LMB/RMB setup, the “purely contextual” actionset, and move to a new UI element. It’s new, it’s extra UI, but … it’s still brutally simple, and yet (so far) proving more than adequate to the enormous demands of variety in MC.

… and logic

This is the second one that struck me, and it took a bit longer, a bit more playing around (and watching other players in their more advanced worlds), for me to spot.

Wurm Online was always one of the richest “physical universe simulators”: there was a huge amount of physical laws implemented and underlying everything you saw on-screen. This is not a good path for a developer to take: it’s a steep slope into exponentially large CPU and content-production costs … and even worse in terms of balancing and game-design.

Oh, you think that a world with “full physics” has no content production cost? Ha! How much time do you think it takes to implement each of the laws of physics? Even with a rigid-body physics engine to start from? May seem like there’s not many of them around, but just try coding it…

But many of WO’s laws were barely noticed by the majority of the players, while others were smack in their faces a large amount of the time. MC very nearly appeared to cherry-pick only the “frequently significant” laws, and focus on those. MC’s world is breaktaking in it’s depth, and yet if you analyse it closely, you quickly notice it’s lacking some very basic essentials of a world-simulator.

And, back to the irony, I felt that last point made MC feel very much like a direct sequel (in spirit) to Wurm Online: a “lessons learned … and acted upon” when it came down to the most addictive and engaging (and unique) part of WO. And yet I was still too dumb to connect the names together. Doh!

PR Agency reveals The Truth about Social Media

(…i.e. “many PR agencies know nothing about social media”)

This miserable story of a crappy PR agency working for Nokia just came to light. I’d give it even odds whether the problem was one incompetent employee, or an overall incompetent agency.

Read the blog post (and the comments – after a hundred or so, the agency pops up to respond. Worth reading as an example of how *not* to respond when you screw-up your PR (and pretty funny to see a *PR* agency write something so weak)).

It might be TL;DR, so … here’s my ultra-quick summary, with wild interpretation and guesswork based on my limited insight into the murky world of agencies:

  1. Big client wants to “do” social media; holds pitch meetings with a variety of swanky agencies who present beautiful powerpoint slides claiming how incredibly smart and trendy they all are. No-one asks for proof of ability; the deal is closed on “OOH! SHINY!” or similar. Client selects the one it thinks best quality or best value (probably the latter).
  2. Agency (Mission) persuades blogger to run a half-marathon and promote their client (Nokia)
  3. Agency gets paid a substantial amount of money (much more than the cost of fulfilling promises to the blogger) for supporting Nokia’s aims to use “social media” in their campaigns
  4. Blogger works ass off for 4 months training to run 13 miles
  5. Agency is too lazy to do … any work whatsoever at all
  6. Agency shafts blogger. Reneges on promises of promotion and goods they’d offered as payment (this is probably illegal, apparently they don’t care)
  7. Blogger nearly misses said half-marathon due to agency miserable incompetence / laziness. Despite spending 4 months training for it.
  8. Blogger goes public with the sorry affair, whilst struggling to remain reasonable and forgiving (does pretty good job of it, IMHO)
  9. Agency gets screamed at by client and posts non-apologetic apology; hopes it’ll all blow-over

Make your own mind up…

Entity Systems for Objective-C (iPhone)…prologue

I’ve just started a new game project for iPad which I hope will end up with a commercial release. At Red Glasses, we’ve got comparitively few projects for the next couple of months. If anything comes in, I’m expecting one of the other coders can pick it up, and I can concentrate on this in-house iPad game.

Schedule: 1. Prototype; 2. Refine

I wrote the first prototype this weekend – it looks like a very basic Flight Control right now (the game design is trying to do something novel with FC mechanics – I like that control system, but I think we can do a lot more with it than people have done so far).

Now it’s time to implement some of the novel mechanics, and prototyping our core game design. This will mean creating a lot of game-logic, lots of behaviours, etc. And so … I’d really like to use an Entity System.

Objective-C: the bad bits of C … without the good bits of C

The thought of building an ES without templating makes me weep.

Unfortunately, Obj-C continues to show it’s age/mediocrity/general-lack-of-usefulness: it’s finally (this year!) acquired an implementation of closures, but it still doesn’t have generic classes.

NB: *I believe* it doesn’t have generics; it might have, but I’ve not noticed them in any ObjC projects, code, libraries, etc. A quick google came up with nothing.

ES without generic classes is like OOP in Perl: techically possible, but liable to contain a lot of painful bugs which a compiler would have spotted for you … and contain a *lot* of boiler-plate code you really shouldn’t need to write in this day and age.

I could fix all this with C++ – it has probably the world’s best implementation of generic classes. It’s not perfect, but IME it’s the best overall balance of functionality.

Unfortunately, unlike C, Obj-C is incompatible with C++.

What next?

Ideas and suggestions are *very* welcome…

Assuming I can get an ES to work on iPhone, I’ll be blogging it. I’ll aim to open-source the ES I build.

I’ve had a quick look at using C++ classes and objects in ObjC. Using the objects has a lot of boilerplate code from Apple, that looks pretty good (but painfully verbose :( ).

…but using the *classes* appears pretty horrific. Since ObjC doesn’t have any kind of generics (that’s how we got to this point :)), it can’t handle those parts of C++ in a meaningful way.

Then again, since Obj-C is *very* dynamic as a language, I might be able to do something cunning with passing around NSClass instances / references. Combine that with runtime method dispatch / message-passing, and *maybe* I can code a decent C++ ES … while using ObjC to write logic that acts on the data from that ES, without having to write so many extra lines of code that the “saving” is lost.

As I said … ideas welcomed!

Startups: measure your attention-marketing (download)

If you’ve followed this blog for a while, you’ll have read my thoughts on the Science part of Marketing, and how much money this makes you.

As I explained recently to an Accountant, we don’t have a “business plan” for my current company, we only have a spreadsheet. A spreadsheet – done correctly – *is* a business plan, and a better plan than any you’ll ever see written down.

(NB: I’m not an accountant. I’m not a Finance Director – and never have been. I don’t even like spreadsheets; normally they bore me to death. But this is an exception. It is the only way to effectively plan and run a startup)

So I was delighted to see that Dave Stone has posted a spreadsheet to track and measure the effectiveness of your “attention” campaign – how much exposure did you get from TechCrunch et al? Was it worth it?

One Hundred MEELLEON Dollar! (…wasted, on RTW/APB)

18 months ago, Scott and I described our perspectives on the fall of Tabula Rasa. I said that if you’re going to spend $100m on an MMO, you’d better be aware of MMO history and not repeat those mistakes.

It would seem that Real Time Worlds wasn’t listening – coincidentally, $100m is how much *publically announced* money just went down the pan, now they’ve gone into administration.

No-one in this industry likes to talk openly about their enormous fuck-ups – and the few that do tend to become pariahs, sued by their employers or shunned by future investors. No major company openly documents – or “allows to be documented” – anything of import. It’s a system that punishes progress in the professional field.

There’s a single public analysis on RTW/APB right now. It’s an anonymous source (oh, for god’s sake! When will we stop shooting the messengers?), but some non-anonymous sources have backed it up. So, let’s take a look…

Anonymous: ExRTW on RPS

(source is here)

APB:

“lead you to think it’s going to come right by release … You end up in this situation where you’re heads down working your ass off”

Me, 18 months ago:

“The implication being that they didn’t do anything wrong, perhaps, but that they stood by and watched the train rolling slowly towards the brick wall and didn’t try (hard enough) to stop the collision.”

APB:

“APB … came together… relatively late in its development cycle … leaving too little time for content production and polish … lacking any real quality in some of its core mechanics”

Me, 18 months ago:

It wasn’t ready for beta. I said so. Many others said so.

APB:

“it was pretty clear to me that the game was going to get a kicking at review – the gap between expectation and the reality was huge.”

Me, 18 months ago:

A survey was taken, internally, asking what people thought. The results were never published – so no-one (apart from the survey takers) knows exactly what the results were, but we were told that the *company* knew.

Incidentally … I was afraid to come clean at the time (and upset individuals), but that survey of all staff was EXTREMELY negative about the project, and I have been told (but you’ll have to take this as unsubstantiated rumour) that the reaction of the top-level execs on seeing the results was simple:

“Bury it”

APB:

“I wasn’t on the APB team, so I played it infrequently, during internal test days etc. I was genuinely shocked when I played the release candidate – I couldn’t believe Dave J would be willing to release this.”

Me, 18 months ago:

[I wasn't on the TR dev team, but] given my position I had the luxury of a lot of insights that other people wouldn’t have had.

I played TR in the alpha, and I actually enjoyed it

it was a good pre-production prototype [but - at best - YEARS away from being a finished project - and they went to beta only 6 months later]

APB:

“The real purpose of beta is publicity, not bug fixing. We never took that lesson on board.”

[I didn't cover this, but Scott's post did, IIRC]

And, finally…

“MyWorld is an innocent bystander caught up in the demise of APB. Which is a real shame, because it is genuinely ground breaking, though not aimed at the traditional gamer audience. ”

…which sounds an awful lot like Scott’s team and Steve Nichols team (the former very basic playable but unreleased, the latter Dungeon Runners)

Major differences

EDIT: it’s 100k sales, not 10k.

APB:

“the real killer, IMO, is the business model. This was out of the team’s hands. The game has issues, but I think if you separate the business model from the game itself, it holds up at least a little better.”

I originally (mis-)understood
the figures that Nicholas Lovell has dug out, but apparently sales were over 100k (presumably that means practically zero sales in USA?).

By comparison, the previous big-failure MMO which went down because of the “bad business model” was Hellgate: London.

Hellgate sold 500,000 units, and estimated that even if they’d made their subscription compulsory, they’d still have sold 250,000.

So, not as strongly as I originally put it, but I’m still dubious about the business model being the cause. This stinks to me of a marketing/sales failure (unless those 100k sales are spread equally across territories)

APB:

“we should have kept our powder dry. Our PR felt tired and dragged on and on, rather than building a short, sharp crescendo of excitement pre-release.”

IMHO this is a really bad idea – unless you remove the entire “MMO” part of the game. Big Bang Marketing doesn’t work for MMOs; this is the old-school of game-marketing.

Although, given how ineffective RTW’s marketing seems to have been, I doubt a big-bank-marketing-campaign could have done any worse.

Conclusions … and “moving forwards from here”

Two parts of this industry need to talk, one part doesn’t. As I said in 2009: “We need to talk [about failure]; when will we talk [about failure]?”

The professionals: you’re getting burned out, chewed up, and spat out. Your lives are being wasted.

The investors: you’re getting screwed. You write it off as random failure, and you can afford it, but you’re shying away from “games” as a result, leaving good profits behind on the table.

The inexperienced, the mediocre, and all those people who don’t actually MAKE the game, but do get to ruin the process (rockstar-designers, producers, marketers, directors, managers, etc) : you’re doing great. Your lack of skill hasn’t held you back, and the company will often go bankrupt before anyone gets around to firing you for incompetence.

…Can we actually move forwards, though?

When I left NCsoft, I was cold-contacted with some new job offers.

A typical example: “make a success of” a project that had already spent several years and many millions of dollars and was about to launch. But I wasn’t allowed to move said launch, and they had “infinite” funding (I kid you not).

There was a fat salary for anyone willing to shepherd that disaster (and, I suspect, become the public fall-guy). The game itself launched as they insisted, and was a laughable failure. I doubted it could have been fixed without another 12-18 months of development.

And me, personally? Nowadays, I run a freeform studio developing mobile apps and games for corporate clients. Each employee is responsible for themself and for their own decisions. If you need a project-manager to mollycoddle you every day, you can’t work here.

Personal responsibility, and personal authority; so far, it’s working pretty well…

How not to market an MMO: EA/Mythic Entertainment

Mythic Entertainment – End of Subscription

(subtitle: EA/Mythic forces themselves into commercial failure)

8 months ago, I tried to play Warhammer Online.

Tried, and failed, because EA Mythic told me – in no uncertain terms – that it was completely impossible for me to play.

This was after releasing press announcements and running a big campaign trying to get people like me to play. They’d been too lazy / stupid to remove the “you cannot play this game” message from their own website, even several days after the marketing campaign started.

Net result: I never got around to playing. They made it such a pain in the ass that even when offered this *for free*, I never got that far.

So, I got this message today. And this just double-underlines my previous point. Read this message, and ask yourself: does it entice me into the game?

Throwing away money, one customer at a time

End of Subscription Notification

Your subscription for Mythic Entertainment Warhammer Online: Age of Reckoning for Game Account [username] has ended for the following reason:

* Subscription is not set to renew

If you did not authorize this, please contact support at (650) 628-1001. Phone support hours are 10:00 am – 10:00 pm eastern time, Monday through Friday. You can find further information on account security at http://help.warhammeronline.com.

Thank you!

This is an automated email from the Account Management site for Mythic Entertainment.

Games Workshop, Warhammer, Warhammer Online, Age of Reckoning, and all associated marks, names, races, race insignia, characters, vehicles, locations, units, illustrations and images from the Warhammer world are either ®, ™ and/or © Games Workshop Ltd 2000-2009. Used under license by Electronic Arts Inc

Let’s do a quick analysis. Here you have a DIRECT contact with the consumer – moreover a consumer who isn’t yet paying you any money, and who you know has NEVER logged-in to the game.

  1. 36% of the message is an IRRELEVANT copyright notice that shouldn’t be there
  2. 30% of the message is an INCORRECT security advisory
  3. 12% of the message is “this is an automated email”
  4. …leaving a mere 22% of actual content

Let’s look at the content, as any good marketing person would.

  1. What’s the Call To Action? (we’re talking to a customer; what are we asking them to do?)
  2. How easy do we make it to respond to the CTA? (the easier we make it, the more people will do it)
  3. Where’s the Appeal – a.k.a. what do we do to make the CTA attractive? (the more attractive it is, NOT ONLY will more people do it, but a great percentage will follow-through by paying money / engaging after the CTA)

Hmm. Respectively:

  1. None
  2. Make a international phone call – at cost! – to an unrelated department
  3. Technical language with no hint of “game”, or welcome. Wording is both appallingly bad English ( “is not set to renew”), and also fundamentally negative (implies that I *shouldn’t* want to renew, even if I do want to)

As I said 8 months ago, someone ought to deploy the PlayFish folks onto the smoking remains of Mythic. I very much doubt they’d allow such terrible excuse for marketing to go on…

Assasin’s Creed 2: Understatement of the Century

From the IGN walkthrough:

“If you have trouble grabbing the beam, just keep trying—we promise it works, but lots of readers have told us it’s not always easy.”

I’m a pretty good AC player, but after 10 minutes of trying to do that one standing jump, I gave up and stopped playing for a long time in frustration.

When game developers talk about “games should be so easy that all players can complete them; no-one should ever have to give up / fail to complete a game because something is too hard”, I usually disagree.

But in this instance, where the game is extremely, excessively difficult on something that the designer obviously intended to be extremely simple – and where the player has spent hours being taught that this will be easy – you have something different going on. It’s a failure of the control scheme; in fact, it’s a bug.

It’s a side-effect of the heuristics that AC uses to decide “what the player is trying to do” – heuristics that are far from perfect, while being very good.

In the first game, it took me a long time to get past the intro – no, really – because if you *try* to jump over gaps, then you fail. The heuristics were so heavily weighted towards “allowing” you to jump off buildings that running over a small gap became very difficult – until you learnt that the character “automatically” jumps small distances.

On the whole, I’m very impressed by the AC2 heuristics – compare it to Mirror’s Edge (a beautiful game, but feels a lot less fluid). I find them a bit too simplistic – I would love another 25% or so of user-control, and another 50% of precision on directional control – but (as ME shows) they got closer to perfect than any other game so far.

BUT … what do you do about a bug like this, one severe enough to make me stop playing the game entirely?

They had a huge QA team already (this is Ubisoft, after all), and such a vast amount of content in this game (multiple entire cities, modelled in fine detail), that there’s no way they could be sure to catch this bug.

Or is there?

This is the raison d’etre for a whole segment of in-game analytics / metrics: data-mining to discover undiscovered bugs.

Good metrics for game designers are VERY hard to describe, and IME the vast majority of the industry doesn’t know how to carefully hand-pick the few numbers they really need out of the millions of stats availalbe. Here’s a good example of how to pick well.

If the game reported

“the quest-point at which people stopped playing”

…then you *might* discover this bug. But it’s too coarse-grained.

If the game reported either/both:

“the segment on the map where people stopped playing”
“the segment on the map where people spent most-time during a mission”

…then you’d quickly and easily discover this bug. By “segment” I mean, essentially, a small patch of polygons approximately 6′x6′. This is relatively easy to measure algorithmically using greedy-polygon grabbing and hashing – although it would take a little care to make sure the measurement of the value didn’t take much CPU time (it could easily be pre-compiled for any given map, of course).

I’m not 100% of the “stopped playing” part – this is a console game, and while that info would be useful, it would mostly stop evenly distributed over quest-end points. Where it was more / less likely, it would be obvious just from knowledge of the story. ALTHOUGH: still well worth doing *in case* there were anomalies there – that should set off alarm bells.

However, the “spent most time during a mission” is more cut-and-dried.

This probe gives you a set of local maxima. It’s categoriesed by mission, making it one level finer than doing it over the entire world-map (which is too much, too uncategorised info), and it’s also coarse enough to correlate closely with user-behaviour (it merges results mission-by-mission; recurring bugs are very likely to show up by people doing the same mission and getting stuck at the same point).

The mission-based merge of results also has a nice side-effect: it tends to iron-out any anomalous results due to people wandering around the open-world game.

So. With a little bit of probing, using probes that you could/should have invented at the start of development (i.e. without knowledge of exact bugs that would occur) this bug could be ironed out. The three remaining questions are:

  1. does Ubisoft do this level of automated-bug-detection,
  2. do their designers bother to look at the anomaly-date,
  3. and if so … why hasn’t the game been patched?

2010 and the Browser MMO

What’s a browser MMO? Today, not 5 years ago?

In the previous post I poked Earth Eternal for claiming to be the “*REAL* MMO for your browser”, and disappointing on that front (although it could be awesome on all other fronts). I finished with:

So … EE may be a great game … and it may be launchable from within a browser … but it’s a long way from a poster-child for browser-based MMOs. It’s still fighting the browser as much as it’s complementing it.

It’s 2010. I know a lot of people in the industry still haven’t accepted even the concept of a “browser-based” MMO, let alone realise where they’ve got to now.

I’m not in the loop on this stuff any more, but it set me to wondering what I’d be chasing if I weren’t doing iPhone exclusively right now.

What about you? Are you fighting the browser?

The Executive’s impression

Game developers aren’t stupid. Executives aren’t clueless. But some are.

In the minds of those who make games but “don’t do” browser games on principle, I’ve found “a browser MMO” often means some or all of:

  1. A text-only game running off a single Perl webpage, where each action causes the whole page to be refreshed.
  2. Non-real-time interaction (because, you know … web-servers aren’t powerful enough to run anything in real-time)
  3. High-latency, jerky, shallow movement of characters and objects
  4. Weak 3D graphics – 5 years or more behind the curve of Console graphics
  5. Fat client downloads that “no-one” can be bothered to wait for, and would be better-off distributed on a DVD

What’s reality? Well, here’s a few observations…

Drop-dead gorgeous graphics … are the norm

For a look at today, go browse some of the Unity demos. Unity is *not* the “best” 3D engine, the fastest, the best language – but it’s nicely balanced towards ease of adoption. It’s very easy for new developers to get into. And so it’s setting a very achievable base standard that’s higher than many people would believe. With anyone able to produce 3D to this level, and embed it in the browser almost as an afterthought, the use of plugins becomes a new landscape.

Right now, crappy Flash MMO’s are still re-treading the ground of Dragon Fable (which is coming up to it’s 4th birthday) et al – albeit that’s now the “standard” and there is better and better appearing. But just as it only took a few games to adopt this approach and show how good it could look, widespread adoption of Unity, and a few high-profile innovative products, will drag forwards the rest of us.

(by “us” I don’t mean professional developers, I mean primarily the amateur and semi-pro teams who don’t yet work for a living – the students etc)

2 years ago I wouldn’t have thought it would be necessary to say this (I assumed that FB would have kicked everyone’s butts) but maybe it’s still relevant: going forwards, I suspect “browser MMOs” still need to be a lot more “browser” and a lot less “traditional MMO” if they wish to stand out.

The facebook question

Browser MMO, huh? So … Why is there no option to use Facebook Connect to login? In 2010, I think that’s what browser-MMO probably means to most people: “it works from Facebook”.

The massive, fundamental changes to Facebook that are coming in this year may push a lot of content-providers off FB, and back to the web – but users will continue to demand single-sign-on access, and shared access to friends lists. This already works, off-site, thanks to Facebook Connect (both for websites and for other hardware platforms, e.g. iPhone).

I may be completely wrong, but my suspicion is that many developers still want to “use Facebook”, by which they mean:

“use (the large number of accounts on) Facebook (to get lots of users in our game without having to do so much advertising)”.

…while (again, merely a suspicion) users want their games to “use Facebook”, by which they mean:

“use (the apps, data, and list of friends I already have on) Facebook (to reduce the effort I go through to play the game)”

The problem here is the developer is chasing more signups, and the user is chasing ease-of-access. IMHO, the FB changes are going to cut off most of the former, leaving the question: who will do best at fulfilling the latter?

The Glottal-Stops and Square Pegs of User Experience

When people surf to your MMO direct from the Web, do they get a feeling akin to the glottal-stop? Do they feel like they mentally “stumbled”, as the paradigms and user-interface go through a sudden change?

Embedded within an ordinary web-browser, does your MMO look like a square peg forced into a round hole?

The effects are subtle, but they decrease virality, decrease engagement. The effects are tiny, but with millions of web-users out there, they can be cumulative. Each time a user experiences this, you marginally shrink your maximum user-base, and you push your conversion rate down.

Why was I so shocked that Earth Eternal is (silently) Windows-only? (as is/was Free Realms, for that matter)

Well, largely because it reminded me of years ago, when you’d occasionally go to a website only to see:

“This site is only valid in Internet Explorer; you are not running that browser, so you are seeing this special page instead of the site. Please download IE now and then come back.” (or Netscape, or “desktop, but you are using a mobile phone”, etc)

History suggests that this is not a viable strategy when you’re fighting it out on the web…

I’ll know it when I see it

I’m waiting for one feature in a major MMO. I’ve seen it in a few “amateur” MMOs, and you get it on Facebook apps etc. It’s a fundamental expectation from the Web, and it is incredibly powerful:

Each piece of interesting content is *named* … it has a unique URL … so that I can directly tweet places, events, people, and things. I can bookmark conversations I’ve had. I can archive, I can cite, save, and return.

Bonus points for incorporating a bit.ly service in the client, so I can literally copy/paste direct into twitter

I’m hoping it’s out there already, and I just haven’t spotted it yet. When it comes, someone let me know; until then, I’ll be spending more time in flash games, and less in mainstream MMO’s. I prefer my gaming to be Web-compatible, thanks…

Farewell, Metaplace

I got this in my inbox a few days ago, and it’s been forwarded to me by a few people since:

(NB: the fact that you still have to login MERELY TO READ THE DAMN FAQ linked from the PR statement is IMHO symptomatic of some of MP’s problems :( )

metaplace.com is closing on january 1, 2010

We will be closing down our service on January 1, 2010 at 11:59pm Pacific. The official announcement is here, and you can read a FAQ guide here. We will be having a goodbye celebration party on January 1st at 12:00noon Pacific Time.

Some of the correspondence I’ve seen on this – what went wrong? what should they have done differently? – has been interesting. Personally, I’m in two minds about it. I think there were some great things about and within MP, but from the very start I felt it had no direction and too little real purpose (and if you ask around, I’m sure you’ll find plenty of people who’ll confirm I said that at the time).

I’ll hilight a couple of things that haven’t come up so much in conversations:

Bad

  1. On the face of it, MP was “the bad bits of Second Life…” (poor content tools, poor client, no direction, no purpose)
  2. “… without the good bits of Second Life” (no sex, no mainstream publicity, wrong target audience to charge millions of dollars in land-rental to)
  3. Poor discoverability (how do you find something cool in Metaplace? Go to site, login, download client, wait a lot, browse a weak index, wait for more downloads, wait for content to stream in … etc)

Discoverability was IMHO the killer: this is something that so many “hopeful” social sites and systems get wrong, and only a few get right. The best examples are still simple: browsing your friends’ friends on Facebook by looking at photos of their faces (hmm; who do I fancy?), or using Google to find things you’re looking for (the gold standard in tech, but also the base *expectation* of the modern web surfer).

The history of SLURLs in Second Life should probably be required reading for people interested in this – if you can find ways to experience / re-live life pre-SLURLs, and read through some of the trials and tribulations that Linden went through in getting them to work.

And even then, of course, SL still had no browsability – but it least it had “open” bookmarks and copy/paste references you could share with people, and embed in webpages. That was barely acceptable (and still “awful”) back when SL was in its prime; the equivalent “minimum acceptable” is probably Faceboook Connect with full Facebook integration (i.e. not just FC-login, but having a bona fide FB app too that acts as an alternate access-path for your virtual world).

Good

  1. Well, obviously, there was a lot of great content in there. I only skimmed it, but apart from the problems above, I saw a lot of interesting stuff
  2. The AJAX/CSS/HTML GUI … it was really easy for me to mess about gaining and browsing badges (both mine and other peoples).

Early on, I found the AJAX vs Flash part particularly interesting. The former showed up how weak the latter (the world-client) was: sometimes I went to the site, all happy about the badges, the popovers, etc, and as soon as I got into the Flash client, my mood would drop noticeably. Eventually, I stopped bothering visiting at all; I dreaded the slow, unwieldy, “clicking all over the place to move fractionally”, Flash experience.

One question I had was how much this was to do with the languages / platforms involved: did AJAX/CSS inspire the people working in it to make lighter-weight, faster, more abstracted core experience? Or is this just coincidence? There should be literally no reason why either of those platforms forced the designers to provide the experiences that way (Flash is capable of a much faster, snappier, fluid usability experience – it’s been excelling at this for years).