Categories
dev-process games industry massively multiplayer network programming networking programming recruiting server admin

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.

Categories
computer games design games design games industry massively multiplayer

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!

Categories
massively multiplayer recruiting

UK games companies are hiring (2010)…

UPDATE: I’ll add other roles in as/when I get the OK from the relevant people; not all of these are public yet.

Despite the heavy rash of studio closures (well documented by Nicholas Lovell), it seems there’s a lot of exciting online/social games hiring going on right now – I’m getting lots of requests from friends, ex-colleagues etc.

  • Head of Mini Games at Mind Candy (London-based social games startup; runs a successful kids MMO – Moshi Monsters)
  • Financial Manager / Social Gaming Economy Modeller and Virtual Goods Data Analysis at Lockwood (Nottingham-based online / virtual world startup; built most of the cool stuff in PlayStation Home, now building their own MMOs) – *entry level

There’s also some interesting roles in publishing, and some in startup online games companies.

If you’re UK-based, you’ve worked in MMO / social games / etc, and you’re looking for a job, feel free to email me. No CV’s, just tell me who you are and what you’re looking for in 4 sentences or less.

Or, if you see an entry-level job here you want to apply for, ditto and I’ll put you in touch (or just follow the links to the company directly).

Categories
entity systems games design massively multiplayer programming

Entity System 1: Java/Android

Please note: the design described in this blog post has been much improved and updated and put up – with full source – on http://entity-systems.wikidot.com/.

On the wiki linked above, there is now a wholly new Entity System design, based on this one, but much improved. There’s a brief post about it here, recommended instead of this ES design: http://t-machine.org/index.php/2011/08/22/entity-system-rdbms-beta-a-new-example-with-source/.

I’ve been writing about Entity Systems sporadically for the last few years. Recently, I finally had the time and the excuse to build one of my own (i.e. not owned by an employer). If you haven’t read the main series of ES posts, you should do that first. There are many things in the world masquerading under the Entity/Component banner – and even more that just coincidentally share the name, but describe something else completely. It’s worth understanding which variant I’m talking about before you read about what I’ve done :).

Why build an Entity System?

At a generic level, this is covered in the other posts. But it’s taken years for me to have the time/inclination to write a new one from scratch outside of my day-job. What happened?

  1. I left my iPhone in America, and it took 2 months to get it back
  2. Google gave me a free Nexus One, in the hope I’d write something for it (ha! Their cunning plan worked…)
  3. The Android marketplace is such a miserable morasss of third-rate crap that eventually I was compelled to write my own Android game … just so that I would have something to play (there are very few games on the Android store that are even worth the time it takes to download them)

I’ve been making games for a long time. I know how much effort will go into it, how much time, and how much slog there is before it becomes worth it. Writing a game on your own often means putting in 90% of the effort to get 10% of the reward.

Enter … the Entity System. If I were to pick a game-design that mostly used data-driven game features, I could implement it around an ES, and massively reduce the amount of planning needed to get the game running. I could maybe have a working game after a mere 20% of the effort. Hmm…

Building the ES for Android

Android runs something that’s *almost* Java (although more on that later – Android’s version of Java is very slow at some of the core libraries, and it really shouldn’t be). Technically, Android supports all the core data structures from Java (Collections), and the templating system (Generics).

If I were writing an ES in C++, I’d do it using templates without pausing to think; I wondered how well the same might work with Generics, given that Generics is *not* a complete templating system, although it provides quite a lot.

Getting started: early ES decisions

How to design/implement this thing? Well, we know one thing for sure:

Entities have a single name/label/global-ID. Entities MUST NOT contain ANY DATA: these are NOT objects, this is NOT OOP!

There you go, the Entity class wrote itself:
[java]
public class Entity
{
public int id;
}
[/java]
This immediately raised some concerns for me, being the seasoned coder I am (ha!). How the heck was I going to write any code that dealt with these things if I didn’t have references to them? Obviously, sometimes you do have references, but other times you expect to follow refs from within the objects you have, to get to the objects you need. That wouldn’t be happening here, since there are no inter-object refs.

[java]
public class BaseEntitySystem implements EntitySystem
{
/** I’m too lazy to write a "safe" method to get a globally-unique ID; for now,
I just return 1 the first time I’m called, 2 the second time, etc… */
protected int getNextAvailableID();

/** Whenever you create an entity, you’d better invoke this method too!*/
public void registerEntity( Entity e );

/** The method to solve my fears above */
public Entity getEntity( int id )

/**
* Merely removes the entity from the store. It becomes a GC candidate
* almost immediately (since all other refs are transient)
*/
public void killEntity( Entity e )
}
[/java]

…but, again, being a Veteran coder, the survivor of many painful battles on the field of programming … I didn’t trust myself in the slightest to “always remember” to invoke registerEntity. Quick trick: give the Entity class a static reference to a default EntitySystem, and have each EntitySystem check if that reference is null when starting; if so, set itself as the “default”.

[java]
public class Entity
{

public static EntitySystem defaultEntitySystem;

public Entity( int i )
{
id = i;

if( defaultEntitySystem == null )
throw new IllegalArgumentException( "There is no global EntitySystem; create a new EntitySystem before creating Entity’s" );

defaultEntitySystem.registerEntity( this );
}

}

public class BaseEntitySystem implements EntitySystem
{

public BaseEntitySystem()
{
if( Entity.defaultEntitySystem == null )
{
slog( "Setting myself as default entity system (Entity.default… is currently null) self = " + this );
Entity.defaultEntitySystem = this;
}
}

}
[/java]

W00t! I can create Entity’s, and I can find them later on. Awesome. What about those Components, then?

Getting started: Components in Java

I’ve done ES in C++ before, with real templates, so I wasn’t really thinking at this point … I just ran with what seemed natural based on prior experience. The thought process (had there been one) would have been something like this:

  1. This is java, I use Eclipse: I absolutely *must* have the IDE know what data/fields exist in each component so that Content-Assist/Autocomplete works 100%. Otherwise I will gouge my own eyes out having to remember, and doubly so each time the app compiles but dies at runtime because of a typo in a field-name.
    • Requirement: each unique Component must be defined as a java Class, with each of the fields being a public member of that class
    • Requirement: to access a Component of a given Entity, you must invoke a method which returns something that is typed (as in language typing) to the correct Class

I made a Component class, and had all Components extend it; there is a particular reason for this, but it doesn’t matter right now – essentially, it lets you define shared behaviour for all Component subclasses, and just saves you time on typing.

My first real Component:

(NB: I defined this *inside* another class, because I couldn’t be bothered having N source files for the (large number of) N Components I was bound to create. Hence the “static”):
[java]
public class MyEntitySystemExperiment
{

static class Position extends Component
{
float x, y;
int width, height;
float rotationDegrees;

@Override public String toString()
{
return "("+super.toString()+" @ ("+x+","+y+") * rot."+rotationDegrees+")";
}
}

}
[/java]

Great. I have a component. Now comes the largest single piece of work in the entire implementation of the ES: writing the methods to:

  1. Add a component to an Entity
  2. Fetch a component from an Entity
  3. Remove a component from an Entity

Fetching a Component from an Entity

This is the win/lose point: if this works well, our ES will be nice and easy to use. The other two methods (add and remove) are simply twiddling bits of data. This one is the challenge: can you make it *easy* to write code that uses the ES, and for that code to be clearly *understandable*?

[java]
public class EntitySystemSimple extends BaseEntitySystem
{
HashMap<Class, HashMap<Entity, ? extends Component>> componentStores;

public <T> T getComponent( Entity e, Class<T> exampleClass )
{
HashMap<Entity, ? extends Component> store = componentStores.get( exampleClass );

T result = (T) store.get( e );
if( result == null )
throw new IllegalArgumentException( "GET FAIL: "+e+" does not
possess Component of class\n missing: "+exampleClass );

return result;
}

}
[/java]

Boom! It works.

Let’s just stop briefly and I’ll explain why. Reading Java generics code from cold (just like reading C++ templates) often takes a lot of hard thinking.

Looking at the “result” of this method, we want it to be (enforced by the compiler):

  1. “an instance of a class that extends Component”
  2. “an instance of the particular class/Component that we requested – not just any old subclass”

[java]
/** based on comments at end of blog post, think this is correct,
but not checked */
public <T extends Component> T getComponent( Entity e, Class<T> exampleClass )
[/java]

It causes you to write application code that looks something like this:

[java]
public void doSomethingWithAnEntity( int globalId )
{
// remember, we NEVER hold refs to Entity objects for long
Entity e = entitySystem.get( globalId );

Position position = entitySystem.getComponent( e, Position.class );
position.x = 5;
}
[/java]

…and what’s important is that the “type” of the “Position position = …” line is already hard-typed to “Position”. So, the content-assist will *auto-complete* anything put after a dot on the end of that line, e.g.:

[java]
entitySystem.getComponent( e, Position.class ).AUTO_COMPLETE
[/java]

…so you can instead write your method much quicker, and yet very clearly, as:

[java]
public void doSomethingWithAnEntity( int globalId )
{
// remember, we NEVER hold refs to Entity objects for long
Entity e = entitySystem.get( globalId );

entitySystem.getComponent( e, Position.class ).x = 5;
entitySystem.getComponent( e, Damage.class ).hitpoints = 145;
entitySystem.getComponent( e, Renderable.class ).foregroundColour = Color.red;
}
[/java]

Time-out: HashMap

HashMap is the “correct” class to use in Java for this setup: it’s the exact equivalent of Hashtable / Dictionary / etc in other languages. We need to map (somewhere, somehow) from one thing (an entity) to another thing (a component).

NB: this does not mean that you have to use HashMap as your data-store for the ES; I positively encourage you to consider other options. I used it here as the most obvious, simplest possible structure that would do the job. If you think back to my posts on Entity Systems for MMO development, I’ve often suggested that the data store could *and should* be any of many different things. In particular, SQL databases make for an excellent data-store (and remember you can get in-memory SQL implementations that do away with all the expensive write-to-disk stuff).

Unfortunately … Android seems to only partially support HashMap. You can use the class, but it runs an order of magnitude slower than you expect for a normal JVM (compared to the speed with which it runs other methods). It seems to have problems with the hashcode methods, but also even with basic iteration over the Map contents. Odd. Later on, I had to do some tricks to speed up the ES, just because of this problem.

Fetching a Component from an Entity: Redux

The examples I gave above for accessing components were lean and clear on the right hand side (thanks to autocomplete and strong typing), but terrible on the left-hand-side. By the magic of OOP, I’m going to clean up the LHS. BUT (and this is a big “but”) … make sure you fully understand what I’m doing here. With what I’m about to do, it would be very easy to fall into one of the traps of ES development: slipping back into OOP techniques.

Looking at the example:

[java]
entitySystem.getComponent( e, Position.class ).x = 5;
entitySystem.getComponent( e, Damage.class ).hitpoints = 145;
entitySystem.getComponent( e, Renderable.class ).foregroundColour = Color.red;
[/java]

… applying OOP mindset, we see that the first argument is redundant; the Entity already knows about the EntitySystem to which it’s registered.

Also, we know that the Entity class will never have any methods or data other than the ID. If that’s the case, the only thing we’d ever “get” from an Entity is a Component. So, we can add this to Entity:

[java]
public class Entity
{

/** Gets a filtered view of the entity’s data, only returning the subset that
* corresponds to a particular one of its components */
public <T extends Component> T getAs( Class<T> type )
{
return source.getComponent( this, type );
}

}
[/java]

…which converts our usage example to:

[java]
e.getAs( Position.class ).x = 5;
e.getAs( Damage.class ).hitpoints = 145;
e.getAs( Renderable.class ).foregroundColour = Color.red;
[/java]

Using the ES with Systems

Recap: right now, we can:

  1. Create entities
  2. Add components to entities
  3. Read/Write the data inside each component, on a per-entity basis
  4. Fetch entities by globally unique ID

One last thing is needed before the ES can work: we need a way to fetch Entities “by component”.

e.g.:

[java]
public class MyEntitySystemExperiment
{

public void runLoop()
{
while( true )
{
// move all the entities
positionSystem.move( MOVEABLE_ENTITIES );

// check for collisions
collisionDetectionSystem.process( MOVEABLE_ENTITIES );

// render all the visible entities
renderingSystem.render( RENDERABLE_ENTITIES );
}
}

}
[/java]

We need a way to provide the arguments that are capitalized above. We know that these should be plain-old lists of entities. We know they have to come from the EntitySystem. Finally, we know that the only defining characteristic of these lists is that everything in the list has *at least* a particular Component.

(respectively, in the example above, the lists contain: “all entities that are moveable”, “all entities that are moveable AND all entities that are barriers to movement (e.g. solid walls)”, and “all entities that should be displayed on-screen”)

So, one more method for the EntitySystem interface:

[java]
public interface EntitySystem
{

public List<Entity> getAllEntitiesPossessing( Class… requiredComponents );

}
[/java]

“Class…” is just a convenience; in many cases, you’ll be insisting on a single Component. In many other cases, you’ll be insisting on a set of components. Java varargs provide the minor convenience of doing both of those in one method, while retaining type-safety.

The implementation of this method is obvious: it iterates over every entity that’s been registered, and checks it against ALL the required components. If it possesses all of them, it goes into the output list.

Finis

That’s it. So easy! Obviously, there’s more to it – the other methods you need to create should be mostly self-evident – but this should be enough to get you started.

Now, I’m not sure where to go from here. I’ve got a working Java ES. I’ve got some performance improvements and feature improvements. But … in practice, hardly anyone writes games in Java (except Android programmers, and there aren’t many of those), so … is it worth it?

Alternatively, I might just run through some of the practical pros and cons I encountered when actually using the ES in writing the game-logic. There’s some interesting things that came up which most people encounter sooner or later when doing their first ES, and which might be worth looking at in more detail.

One last thought…

Did it work? Did this ES allow me to write a decent Android game?

Yep. I wrote a space-invaders / bullet-hell game with it. It worked fine on Android phones for a hundred-odd enemies and bullets on screen. On Android, thanks to the crappy JVM, it started to chug after that (dropped below 30 FPS), so I had to make some substantial performance improvements, and now it’s happily rendering 300 things all flying around at 20-30 FPS. The game is far from finished, but it’s playable and fun for a minute or so – a definite achievement considering how little of it I’ve written so far.

many-entities-at-10-fps

NB: it’s got some way to go before I’ll be happy releasing it. But, given a few more spare evenings, I hope to get this up on the Android Market as a free download in the near future.

I’m pleasantly surprised that the Android phones can handle something as high-level as an ES, in a pure, unoptimized “simplest possible” implementation.

Did this post help you?

You can say “thank you” by giving me your email address, and letting me contact you next time I make a game of my own:

[smlsubform emailtxt=”” showname=” mailinglist=”pif-entity-systems”]
Categories
community design facebook games design games industry marketing massively multiplayer web 2.0

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).

Categories
computer games games industry marketing massively multiplayer

What’s wrong with EA: EA Mythic, and the FAIL of WAR

I’ll do a follow-up post in a minute with the anecdote that lead me to this. But here’s the general opinion/analysis first.

Project history (skip if you know all about Warhammer Online and Mythic already)

Huge project (cost in excess of $50 million to develop), based on a 20-year-old IP that is known and loved around the world, the game launched last year to a big marketing campaign.

Initial sales figures were excellent.

First-month renewals were dire, the company lost large amounts of money, they laid off large numbers of staff, and the CEO quit/resigned. They are now (late 2009) into the key point in such a product’s lifecycle where it has one last chance to succeed.

The parent company has recently laid off 1500 staff across different countries and products, but also just bought a small studio for $400 million.

The problem with Mythic/WAR today

Here’s what’s going on right now (based on observation, guesswork, and personal experience of similar situations at other companies):

They are spending large amounts of money to acquire new customers, while simultaneously erecting artificial barriers to turn away those new customers.

They are running loud marketing campaigns to attract those who’ve already rejected the product, while simultaneously creating powerful negative publicity for their own product.

In other words, this is a company that has a failing product AND has a non-unified product strategy, and yet is continuing to spend heavily. This strategy is known as “pure, blind, Hope”. It looks extremely similar to what happened with TR towards the end of it’s (brief, painful) lifetime:

“let’s work harder, do more, spend more! Cross your fingers, chant the secret mantra, and hope it all turns out for the best!”

Hope is not a strategy. All that can happen is that they might get lucky despite all the mistakes; there might be enough good left that they can survive this foolishness long enough to ditch the deadweight and pull themeslves out of the mire.

The inevitable PlayFish comment…

Maybe this would be a good project for the new hires from PlayFish to start work on? The essentials are there – and if the product could be made to succeed, it is a huge cash-cow. It could single-handedly pay-off a lot of the debt on that $400 million…

Categories
conferences databases massively multiplayer network programming system architecture

Speaker Evaluations – GDC Austin 2009

Conferences don’t make these public.

But they should.

So … here are the evaluations (from the audience) for our panel session at AGDC 09.

Judge for yourself whether you want to attend any future sessions featuring us again (Adam Martin, Bill Dalton, Rick Lambright, Joe Ludwig, Marty Poulin).

Head Count: 74; Evaluations: 32 (43% response rate)

  • Overall rating of the presentation – 88% (AVG: 86%)
  • How relevant was the topic to you? – 86% (AVG: 84%)
  • How well did this class meet your expectations? – 94% (AVG: 84%)
  • Would you recommend this session to a colleague? – 90% (AVG: 84%)
  • Evaluate the speakers’ ability to communicate – 94% (AVG: 86%)
  • If there were visual aids (slides) how were they? – 74% (AVG: 60%)

All of those are above average, and I’m glad that a particularly high number would recommend the session to their colleagues.

It seems that we did particularly well on fulfilling the remit (very high number for “met expectations”), and that our speakers had an awesome ability to communicate (almost 10% higher than average for the other speakers at the conference).

Audience Comments

  1. The most entertaining session I attended, but didn’t sacrifice information value.
  2. Interesting format, I wouldn’t mind seeing more of this, but it is time consuming
  3. Good stuff
  4. Slow, confused start lost valuable time for Q&A
  5. Should have done middleware
  6. Only 3 topics covered. Expected others

Comment 4 – yeah, something I’m unhappy about too, (it wasn’t our fault, it was the people running the conference), but there was nothing for it but to grin and carry on. Someone screwed-up the radio microphones, and we lost a lot of time at the start waiting for them to fix it. There was nothing we could do – they had connected the mics from a different room to *our* speakers. We didn’t find out until the person in the other room started talking, and it all came out through our speakers :(.

Comment 6 – we covered 4 topics (oops, audience can’t count :P). We all wanted to do more, but at GDC conferences, the organizers only give us 1-hour slots. With 4 speakers + moderator, I think that was pretty good, especially considering the time we lost at the start.

Perhaps someone will clone this format for a future conference (seems a good idea), and try to get a 2-hour slot for it?

Categories
games industry massively multiplayer web 2.0

Online Games as a Billion-Dollar Business

Autumn 2012: NCsoft just cancelled City of Heroes – a game that back in 2009 (when this post was written) was doing fine (although nothing stellar; it was a mid-tier MMO). If you’re interested in my thoughts on that, I’ve written a 2012 followup on the CoH situation in particular. NB: I no longer work in the MMO industry, although I still work in games dev

I spotted some good commentary on NCWest’s City of Heroes/Villains in 2009 today – modulo one or two quirks (umm … does Cryptic have anything to do with CoX any more? I thought this is now NCsoft’s game; as the publisher, they bought out Cryptic’s ownership last year, no?).

But one theme in particular came up that I want to hilight: why is NCsoft Korea so callous / vicious / greedy / demanding / single-minded / stupid when it comes to the profitability of their games? (NB: those aren’t my terms, as you’ll see by the end of this post – but that’s how I’ve heard people describe them, while trying and failing to understand what’s going on)

Categories
design entity systems games design massively multiplayer programming

Entity Systems are the Future of MMOs Part 5

(Start by reading Entity Systems are the Future of MMOs Part 1)

It’s been a long time since my last post on this topic. Last year, I stopped working for a big MMO publisher, and since then I’ve been having fun doing MMO Consultancy (helping other teams write their games), and iPhone development (learning how to design and write great iPhone apps).

Previously, I posed some questions and said I’d answer them later:

  • how do you define the archetypes for your entities?
  • how do you instantiate multiple new entities from a single archetype?
  • how do you STORE in-memory entities so that they can be re-instantiated later on?

Let’s answer those first.

Categories
computer games conferences dev-process massively multiplayer MMOG development network programming

AGDC-2009: Killing the Sacred Cows of MMO Technology

Slides for our panel arehere: “Killing mmo tech sacred cows.pdf”.

Final panel was myself (moderating) and speakers: Bill Dalton (Bioware), Rick Lambright (Gazillion), Joe Ludwig (Valve), Marty Poulin (Shady Logic).

PLEASE NOTE: WE DON’T REALLY ADVOCATE EXTREMIST RESPONSES TO TECHNICAL QUESTIONS; THIS WAS JUST A BIT OF FUN. (Mostly).

Categories
conferences massively multiplayer network programming programming

Everything you need to know about being an awesome MMO Tech Director

Really? O, RLY?

Well, no, probably not – but this is the kind of opening statement I often make at industry-conference parties. In this rare case, at LOGIN this year, I was showing something on my laptop at the time and happened to *type* my opening salvo, rather than just say it.

Categories
conferences games industry international iphone massively multiplayer

5-year predictions (2009 to 2014) for the MMO/Online Games industry

Last week at the LOGIN conference I sat on a panel with three far more smart/successful/famous people than myself entitled “Online Games 2014: Twelve Spoilers for the Future” (I think I was there as “the argumentative one” ;)). The real value of the panel was the four of us arguing^H^H^H^H^H^H^Hdiscussing each other’s predictions, and the audience suggestions afterwards, but the predictions themselves were pretty interesting alone, just to compare and contrast.

I couldn’t liveblog this session (obviously) and it looks like no-one else did, so – until the slides go up on the conference website – here’s what I can remember of the predictions (I may get some of these wrong, apologies!):

  1. There will be tonnes of cheap rackspace; anything that uses Cloud Computing will be very successful thanks to low cost base
  2. iPhone will become the dominant gaming platform
  3. We’re heading into a big recession that may do well for the MMO industry
  4. Browser-based MMOs will disappear in favour of iPhone/SmartPhone-based MMOs
  5. South Korean MMO Publishers will vanish as a major player in the MMO industry, eclipsed and swallowed by Chinese and SEA MMO Operators (“non-publishing” backgrounds)
  6. Europe will get its first successful Europe-wide MMO publisher, and that company will quickly rise to dominance over the more fractured USA MMO publisher market
  7. Advertiser-sponsored Virtual Worlds will be huge in number and variety
  8. A small percentage of advertiser-sponsored VWs will succeed – but will dominate the mainstream MMO market, since for them “profit is optional”
  9. Traditional game developers will be blindsided by the advertiser-sponsored MMOs
  10. Most PC MMOs (IIRC “90% or more”) will become F2P
  11. Console development-studios will become dominant in the MMO market since they are best at “polish” and very high quality user-experiences
  12. …and one more I’ve forgotten (!). Actually, some of the above I suspect I’ve misinterpreted – have to wait for the slides to be posted to check…

I’ve never before engaged in these kinds of generic future predictions, because I have so little confidence in either my own ability to describe them, or in my ability to understand other people’s ones in a useful fashion. I joined this session because the opportunity to argue them against other people was a lot more interesting. As stated above, I think our conversations on the panel were a lot more valuable than the actual predictions themselves.

Of course, when it comes to more narrow, specific predictions, well … if I really knew the answers there, I wouldn’t be telling you, I’d be making billions out of knowing :). And anyway, at that point you’re effectively asking me what the precise strategy is of my current employer (whoever that may be), which I’m generally not going to be able to reveal :).

FYI the speakers on the panel:

  1. David Edery, previously Worldwide Games Portfolio Manager for XBLA
  2. Charlie Stross, author of Halting State, Accelerando, etc
  3. Tarrney Williams, previously General Manager of Relic Entertainment
  4. + me, of course
Categories
computer games games design games industry marketing massively multiplayer

A better way to review video games

Reviewing video games is hard. In some ways, it’s an impossible mission: a reviewer has too many conflicting interests:

  1. please the publishers or else be denied access to the materials they seek to review
  2. please their editor or else don’t get paid; but the editor’s primary source of capital is often advertising … from the publishers
  3. answer the consumer’s main question in a way that earns their trust: should they purchase this game or not?
  4. stand out from the crowd of a million game players who decide to write about their hobby

Who’s your Daddy?

This has been a problem for as long as I can remember (20+ years of game playing and reading game reviews); the consumer *believes* that the reviewer is answerable to them – but it has been a very long time (10 years now?) since consumers were the paymaster of reviewers; nowadays, it’s advertisers (which usually means: game-publishers).

Of course, consumers still wield huge power. The virtuous value circle – the only circle that matters – is driven by consumers:

  • A reviewer has a “readership” of consumers who are influenced in their purchasing decisions by those reviews
  • Publishers therefore court the reviewer to try and curry favour with the consumers and increase sales of the publishers’ products (to those readers, and anyone they themselves influence – friends, family, colleagues, etc)
  • Reviewers earn more money, and get deeper access to development teams (courtesy of the publishers), so produce more reviews

But that power is – clearly – both indirect and hard to quantify. A consumer – even many of them – threatening to “stop reading a reviewer’s reviews” is not particularly effective.

Publications like Edge helped along the indirection of consumer-power when they decided to go out of their way to obscure the identities of their individual reviewers, turning reviews into as much of a crap-shoot as buying games was in the first place. Since the web rose to prominence, it’s been eroded at the other end – there’s now so many reviewers around that, well … who has the time to remember who any individual reviewer is?

Qui custodet custodes?

But if journalists/reviewers are supposedly there as a watchdog on the publishers’ marketing depts, supposedly helping the consumer determine which are the (non-refundable) purchases they ought to be making, then who’s checking that the journalists themselves are honest?

No-one, really. And that’s where the rot begins. The storms of outraged public opinion are nothing new: examples of journalists writing reviews of games (reviews both scathing and rejoicing) they hadn’t even played go way back into the 1980’s.

A case study in lies, damn lies, and video game journalism

In case you hadn’t heard, this week a “staff writer” from Eurogamer (a games review / news site) ripped to pieces one of the most recently-released MMOs – Darkfall. At which point Aventurine, the developer of Darkfall, responded with increasing anger and dismay.

But the really interesting thing here is that Aventurine didn’t merely rant “you bastards! Our game is Teh Awesum!!!111! STFU, Beotch!” (well, they did that as well) … no, they dropped a little A-bomb in the middle of their reply:

“We checked the logs for the 2 accounts we gave Eurogamer and we found that one of them had around 3 minutes playtime, and the other had less than 2 hours spread out in 13 sessions. Most of these 2 hours were spent in the character creator”

Pwned. MMO developers *actually know whether your journalist played the game before reviewing it*. What’s more … they have proof…

The EG reviewer (whose “references and background are immaculate”, according to the editor – but from reading his only two EG reviews, I’m afraid it does rather sound like he knows little about MMOs), responded (via his editor) with the claim:

“the logs miss out two crucial days and understate others, … and he insists he played the game for at least nine hours”

It would seem that someone is lying (and it could be either party). Worse, someone is being particularly stupid. Because the journalist is claiming “your computers lie”, and the developer is claiming “your journalist is a lier”; either way, it’s not a subtle, small, mistake – whoever is wrong, if they get discovered, they’re going to create themself a good amount of long-term trouble (bad reputation).

Lots of MMO developers write shitty server code, and honestly don’t know what the hell is going-on inside their own game-world (but fondly imagine that they do – and proudly boast to the press (in the vaguest terms) that they do). But the rule of thumb is that devs who don’t know … don’t even know what it is they ought to be claiming that they know. The specificity of Aventurine’s claims suggests that they do have the stats, and those stats are mostly correct.

(I say “mostly” because there is a bit of vagueness about what – precisely – the reviewer was doing in-game. That reeks of holes in their metrics/logging. They clearly know when the player was logged-in, and what they did/said in chat, and how many characters were created – but apparently not what they were doing in the client, e.g. how long did they spend in character creation? Implicitly: unlogged; unknown)

Whereas it’s quite likely that a non-knowledgeable journalist, accustomed to buggy games, would assume that they could safely claim “your server is buggy, those figures are wrong”.

Unfortunately for any such journalist, server logs are generally either correct, or absent entirely – there’s rarely any middle-ground. If he knew a bit more about MMO tech he might know this; very few journos (any of them?) know that much about the games they review, though.

So … based on nothing but casual observation and intimate knowledge of the tech issues (and several decades of reading game reviews…), I’m leaning in favour of Adventurine and against Ed Zelton. My guess (pure *guess*) is that he’s been caught out being either incompetent or perhaps a bit lazy as a reviewer, and he’s thought he could get away with blaming it on buggy code. From reading the review, I get the impression he wishes he were Ben “Yahtzee” Croshaw (from Zero Punctuation) – although he clearly isn’t funny enough – but he seems to like saying “it’s shit; you’re shit; you’re all shit; STFU” instead of reviewing the game, and seems to think that’s good enough. As an MMO player, my feeling was that the review was, well … useless – without even playing the game, there is so much more I would want to hear in a review, and so much of his wanky whining that I couldn’t care less about. As an MMO developer, it felt downright insulting, as if he’d made no effort at all to play the game as a game. Actually, it felt like he’d hardly played MMOs in his life, and didn’t really know what they were.

(NB, from the review: his apparent ignorance of some of the most important *and best-selling* RPG + MMORPG games of all time – the Ultima series – suggests that he really isn’t much good as a game reviewer. YMMV.)

Reviewing the reviewers

Up-front I’m going to point out that I don’t believe all MMO developers are currently capable of doing this – many people would be amazed to discover the true state of metrics collection in this industry – although *all* modern MMO developers ought to, and it’s not too hard to add-on later (add it to the list of “things MMO developers ought to do as standard practice, but many of them don’t do”). But it’s a general thing that I think we should move towards.

MMO developers (well, actually, the Operators, but that’s getting pedantic) are in an excellent position to help guard journalistic honesty, in a way that traditional game developers have never been able to. I would like to start seeing the following published by *every* MMO developer each time their game is reviewed:

  1. What level the account(s) started at
  2. What level the account(s) peaked at
  3. How many hours the reviewer spent at the lowest levels, levelling-up manually
  4. How many hours the reviewer spent at the highest levels
  5. What percentage of time was spent on each of the different primary character classes and factions
  6. Which areas of the game / aspects the reviewer actually engaged in (hours of combat, hours of crafting, hours of chat, etc)

…but, honestly, this isn’t so much about “journalistic honesty” (I used that phrase tongue-in-cheek above) as it is about starting a virtuous cycle of developers being more cognizant of what, actually, players “do” in their games – preferably *before* gold launch. In particular, if publishers (developers) started supplementing reviews with this info (as a matter of course), I think we’d see a sea-change in industry staff appreciating three key things about metrics:

  1. How little metrics they’re actually collecting compared to how much they think they’re collecting
  2. What metrics actually matter, and/or are useful?
  3. How players actually play the game; by extension: how fun is the game, really, and which parts suck horribly?

Does this work / matter?

At NCsoft, I got into the habit of asking prospective partners, hires/employees, and external studios which MMO’s they played (fair enough) … and how many characters they’d got to the level-cap with / what level their characters had reached. It started as an innocent question, but I quickly noticed how often it gave early warning of failures of honesty among individuals, and how much it presaged the problems they would have in the future.

The two worst problems were “complete ignorance of the MMO industry (either of pre-existing design practices, or tech practices)” and “personal self-deceit about what the person knows, and what they don’t know”. The latter tended to be a far worse problem: when someone is deceiving *themself*, it’s doubly hard to re-educate them, because first you have to get them to accept their own deception.

Of course, it turned out to lead to a lot of defensive responses and a spew of self-justification, which made us both uncomfortable. In those situations, it can easily lead to making assumptions that certain people’s opinions are “worth less” because, say, you know for a fact they’ve never really played an MMO – at least, not in the way that most of that MMO’s players would/will/do play it. I hate that tendency, since it’s part of a snobbishness that lies at the root of a lot of oyster-like, head-in-sand behaviour in our industry. On the other hand, it’s important and useful to know when someone’s ideas are random conjecture and when they’re based on fact (and very few people in a design meeting or publisher/developer meeting will honestly tell you their ideas are conjecture :)).

On the whole, though, it turned out to be a really useful line of questioning – even bearing in mind the additional (smaller) problems it created. There are obvious problems that come from the statistical supplementing of free-form prose game-reviews – but I’m confident that these will be outweighed by the advantages (and the problems that will be shrunk).

PS:

Despite the TLC of good friends, I’m still weak and sapped of all energy from my month of illness. I’m triaging like mad to deal with urgent issues, but there’s plenty of highly important stuff that’s been pending on me for a while that I still haven’t had the time + energy to deal with. So, if you’re still waiting … I’m sorry.

Categories
computer games design GDC 2009 massively multiplayer

GDC09: Making of Little Big Planet (ups, downs, mistakes, successes)

Alex Evans, Media Molecule
Mark Healey, Media Molecule

Summary

The MM guys are funny as ever, although Alex’s “I made it myself on the way here” presentation tool would perhaps have been more usefully replaced with something like Presi (or whatever it’s called – the “interactive” presentation tool that is like Alex’s thing, but on steroids. Ask Jussi, he’s a fan of it).

The overall impression I got is: here’s another studio that has “by trial and error and cunning and talent” independently discovered something very similar to Scrum. They don’t do Scrum, and I’m sure a lot of people will scream at me for even saying it, but … I went through similar “find a process that worked for game development” (not carried so far, and on much smaller projects), and I recognize a lot of the lessons they learnt and things they incorporated in their processes and approaches. And from my experience, I think they’d find it relatively easy to switch over to Scrum, and that they’d get a lot of benefit from having a more polished version of their processes. Not to say that Scrum is universally better – there’d be losses too – but for people considering their own processes to use – or trying to “understand” Scrum – you’d do well to read this liveblog and try to internalize some of the lessons and attitudes. And then consider this and scrum as alternative to each other, but both near-relatives. And … if you are *not* MM, and don’t have all the details of precisely how they work, you’d probably find it much easier and more effective to adopt the well-documented Scrum instead.

Categories
computer games entrepreneurship games industry massively multiplayer recruiting startup advice

Culture, Reputation, and Running a Game Studio

What’s the biggest single challenge to a Studio Director? Or to the VP of Development / Studios who oversees a handful of publisher-owned studios?

Recruitment

In the games industry there are no raw materials of variable quality, there is no variety of base services to build upon; everything that distinguishes one company (and set of products) from another comes solely from the people they hire.

In the games industry there are no raw materials to pay for, there are no service charges. There are only salaries and employee-support costs.

Recruitment is where the studio heads find their hardest problems, and see their biggest successes/failures as the studio grows in size. Eventually, all their own experience and ability at design, marketing, sales, programming, art, etc become subsumed by their ability to attract, recruit, retain, lead, and motivate their people.

Recession

…is the best thing for new game studios to happen in the past 5 years. It’s achieved four things:

  1. Removed lots and lots of people from their comfortable jobs, by force
  2. …simultaneously…
  3. …indiscriminately w.r.t. quality of personnel…
  4. …and made even the supposedly “secure” games companies (EA, Microsoft, Sony) suddenly look as fragile and short-term as the riskiest of startups

The VCs have been blogging about the benefits to startups wrought by this recession, and I’ve put it to a couple of them now that, for the game industry, this one – recruitment – is the biggest by far, and each time met with straight agreement. Our industry is very like Management Consultancy: it’s driven by the people. Nothing else matters.

Culture

I’ve worked with a lot of experienced managers who’ve been adamant that “no-one leaves their job because of (too little) salary”. Also with slightly fewer who were convinced that “no-one accepts a job based on salary” (more often, that was rephrased with a rider to be: “no-one good accepts a job based on salary alone“).

In that case, why do people accept / leave a job?

“Culture” is the catch-all term that describes not just the direct environment which people experience each day in the office, but also the emotional and psychological experiences that they go through while there.

It describes how their colleagues think and act – and how those actions effect the individual. But it also describes how the “teams” within the organization think and act, which can often be very different from the people within them. You often see teams of smart people “acting dumb”, or teams of nice people act like assholes when taken collectively. Group think is powerful, very powerful.

But it’s hard, very hard, to really see the culture of a company until you’ve worked there for a couple of years, and in a couple of different divisions, and perhaps a dozen different departments. Which is not an option for most of us. You can work somewhere for just a few months and pick up the culture if you know what you’re doing and really work at it – but even that requires skill and dedication, and can only be done AFTER accepting a job offer.

(this is one of the reasons I posted my Manifesto for a Game Studio online – you can get a strong taste of the culture of my next startup, and decide if you want to work with us, without having to sacrifice a year of working there first)

Reputation

Game industry staff often worry about reputation. The companies (as represented by the senior management) themselves often don’t.

The former care how their organization is perceived, and assume everyone else does too. They assume that a “better reputation” will lead to “more sales”.

The latter have access to the actual sales figures, and have convinced themselves that this is a nice idea but simply not borne out by fact (in some cases this is true, in some it isn’t – but it’s much easier to look at the figures on paper and believe it’s true than to see the flaws in that logic).

But the truth is that it IS important, very important. It’s the external reflection of the internal culture. As such, it’s what most people use to make a decision about whether they want to work there.

Obviously, it varies. The older and more experienced you are, the more you come to use a company’s reputation as a barometer of its culture – and the more heavily you weight this in your decision about accepting a job. The younger, more ignorant staff generally haven’t been burnt by terrible culture, or haven’t yet learned what to look for / avoid in their next employer.

Back to the issue of Recruitment: the biggest successes/failures are going to be from the more experienced people you hire (and, remember – hiring a “bad” person into a senior position is not just a loss, it can easily cause negative productivity, by screwing up lots of other staff who were doing their jobs better before that person arrived and started interfering / roadblocking them / etc).

So … you probably should care about your reputation, somewhat in proportion to the size of your company.

Blizzard

Pre-WoW, Blizzard had an exceptional reputation, for a handful of common reasons (amongst others):

  1. Never shipped a game that wasn’t really good fun
  2. Frequently invented + defined large sub-genres with their games (Warcraft was one of the first RTS’s, Starcraft created the “truly strategic” RTS genre, Diablo re-invented the hack-and-slash RPG, etc)
  3. Publicly talked about “finishing” their games, and then deliberately deciding to spend another whole year (or similar) working on them before shipping, to make sure they were really polished
  4. All of their games were best-sellers – i.e. they didn’t just make cool stuff, they made cool stuff that the market appreciated and paid for, too

Now, I’m not so sure. If a recruiter called me tomorrow with an “amazing, once-in-a-lifetime opportunity” to work at Blizzard, my first reaction would be hesitation: would I really want to work at the place that Blizzard has become?

While people have queued up to defend them, the history of their actions against Glider, and now this absurd crackdown on World of Warcraft add-on authors, have left me with a sour taste in the mouth.

In my opinion, using the law to beat over the head people who discover flaws in your basic business model / acumen is the last refuge of those who recognize their own incompetence but would rather not go to the effort of raising their own quality bar. Blizzard seems to be making a habit of it. That’s not encouraging. Ten million paying players for one MMO is great, but … the sales figures of their games were only ONE of those bullets I cited above about Blizzard’s reputation traditionally. Money buys a lot of forgiveness, but not infinitely so.

Categories
community computer games design games design massively multiplayer network programming

Tabula Rasa: Going down in a burst of glory

http://www.gamasutra.com/php-bin/news_index.php?story=22528

“It is probably safe to say that, despite decades of ever more spectacular Hollywood visions of extra-terrestial domination, humanity in its worst nightmares never imagined it would have to contend with spawn-camping aliens.”

(also … If that article is accurate, sad but unsurprising to hear that (apparently) the underpowered server tech for TR yet again managed to make a misery of gameplay, even at the very end. If that article is accurate, then well done to the ops for managing to get some instancing sorted out, but note to self: never let this happen with future twitch-based / FPS MMOs)

Categories
amusing games industry massively multiplayer Web 0.1

Web 0.1: PEOGA. EU Games Companies Still Dont Get It

European Online Game Operators infamous for being overly secretive announce new association:

“The founding members have set three major goals for PEOGA:

* Networking. PEOGA is the meeting point for European companies from the online game publishing industry.
* Improvement of the Public opinion. PEOGA shall improve the image of online games by providing realistic information to the public.
* Self Regulation of the Online Game Industry. The online game industry has responsibilities towards their users. PEOGA will assist to set general rules and regulations for the industry.”

…launch website…

http://www.peoga.eu/

…and add an idiotic javascript hack that tries to disable the right-mouse-button + context menu in your web browser…

The page at http://www.peoga.eu/ says:

Copyright – Pan-European-Online Games Association PEOGA

So, let’s get this straight:

  1. None of the developers of the top 10 online games in Europe are in your org
  2. None of the publishers of the top 10 online games in Europe are in your org
  3. You have a President. But in case he gets lost on the way to meetings, fortunately you have someone else who is the “also President”. Nice.
  4. You can’t even make a website

Guys, I have to say: this isn’t looking great so far. Let’s hope this was just an unlucky start (BTW: you might want to get GOA on board – they know all about rocky starts, they’re probably the most experienced company in the *world* when it comes to bungling a launch).

PS: OMG I HAXX0RED UR SEKURITY – look, I “stole” the URL to your image – HHAHAHHAA111!!!!11!11
(please. It’s not 1996 any more. Get rid of the childish javascript hacks. It’s … embarassing. For all of us)

Jeans. In Europe, everyone wears jeans. From the same company, too.
Jeans. In Europe, everyone wears jeans. From the same supplier.
Categories
agile entrepreneurship games industry massively multiplayer

Manifesto for a Game Development Studio (or any creative tech company)

Here are the founding principles of my next startup. It’s incomplete and imperfect, but for where I want to go … it’s a start. Incidentally, if you share them, and want to work with me, you should get in touch (adam.m.s.martin at gmail.com). I’m sure we can find a way to work together.

EDIT: if you’re interested in these ideas, have ideas of your own you want to discuss, or are just looking for other like-minded people … I’ve set up a Google Group for this at: http://groups.google.com/group/game-studio-manifesto

30 hour working week

  1. 4 days a week, 7.5 hours a day
  2. Salaries are 20% below the going rates; we aim to employ 20% more staff than usual for a given project size; cost is the same, output is the same (modulo an output-reduction/cost-increase due to increased overheads/inefficiencies for larger team size)
  3. everyone takes the same day off. I’m thinking Friday. Friday sound good? Let’s make it Friday. You know that if you’re in the office, so is everyone else (modulo normal holidays, off-sites, illness, etc).
  4. if we ever have to “crunch” and work unpaid overtime, I’m afraid we’ll all have to start coming in 5 days a week. I know, it’s tough.

Self ownership

  1. you own your work: no-one will chase you; informing people of your status, and of delays, is *your* job
  2. you own your project: everything works on Scrum (where the “team” owns the entire process – no producers, no project managers); NB: if you claim to “know Scrum” or be a Scrum Master, or “have used Scrum” and you don’t understand/believe this team ownership thing, here’s a big fat hint: YOU MISSED THE POINT
  3. you own the company: everyone has vested equity (not options) in the company

Mentors not managers

  1. increased organizational power is based on your ability to bring others up to your level. It’s based on your contributions to the other individuals. It’s not based on your organizational prowess
  2. if you cannot mentor, cannot explain complex/new things simply and clearly … you will not advance in the management chain (you should become a Domain Expert instead!)

Your value is what you are paid

  1. This is an implicit assumption in all salary negotiations and performance reviews.
  2. It will also be required to be *stated* explicitly in all negotations and reviews
  3. If your manager believes you’ve got better, they have to increase your pay
  4. If they do not increase your pay, they’re not allowed to give you a positive performance review
  5. There is no point in your career where “Becoming a Manager” is a requirement to get your salary any higher; the only benchmark is “can you further increase your usefulness to the company?”

You have a duty to become the best you can be

  1. Playing games, during company time, is an expected part of most jobs, since we are a “game development company” and you *need* to know what our competitors are doing
  2. Learning new skills, during company time, is an expected part of most jobs, since we’ll always be looking to make use of any “better” new technologies and tools that become available
  3. Not going on paid training courses, not increasing your understanding of our industry, allowing your personal skill progression to plateau … makes you sink behind what your peers in other companies are doing, people who would like your job. Get too far behind and we’ll give it to them. You owe it to yourself, as well as all the rest of us, to make sure YOU, as an individual, are constantly getting better, and learning new things
  4. The structure of the company is explicitly designed to support as many people as possible to become the best they can be. If in doubt, or in difficult situations where no alternative is “easy”, we will err on the side of helping people to improve themselves.

100% Organization-level transparency

  1. knowing what is happening in the organization is a right, not a priviledge
  2. knowing the reasoning behind organization decisions is a right, not a priviledge … from the reasons behind a marketing campaign being run the way it is, to the reasons for the product strategy, to the reasons that one particular tech is being used rather than another
  3. being informed of the progress of ongoing processes / issues is an expectation, not a priviledge … that means that people working on things are expected to proatively inform the rest of the company what they’re up to
  4. transparency overrides privacy (unless forced otherwise by explicit legal requirements)
  5. e.g. the salary someone earns is a personal and private matter – but the salary the company pays to each of its staff is not, and every member of the company has full free right to see that info. The company knows additional things – e.g. thanks to tax law, companies may know of other income their staff are receiving – but those are not part of the company, hence they are not part of the transparency

The buck stops with the directors

  1. any issue that necessarily has to be handled by an individual, that can’t be handled by the “team ownerships” etc, or e.g. is “sensitive” or a private personnel issue, WILL be handled by a named director instead
  2. no manager can accrete decision-making power, unless they are a company director
  3. e.g. if too much power is taken away from teams by directors, by accident or device, the directors will become overworked and will have obvious incentive to push decision power back to the teams

Google 20% time

  1. Problem: it’s either half a day, 12.5% time, or 1 day, 25% time. I’m not happy with either – one whole day makes things much easier mentally for the person to switch, but I’m afraid that converting it to 25% time and having people available only 3 days in every 7 would be too destructive?
  2. As per Google, this is not a right, it’s a priviledge
  3. all 15% time projects require sign-off by the person’s direct manager (with appeal to a director)
  4. all 15% time projects require monthly status presentations to show what’s been achieved, and the manager has to approve or deny continued work on the project

Team budgets – food; drink

  1. every project team has a weekly budget for food, and one for drink, and is expected to on average have one team lunch a week, and one team evening social (with free alcohol) per week

Healthy food; healthy environments

  1. the office will not have Cola vending machines, or ChocolateBar vending machines. *If* it has any vending machines, they’ll be majority subsidised – free, or practically free
  2. the office will have a surfeit of fresh fruit, renewed every day, starting at or before anyone gets into the office
  3. any meeting called before 11am will have some free small fresh food with substantial sugar content (for anyone who missed breakfast. Until they recharge their blood sugar, they’re probably cranky and irritable – and irrational – or simply silent and unthinking, like a robot, and make everyone else suffer because of it)
  4. choosing to hold meetings physically outside the office, e.g. in local cafes, and having the company pay for coffees and snacks, is a right, not a priviledge, for all employees

Remote working, and Online Working

  1. at any given time, we aim to have a substantial minority of staff working remotely / telecommuting, e.g. around 20%
  2. remote workers can expect slightly lower salaries than their full-time equivalents; the company gets more value out of people who are co-located – but it makes all of us work better to have a mix of co-local and remote colleagues, so we welcome the presence of remote workers
  3. all employees are required to be online and available *and reactive* on IM during all working hours
  4. all development systems and tools will support remote working by default (e.g. remote compilation, remote builds, remote deployment, remote access for all internal systems). This is one of the ways that having remote staff makes our overall operations better: better tested, more robust, more adaptable
  5. all employees will have their own password-protected SSH keys stored on a free USB key; all company systems will work on SSH key-based auth; all workstations will be configured to do single-sign-on using the individual’s SSH key – no passwords required

Guards against the unscrupulous

  1. all ownership is only part-vested, tied to time served AND ALSO personal performance targets. This will take substantial time to invent/negotiate on a per-person basis (I know, I’ve tried. Sometimes, I’ve given up on it, because it was so much effort. But … in the short and long term, its worth it)
  2. managers have more time to look for problematic individuals, as they’re freed of some of their normal duties in other companies
  3. teams, being self-owning, have the power and the incentive to reject any failing members. Over time, failing individuals will either change, find teams that do welcome them, or find themselves conspicuously under-employed, making them an easy target for management attention (this does not imply “firing”, it’s up to the management what action they take, but they clearly now have staff they’re paying for and getting nothing from)
  4. directors have a lot of burdens of responsibility under this system; they also have a lot more visibility into the company’s status than in a standard company, so more chance to fulfil their responsibilities
  5. most of the processes are designed to be self-healing/recovering when encounting unforseen problems: the teams and individuals that do the bulk of the actual *work* are self-owning, the managers whose roles are mostly shepherding are largely disempowered to break anything, any unusual problems fall into the laps of the Directors who already have total legal power to enact whatever is needed anyway, etc.

Next steps

Please help me debug this thing … add your own suggestions, or highlight the flaws in what I’ve written, or point to evidence both for and against the realities of what might work … etc, etc, etc.

Categories
agile community computer games entrepreneurship games industry massively multiplayer

How can we make a Europe-wide MMO Publisher?

(4 posts in one day? Yeah! Too busy to be regular right now. GDC is on the way)

At the end of my commentary on the formation of NC West, I added almost as an afterthought a little comment about Europe and the MMO industry:

there’s a gaping hole in the MMO sphere. For someone bold enough to step into that hole, you could “own” Europe’s online gaming industry for the next decade.

Since I wrote that, surprisingly many people have commented on it both by email and in person, either along the lines of “look who else missed the opportunity” (Jagex, Ankama, Bigpoint, Gameforge), or along the lines of “yeah!” (count me in) … or both.

So, I wonder: what *would* it take, right now? If you have ideas, post them here. I’ll be at GDC in 3 weeks time, and I’d be more than happy to pitch this as a credible plan, if you come up with a comprhensive-enough plan. It’s a lot more expensive than any of my own humble plans, but in many ways I find it a lot easier to justify, financially. And I’m not even trying (it’s just a game for me right now, idly imagining what I’d do, if I were Jagex, or Ankama, or Gameforge, etc).

Wishlist time. Over to you, Dear Readers…

Categories
games design marketing massively multiplayer

The power of Free: Free Wifi

I’m sitting in the Departures Lounge at Helsinki airport, which now has end to end free wifi (I can see 3 or 4 different wifi stations here, on two channels). It’s the “open a web browser window first and hit a button to say “yes, I agree to your terms and conditions”” variety – took me a couple of attempts to check email until I woke up (it’s not yet dawn here!) and guessed what I’d need to do.

But the interesting thing is quite how much benefit the airport gets.

Modern airports, as entities, get a huge amount of their revenue from the shops inside them. I’m from the UK, where Heathrow (and to a lesser extent Gatwick) have taken this to extremes for decades, but it’s spread over most of Europe and much of the USA by now too.

Advising passengers that they must arrive 3 hours before a flight leaves is one way to make them spend lots of money. Cancelling their flights is another (the branch of the WHSmith’s newsagent inside Heathrow airport made vastly more profit than any other branch in 2007 thanks to the plane cancellations that year). Making the airport experience a pleasant one, so that people *don’t mind* coming early is yet another. Facilitating people “working” at the airport too.

And free wifi supports not one but two of those. Making it hassle-free and ubiquitous is the difference between me wiliingly turning up more than an hour before my flight, and what I would normally do (aim to arrive 30-45 minutes before an international flight, and waste as little time as possible).

This is a model of “free” that I feel is still under-explored in the game space: Free as driver of larger secondary monetized activity.