Windows 8

The wife just got a new laptop and we it comes with Windows 8 on it – we are both (the two of us) just trying to get used to it.

Dear God Microsoft, what have you done?

This is just… a mess. A total, unadulterated cluster fuck. Of epic proportions. I can’t believe ANYONE let this go out the door as it is.

Removing the start button? Now, I get why. I get that it’s to force people into the new Metro front end. If you do that, and your applications are only accessible via that, then when you develop new app’s, they will automatically follow the Metro guidelines and then work on tablets like the surface.

And it’s an admirable goal – one OS that works the same on both PC and on tablets. It would leapfrog the IOS / OSX combination issue that Apple has, and put MS on top again.

Except…it sucks. The fact is, if I spend $2000 on a laptop, I don’t want it to be a glorified tablet. I am used to resizing windows and having lots of text, and that’s what I want. I have a way of working and you, as a company, trying to force me into a tablet approach is completely contrary to the way I have been working and want to work.

Removing window resizing for Metro Apps? Seriously? What fucking planet are you on?

Making it so I can’t get to the programs except for going through Metro? What the FUCK was wrong with the start button in the first place? Sure, it doesn’t work so much on Tablets. Who cares? On a table Don’t Have It. It’s not that much of a stretch.

Look, Microsoft, removing functionality that used to exist is not “innovation” – it’s just reducing the experience that people are expecting.

I mean, what you’ve done to Skype on Windows 8 just blows my mind. ALL of the useful functionality is just gone. I can’t reorder chat windows, it doesn’t tell me which chat has a new message, in fact, the options functionality is so hidden that I couldn’t find it at all, until I looked it up on my PC.

Seriously. This shit has got to stop. I get what you are trying to do, but I think we can all agree that a merged codebase for both tablet and PC is a disaster and it needs to be rethought from first principles. The fact is, tablets and PC’s are not the same. They just aren’t. I don’t want the same experience on my PC as I have on a tablet. I have greater resolution, I have a mouse and keyboard and I want to be able to arrange in a greater manner than a tablet really allows. Limiting me to the lowest common denominator just sucks, and I’m not thrilled about.

And removing the start button. Whoever even proposed that needs to be fired. Immediately.

Posted in Uncategorized | 2 Comments

A response to the awesome Fireproof blog post on Polygon

First, you need to read this. Fireproof ‘free-to-play binds the hands of dev’s who want to help”

It’s ok, because it’s very well written, very cognizant of the situation in mobile development today and very well argued. It’s a very good read and a refreshing perspective from someone who’s actually gone out there and done it.

Read it? Good. Because you’ll need to in order for what I have to say next to make sense.

I have to agree with quite a lot of it. In fact, all of it. I would far rather be making larger, single experience games than have to constantly be designing stuff with IAP as an integrated part of the experience, since that’s where I come from too.

But while I agree with everything said in that post, it’s also worth pointing out that within the context of the environment, some of the arguments are less persuasive.

Now, I don’t mean that to come out as ‘no, you are wrong’, because that’s not the intention at all. I LOVE the Room (finished it) and I have Room 2 on my ipad mini, but I haven’t started because I know that when I do, it’ll own me, and I just have too much to do in life right this second.

My point here is that with context, everything said I agree with. But context is larger than the article gives on. There’s risk, for example. While the mobile market is far broader than AAA console and PC development, it’s a lot shallower. What this means is that there aren’t the number of 12-16 year old CoD fanatics for Ipad Games as there are for the actual CoD games on Xbox and Playstation. A console is a dedicated games machine, mobile is not.

The fact is that deep investment in mobile is a scary proposition simply because there isn’t that rabid fanbase already there. Those that tried, as has been mentioned, treated it as a AAA platform and it…just isn’t.

Mobile gaming is very different from console gaming. When you console game, you sit down in front of your TV with a very express aim in mind – to play a game, usually for some period of time. Mobile is not like that. People pull their phone out at odd times, like in a waiting room or on a bus, and play for a very short period of time.

You can’t generate deep SkyRim like gameplay in that situation, because it relies on so much prior knowledge of the game and current situation that it takes 10 minutes to remember what you were doing and everything that pertains to that, and by the time you’ve done that, the Doctor is ready to see you now. By definition, since game play periods are unpredictable both in when they happen and duration, game play tends to be much lighter and more what we at Midway (back in the 90′s) call Dip Games. You can dip in at anytime, play for as long as you want, leave and when you come back, there is no repercussion to the game you are playing. Multi-player Quake is a perfect example of a dip game, as is Mortal Kombat.

Incidentally, it’s worth pointing out that The Room is inadvertently a Dip Game – something very specifically that works for random play times. The way it’s constructed – this puzzle leads into the next one, leads you into a nice area to put away the device. “I figured that out! Awesome! Lets put the tablet away and go to the grocery store now.” Etc.

Sure, this situation limits what you can do – you end up with a ton of asynchronous card game and turn based games – but that’s the reality of what the average gamer has time for. It’s not about “what they want”, it’s more about the realities of how they play and the attention span they have at the time of playing. There is some validity to the claim, although as has already been pointed out, that doesn’t invalidate the Polished Single Purchase game approach.

Another thing that plays into this is history. The fact is, smart phones were an evolution of existing phones, which were not designed to play games, but did anyway – witness Snake on the old Nokia phones. Phone users have been conditioned to accept that games will look a bit 1980′s, mainly because phones as a games platform hasn’t been oriented that way. We are now, for sure, or you wouldn’t be able to put games like The Room on it, but that conditioning has not gone away. People just don’t expect the same kind of graphical glory that they’d get on their console. If they did, they wouldn’t need the console in the first place, and while that is the inevitable conclusion (I’m with Ben Cousins on this), right now they need to justify the purchase of an XBox One AND an Ipad, so they play less graphical intensive games and accept it on the Ipad and then expect real time photo realism on the other.

That’s not to say that mobile games currently don’t have to look good, just that most developers aren’t spending their time on that because it’s, as it’s pointed out, there is the implicit “good enough” thinking in most mobile development.

Which brings us to the current generation of money men. Publishers, investors etc. The fact is that most of these people are not creative, and it’s foolish to expect them to understand what a creative needs to do to ensure polish. They are there to get the max return they can get for as little outlay as they can get away with. If the game looks a little shitter than it really needs to, whatever, we are still making money – expectations aren’t that high to begin with. It’s the race to the lowest common denominator that still makes them money. They are still in that mindset of “mobile games tend to look shitty” even more than the players are, to be honest, because they are seeing the cost of development of quality (of which, more in a bit).

As an example, I had a client for a year who was big into hunting games. When I looked at the codebase and what his games looked like, I gasped. It was horrible. No animation blending, no animation timing, lighting all wrong, GLsettings all incorrect etc. It was just awful. I looked at other hunting games and most of them were no better. I spent a year telling him that one month’s effort could upgrade his engine to the point where he would be head and shoulders better than the other games, and that he could own this genre with his offerings. But he just wasn’t interested – one month of me working on something that he couldn’t track as adding to his bottom line was unacceptable. You could get an entire game done in that time. Good enough paid the bills and reduced his outgoings, and that was that. (I actually added an animation blender to the codebase on my own, simply because I just couldn’t stand looking at it.)

There is a tendency to short term thinking in mobile that is a bit scary, but is also understandable because development times are so short in comparison. You get a game done in a month on mobile, so every day counts and if you need to do something that’s going to bust that deadline, well, lets put that off till the next game. Like I said, understandable, but coming from AAA, where polish is everything, it’s a hard pill to swallow.

Then there’s The Current Generation experience. While we are lamenting the lack of the One Sale situation that AAA (mostly) enjoys, it’s worth pointing out that the iphone is now seven years old. That’s seven years of a generation that is used to F2P and how IAP works. For the more casual gamers, this is a way of life. When they come to XBox and find the average game costs $60, it’s a shock. It’s certainly that way with my kids. They are now conditioned to expect this dribs and drabs kind of game play approach.

Now, that’s not an argument that F2P is “better” than a polished single purchase experience at all, just that it’s here now, and it’s not going away, and objecting to it is more than a little pointless. Sure, Polished Single Purchase is valid too, but it’s harder to be successful at it since there is an entire fan base that doesn’t want to pay $20 to play your game, but wants to try it for free and then very slowly pay out over time (usually without realising it). That’s a reality. That’s not a “You shouldn’t do it” argument, just a recognition that high quality (and usually high development cost, which often goes hand in hand – we’ll talk about that next) is a harder sell. It just is.

As an example, lets look at another extremely high quality game on Ipad – Republique. I know for a fact they’d have to sell multiple hundreds of thousands of copies to even break even on development costs. There’s little chance they will, but they do have episodic content to fall back on, since each episode won’t cost as much to make as the initial engine build. But the point is, it’s unlikely they will make their money back, at least initially.

I really know of only three games that have really had a large single player AAA like polished experience that have made serious bank on mobile, using the single purchase model. One is the Room, another is the Tiger Games set of games (most notably, Waking Mars) and the other is Infinity Blade (which, it should be pointed out, was financed as a mobile advert for Unreal on mobile, and has over $500k worth of assets in it – not that they didn’t make their money back, but it’s just not something your average mobile developer could either afford in the first place, nor afford to place that kind of risk on. Not when there are other, cheaper, methods of making a buck).

Which does neatly lead me into the last point I wanted to make, regarding development costs.

Barry mentions that The Room was made with a budget of $70k. That’s pretty damn impressive. I wouldn’t have imagined that was possible. I suspect it’s because they were all ex AAA developers, had good development habits, and knew exactly what they wanted to make up front. And that’s the rub.

Most mobile developers do not come from that background. The Tiger Games crew did, and it shows. What they produce is very AAA quality. The Republique crew did not, and their development costs were.. well, I don’t want to give away numbers that I got second hand anyway, but lets just say it wasn’t $70k. Way too few zeros there.

Most mobile developers, for better or worse, want to do the least they can and just get it done. Android is a nightmare since there are so many platforms and capabilities to handle and test, and IOS has it’s own issues when it comes to phones.

My point is that saying “We did it for $70k and had no marketing budget” is not the norm. Most developers could not have done it for that. And it strikes me that relying on that as a business practice is probably a bit foolhardy. The number one problem with the appstore is visibility, and going in blind is an invitation to be handed your ass. In this way, The Room IS an outlier, and protesting about it doesn’t change that. It got success by word of mouth and people like Nathan Fillon and Zack Levi (“Chuck”) talking about it on twitter (it’s certainly where I heard about it). Now quality is an influencing factor there, no doubt. They would not have been talking about it if it hadn’t hit a quality bar, but there are other high production value games that I don’t see them talking about – Republique etc. You can’t rely on this as a marketing solution. Getting lucky once with celebrities endorsing your product doesn’t make it repeatable. Although, to be fair, now FireProof is in the position it is, anything it announces is news now anyway, much like Epic. Anyone else announcing the Unreal Tournament new development would be buried on the back pages, but because it’s Epic, it’s front and center. And that is what it’s like for most of the other people.

Something like The Room would take most developers at least $200k to build, and that’s assuming there were no design direction changes along the way.

Now, that’s not to say it’s not possible. What I’m saying is that I think their experience is not necessarily the norm – there are some modifying circumstances -, BUT that other developers may/should need to be trying to replicate it. The problem with lack of experience is that you often don’t know what you don’t know. The issue is that of risk – banking success on a Polished Single Purchase is a higher risk than going the IAP route – there’s just reality to that statement. Both are fraught with failure, but since there are more success stories of IAP games being successful, what do you expect most mobile indies who have NOT come from AAA to do?

Now is that a self fulfilling prophecy? Possibly, but while it’s an interesting discussion, it’s also an academic exercise. The landscape is what it is by now. The more interesting question is, can this be changed? Which is (at least to me) the thrust of what the Fireproof blog post is about. It reads, to me, as “We did this, why can’t you?” and while there are some very specific conditions in how they did it, the point is well made. Why can’t we?

The answer is, yes, of course the landscape can be changed. Is it likely? Well, according to my magic 8 ball, the answer is “Ask again later”, which I’d say is probably right on.

But, it won’t change unless more experienced developers do take that same risk that the fella’s at FireProof did. So here’s to hoping they do.

Posted in Game Development, Game Development commentators | Leave a comment

Quaternions – a primer

What ARE quaternions? I mean, you hear them talked about – what actually are they, and what are they used for?

Here’s a brief description and some usage cases. Hopefully this will help for those struggling to understand what they are and how they are used.

Now, a quaternion, at root, is a direction (or, in math parlance, a vector – which is the same thing) and a rotation around that direction. What does that mean?


What is a vector?

It means this. Point your finger at something. Anything. Just point your finger. The direction your finger is pointed at is a vector. It’s a direction. In 3 dimensional terms, it’s a three value combination of up/down, left/right, and forward/back.

Imagine it this way. Imagine your hand is at position 0,0,0. It’s the ‘origin’. Now point your finger. The direction your finger is pointing at is expressed, in math, as a Y position (ie up/down), between -1 and 1. -1 would mean you are pointing exactly down. A 1 value means you are pointing directly up.

It’s the same for X (left and right) – it’s a value between -1 and 1, where -1 means you are going total left, and 1 which means you are going total right. As an aside here, there are some coordinate systems that allow for Left Handed Rotation. This means that what is considered ‘left’ is in actual fact a positive 1, not a negative 1. This means that the values for X are, effectively, flipped. It’s just one of those things that happens on occasion, no one really knows why or can explain it. It’s just one of those things you need to know up front, if you are using a left handed threaded coordinate system or not. Most systems, however, are right handed.

And similarly, for Z (depth or forward and backward). A -1 here means it’s coming out of the screen, towards you, wherever the camera is. A 1 here means it’s heading exactly away from you.

Note – it’s worth pointing out that it’s entirely possible for a vector to have a zero in one or two of the positions of the axis. So a vector of (1, 0, 0) is totally legal, and is saying, the direction is left. There is no up / down, and no back / forward values at all, we are just moving left.

A note on Normalizing.

Now, you’ll note that most of the examples I’ve given here are between -1 and 1 for each axis. Why is that? A vector coordinate does not actually need to be between -1 and 1, infact, it can be any set of numbers in there? A legal vector is x=100, y=200, z = 50. So why the insistence on keeping numbers between -1 and 1?

This is defined as normalizing. Well, it’s a little more complicated than that. A Normalized Vector is a vector where, if you add up each of the X, Y and Z values, they equal either 1 or -1. Or, to put it another way, if you define a vector direction as a Normalized Value, if you drew a line from 0,0,0 to the vector position, the length of the line would be exactly 1.

Now, interestingly, all vectors (IE all possible values of a vector, even those above 1) can be ‘normalized’. For example, a vector of 0.1, 0.8, 0.1 is the exact same as 100, 800, 100. One is just a ‘smaller’ version of the other. Or, to put it another way, normalized. To normalize a vector, it’s pretty simple. Take the length of the line from 0,0,0 to the vector position (and you can use Pythagoras’ theorem for that – length = sqrt of ((x * x) + (y * y) + (z * z))) and then divide each of the axis values by that value.

Now why bother? Why do we do this? Well, it’s because certain other things you can do with vectors – like dot product and cross product (math functions that I’m not going to go into now, but that are really useful down the line for trigonometry functions) – that rely on the vector being normalized to get useful results out of them. Normalized values are useful since all they represent in those conditions is a direction – not a position. They are, by definition, an offset from 0,0,0.  You can then multiply a normalized vector to get a line of any length, which is really useful for projecting out a position into the world.

Back to Quaternions.

So ok, we’ve defined what the vector, or direction part of a quaternion is – it’s a 3d point from 0,0,0, which is normalized – IE it’s a vector length of 1. What’s the rotation value and what does it mean? Let’s go back to the finger pointing exercise. Point your finger in a direction. Any direction. Now rotate your wrist. What happens is that your finger still points in the direction, but your wrist is rotated. So the rotation value of the quaternion is describing the rotation around the axis the vector is pointing at.

Why would we even care? The direction is still the direction – that hasn’t changed. Well, it has, actually, but in root ways of how it’s expressed. It still pointing in the same direction, but how that’s described at a math level has changed. Try this. point your finger in a direction, and now extend your middle finger left, and your thumb up. These represent the X and Y directions of the vector. The middle finger is pointing along the X axis, and the thumb represents the Y axis. Now rotate your finger again. You’ll notice that your thumb and middle finger are now pointing in different directions. This means that the rotation has done some weird things to what the quaternion now thinks is ‘up/down’ and ‘left/right’. If you rotate your wrist enough, X becomes Y, because now it’s pointing up, and Y becomes X, because now it’s pointing left/right. You can see how the rotation messes things up.

This becomes important when you start putting quaternions on top of quaternions. Because you’ve now altered the origin of rotation and vector direction, from the parent. I’ll go into that more in the next bit.

What can I use Quaternions for?

The most common use of quaternions is in animation systems. A quaternion can represent a bone position in a hierarchical model of bones in a skeleton (by hierarchical, I mean that bones have a parent / child relationship. A wrist bone is parented by the forearm, and that in turn  is parented by the upper arm / shoulder bone. You end up with a tree of bones, each having children and parents. The reason for this is that bone positions / orientations are additive. This means that each bone inherits both rotation and raw position from it’s parent. If you rotate a shoulder, then all the bones underneath it move along with it, because they are attached to their parents. Then each bone underneath rotates itself, and adds that to the rotation the parent already has.).

So for each bone, you don’t have a position – since you don’t need that. Your original skeleton definition already has position offsets for each bone from it’s parent, and those offsets don’t change, frame to frame. The length of bones doesn’t change – it’s a set thing for all animations.  What you do have, per bone, is a quaternion, which describes the angle and rotation of each limb, relative to it’s parent, based on where the end of the parent bone ends up being in the world. So, to put it in more real world terms – I know that my upper arm is of length 10 units, because that’s in the root skeleton definition. I also know that the default direction of the shoulder bone is straight out in X (this is because root skeletons define the arms as being flat out, stretched out to the side. This is known as the T Pose. No one knows why this is the default definition of a skeleton, but it is.) Now, when I have a quaternion, the rotation in the bone is an offset from the raw skeleton position. So in order for the bone to point down, as it would do for a ‘normal’ stance for the skeleton, we would need to rotate the bone down by 90 degrees. So the resulting quaternion would look like this – with a vector of (0, -1, 0) and a rotation of 0, since we aren’t rotating the bone at all – just giving it a new ‘direction’. This is saying “Point the bone down”.

What then happens is that, knowing the bone length is 10, you’d take the parent model position of the shoulder (which, again, we’d know from the root skeleton definition), get the quaternion vector position, scale that by 10, and then add that to the shoulder position, and that gives us the new position of where the upper arm ends – ie where the forearm begins.

This is better than storing a real transformation matrix per bone (which can do the same thing, but in different ways) for two reasons. One is that it’s smaller. A real matrix is 4×4 floats -  12 floats in total. Per bone. If you have fifty bones in a model (and that’s a conservative estimate for a biped, for example, once you start including fingers), that’s 50×12 floats (or 50*12*4 = 2400 bytes) per frame of animation. A quaternion is only four floats per bone, so the math means that a single frame of animation is considerably smaller – 50*4 floats (or 50*4*4 = 800 bytes per frame). That’s a saving of 1600 bytes per frame, which if you have thousands of frames (and most modern games do), is a significant saving.

But the other reason is even more significant. Matrices cannot be interpolates, and quaternions can.

What does that actually mean though? I mean, it sounds good, but it’s really gobbledygook, isn’t it? Lets go through it.

In our animation example, imagine we have three frames of animation. The animation frequency is 12hz. That means we have a different frame of animation every 5 frames, assuming we are running at 60 fps. So for 5 frames, we display frame 1, then on the 6th frame, we start displaying frame 2, and on the 11th frame, we display frame 3 etc.

But that’s not how animation systems actually work. What they do is actually interpolate between frames, based on how close you actually are to each frame.

So in our example, we have five frames of display, but not enough animation frames for each frame of display. So what animation systems do is take a percentage of frame 1 and frame 2, dependent on how close the rendered frame is to either, and then add those together. That’s not really any clearer, is it?

Ok, so in our example, we are rendering 5 frames, using frame 1 of the animation. But what we actually do is for frame 1, we are rendering 100 percent of the first frame of the animation. For frame 2, because we are moving on in time, towards frame 2, we take 4/5 (or 80%) of what frame 1 represents, and then 1/5 (or 20%) of what is in frame 2, and add them together, to generate a merged frame from frame 1 to frame 2. We are, in effect, generating a new frame of animation from two others. This is called Linear Interpolating, or in game dev parlance, Lerping.

The actual effect is basically saying “Take the rotation and the vector of frame 1, scale the vector and rotation by 0.8, then do the same for frame 2, only scale it by 0.2, then add those two together, re-normalize the vector, and that’s your interpolated frame”.

Then, for frame 3, the amounts you scale by change, so now it’s 0.6 for frame 1 and 0.4 for frame 2, because we are now getting further away from frame 1 and closer to frame 2. And so on.

The thing is, you can do this interpolation for quaternions. You cannot do this for matrices, because you end up potentially flattening the matrix (you don’t need to know what this means, just that it’s bad) and so this is one important way that quaternions score over ‘real’ matrices.

Drawbacks of using Quaternions

1) They don’t have position built in. They are purely a direction and rotation. Root position needs to be held elsewhere. A ‘real’ matrix has position built in (which is one reason why it’s larger). But this is by design, since Quaternions are designed to be used in hierarchical situations, where the result of the parent would dictate where it’s starting position in the world actually is.

2) They don’t have scale built in. A ‘real’ matrix has scale built in, for each axis (so you can scale a model by each axis individually. So you can say “I want this model to be fatter on the X Axis, but not on the Y or Z axis”, and a matrix can handle that -  a quaternion cannot. Incidentally, you may ask why you’d want to do that. Well, it’s a way of being able to scale a rendered model to your view port aspect ratio. Models are built assuming that the window they are being displayed on is 1:1, so it’s a square. The moment that is no longer true, you need to cope with that in code. One way to do it is to affect the X and Y scale values of a matrix, to ‘stretch’ out a model, so it fits in the display correctly. Most games do NOT do this, and that’s ok too. But a matrix approach enables you to do this.

Now, there ARE things that a quaternion can do to represent scale. We talked about the quaternion vector component being normalized – ie a vector length of 1. What if that is not true? What if we have a vector that is not a length of 1? What if it’s 2? Or 20? Well, the practical effect is that this is a way of storing scale. The scale itself is whatever the difference is of vector length from 1. So if the vector length of the vector stored in the quaternion is 10, then the scale is 10. Now, this is different from how a matrix stores scale, because a matrix stores scale per axis – ie it has different scale values for x, y and z. A quaternion scale affects x, y and z at the same time. It’s a scale of the length of the vector along the vector. In our animation example, it would make a limb longer, not just fatter along one axis.
Ok, so that’s a basic primer of what a quaternion is, what it can do, and what some of the advantages and disadvantages are. Hope that helps.

Posted in Animation, Game Development | Leave a comment

We need more assholes in the game industry!

Wait, what???

Surely we need less assholes in the industry, not more? What kind of idiot says we need more??

OK, so let me define some terms for you.

When I say asshole, I mean vision holder, for on large projects, they need to be the same thing – or at least considered the same thing by the team.

The reality is that large projects need a vision holder that has passion in his project, totally believes in what he is making, has a firm vision of what that looks like and has the forceful personality to push his team into making what he envisages.

And, when you say no to people, when you say “No, this needs to be this way, this is what I see in my head. Make that happen”, you become an asshole.

People have accused David Jaffe of being this – of being a dictator on the original God of War, but my view is that GOW would not have turned out like it did without a forceful and competent personality like David on the case. He knew what he wanted to make and he set out to make it and he followed what he believed was right. And the results speak for themselves.

Incidentally, it’s my view that this is why David did not follow up, by leading GOW2 – because he specifically did not want to be ‘that guy’. I think he’s very uncomfortable being portrayed as “that asshole in charge”, because once you know him, you know that’s entirely a false persona. He’s just gives a shit about what he’s making.

Now the reality of game development is that it’s filled with passionate people. The more engaged you are in what you are doing, the more you care about it, and the more you want it to be the best it can be, and you probably have a vision for that (or, in the case of coders, how it is best implemented). The problem comes when that passion and desire / vision is incompatible with the main vision holder – putting frogmen into Bioshock might be ‘cool’ to you, but it’s not what the main guy wants to see. So out they go. And it sucks to you, because it was your baby, so the main guy is obviously An Asshole.

The guys up top have to be confident in their decisions and forceful enough that when they kill someone’s baby, it stays dead. And that’s hard – very hard – to do without being an asshole.

I’ve met exactly three people who can do it – one is Phillip Rosedale, creator and Chairman of the board at Linden Lab, another is Will Wright, who can cut your legs out from under you with one concerned question, and the last is Matt Booty, who was the sound manager at Midway when I was there, rose up to be CEO and is now at Microsoft, heading up Mobile Dev Rel.

So while it’s entirely possible to make games and be the vision holder without being an asshole, the reality is that most people are going to have to be perceived as an asshole to get the job done, in time, to sufficient quality, because that’s the only thing that passionate people will respond to.

I think that almost every awesome game – save, perhaps, Half Life – can trace its development roots to one guy with a pushy personality who saw what he wanted and made people give it to him.

Now, of course, giving absolute authority to anyone is also a danger. Absolute power corrupts absolutely, right? And yeah, if the guy in charge is an asshole, produces his product and it’s crap, well, then we all have a problem, right? How do you deal with that?

Dunno, honestly. Worth asking the question though.

Posted in Game Development | Leave a comment

Javascript – my experience

Recently I’ve been working on a project that is Javascript based. I’ve never done Javascript before, but I know PHP pretty well, so how hard could it be? It’s just another language designed for building web pages, right?

Yeah, my own casual arrogance here just bit me in the ass big time.

Javascript is to PHP what C++ is to Basic. Javascript carries within it several paradigms that you just have to get your head around.

There are some that are relatively easy, and now I know about them, I do actually miss them when I go back to C++ or Objective C – Promises are a case in point.

Promises are where you can ask Javascript to do a bunch of functions, one after the other, and feed the results of one into another. It’s really useful for doing back and forth with a webserver, for example. Normally I have block code indented to do it, and the XCode debugger fails in those situations. With Promises, I don’t have to worry.

I’ve had to get my head around the concept of local Javascript and server side javascript. I had no idea that javascript websites physically download javascript code to the client in the background. That was a stunner.

But all that being said, because of what Javascript is – basically a thin access layer to data structures, with some logic thrown on top – writing JS can be a monumentally frustrating experience.

The fact is, JS is abstract. Very abstract. You can call functions using variable names. All data structures are, effectively JSON objects (which makes sense, since JSON actually stands for Javascript Object Notation). You don’t serialise anything, and being able to see inside data structures can be…problematic, to say the least.

The entire language is something that it’s extremely difficult to work out, just from looking at code; you have to already know the language to understand what is going on, because it’s all so abstract. It’s almost as impenetrable as Perl.

How it integrates into HTML is another of those things that either you know or you don’t – it’s nigh on impossible to work out why anything is done the way it is just from looking at samples.

Javascript strikes me as being an extremely powerful language, but it has a cost of entry that is far far greater than those of traditional languages, even for an experienced programmer. It’s equal “Oh, that’s cool!” with “What the HELL is going on here??” moments.

I suspect more familiarity will help. Either way, it’s been a learning experience…

Posted in Game Development, Web Dev | Leave a comment

Adventure Book

So I promised to talk about Adventure book.

Just over a year ago, I spent a couple of weekends building a do it your self adventure book engine in IOS. All UIKit. It’s very simple – book definition as XML, the usual.

The idea was to get three sample books written and pitch to the BBC for the Doctor Who license, as another arm of the 50th anniversary celebrations.

Suffice to say, whilst the BBC in LA were interested, they basically said “But no chance” – not because they didn’t want to do it, but because it was narrative, it meant that Moffat himself would have to be in on it. And that getting any attention from him would be like “finding rocking horse crap”. So I asked about how the current novels and comic books were being done, and he explained that the pathing for them for approvals within the BBC was different; this was a game and given the lack of success for other games released (The Eternity Clock, for example), extra scrutiny is being given to those kinds of things.

But, the comic people – at this point IDW based in San Deigo -did have a digital license and possibly I could get this through them. So, as luck would have it, I was in town for the Doctor Who convention that weekend, and lo and behold, IDW was there! So I showed them what I had, they liked it, but then they asked if it could be more ‘comic booky’. I completely understood what they wanted, and so I spent the last year adding Motion Comic features to Adventure Book.

It’s now a fully fledge Motion Comic book creator, with all tools built into the app for generating content. To be clear, it’s not any kind of image editor or anything like that. It allows for import of images, then you can associate small scripts to them – rotate this much, wait, fade to 0 alpha, etc. The idea is that you lay out your content in the IOS app – getting totally accurate preview (there’s even a scrubber bar in the tools!), save it out and the app even packages it up, ready for it to be posted as DLC.

You get images / sounds / fonts etc in to the app either by using the built in web server – the app gives you a web url address, and if you go to it, you can see an Upload page, which uploads the content to your device OR you just use dropbox, which is actually easier.

So anyway, this thing is pretty much done. There are a few small bugs I need to fix – particularly in some of the editing tools – but functionally, it’s all there.

And I’ve no idea of what to do with it. IDW has since inked a deal with a competitor, and I just don’t really know what to do with this app…


Posted in Animation, Game Development | Leave a comment


OK, so unsure if I should do this – I could see potential clients being upset by the fact I’m working on something for myself. I’ve already had one get very grumpy about the fact that I asked questions about IOS engines on a forum I am part off, when he felt I should have been exclusive to him. I did point out that what I do on my own time is up to me, and we had words about me not being ‘owned’ by him, but whatever.

Really I just want to share the experience I’m having. I’ve been working on a couple of projects – one for about a year now, and the other I’ve just started.

The other one – Adventure Book – I’ll detail in another post. But the new one, GameBreakers, is fascinating to me.

It’s basically NFL Football with friends. Played asynchronously on mobile devices, using card packs to determine the plays you have available, players you get to use, staff you can use and so on.

Now my initial design for this was (and still is) pretty simple. So here’s what I did. I put together one of those .pdf UI flow things, using Balsamiq (which is seriously awesome. Worth paying for.) and then I built it all in UIKit on IOS devices.

Now I was really surprised at just how fast I am able to build UIKit stuff now. I mean, I’ve done two weekends and some evenings, and pretty much every page is now there, populated and actually drawing data from internal data structures. It’s ugly as sin mind you, but every page has every button, I know what goes from where and why, what info I am trying to present and all the rest of it. Once I know this, the back end DB structures pretty much write themselves. Plus, I get to hand it to an artist who will then know exactly what buttons go where, and they can design me a ‘style’, which I’ll need and god knows I’m not an artist. I’m not a fan of redoing work either, so if I can give them something that already works and just say “Make it pretty, but don’t change anything in layout”, then that’s a plus for all of us.

There’s some worry on my part that I don’t know enough about football to do the stats / play calculation justice – I worked on a Fox Sports app once, and my part was to draw the events of what happened in plays, in real time, with arcs and balls moving around the field – and it’s WAY more complicated than you think it should be. But I also know I have a ton of friends who live and breath football and can advise, so less worried about that.

Tonight I should have the proof of concept done, then I’ll start thinking about back end DB integration. I’m going with PlayFab – the spun off company from Uber, – and so far I have no regrets about that decision.

I am surprised at how fast this has come together though. I suspect that has more to do with the ease of using UIKit than any particular brilliance on my part though.

Tomorrow, I’ll talk about Adventure Book.

Posted in Game Development | Leave a comment

VFX and the Oscars

I was in the movie VFX industry for a few years working for Bob Zemekis on a Christmas Carol and Mars needs Moms – then I worked for OOOii for a year, who are involved in VFX development that is on stage. They generate all the computer graphics you see on screens in movies like Star Trek.

I used to literally work next door to Rhythm and Hues, just off Jefferson in Los Angeles. I know lots of people who have passed through their doors.

So this whole Hoo Haa over VFX has gotten my attention, and I have to say, I have some thoughts I’d like to share over this.

The first is this – to all my game developer friends are saying “Fuck VFX – we already have this problem and we make it work” – I say you are missing the point. We need solidarity here. They are suffering and for pretty much the exact same reasons that we as games industry indies are. That’s a reason to be empathetic, not surly and disapproving because they get attention and we do not.

Yes, VFX is ‘more’ sexy than what we do (unless you are a 12 year old boy and we aren’t going there), but so what? You love what you do anyway. I know I do.

The fact is, VFX crunches even worse than we do, they get no slice of the pie once their work is done, and their people expect to be laid off when a movie is done. They have even less job security than we do.

Sorry – should have posted this a year ago, just found it in my drafts folder.

Posted in Animation, Movies | Leave a comment

Valve Strategy Analysis

So, I’ve been watching with great interest lots of the Valve announcements and maneuvering in the industry and other people commenting on what they are doing and why they think it is. So I wanted to add some of my own thoughts to this.

Valve is probably going to abandon the GreenLight process and go with opening up Steam for submission via API, with little to no curation and then open the Steam Front End up for others to create store fronts.

That’s a mouth full. Lets go over it bit by bit. So Valve has Steam, which is a purely digital distribution method for games. They introduced it years ago and now it’s the defacto independent (ish – we’ll get into that later) PC digital distribution method. EA and others are still playing catch up with Origin and so on.

The thing is, getting a game onto steam is a bitch. Valve has been particularly opaque about the whole process todate. You send them the game, and they either say yes or not. That’s it. No back and forth, no transparency as to why they may reject you or what you can do about it. Either someone at Valve (and you’ve no idea who) likes it, or they don’t. And you can’t pre-do this either – they only operate on a game with considerable content. So you are out the time and effort to make the game before Valve will even tell you if you can be on their platform or not.

Now this, needless to say, sucked. And Valve knew it – they didn’t want to be the bottle neck for getting games onto the platform. They realised that what they were doing sucked, but as it was, they were taking developer time away from making games to approve these games; the reason there was no transparency was purely because they didn’t want to get into a back and forth with developers that would be even more of a time suck than steam approvals already were.

So they created the GreenLight process, which basically moved the process of them approving, by crowd sourcing it. The gamers who would buy the game would basically vote on which games would make it into Steam. Sounds great on paper – the monkey is off Valves back and the gamers only have themselves to blame if shitty games make it into the store.

But, as anyone who’s ever had to deal with crowd sourcing will tell you, this isn’t going to work. Gamers are basically both graphics whores – so pretty pictures will be approved over something like Flow – and they are also dominated by a vocal minority. Greenlight has basically become high school, voting on the prom queen.

Valve is not stupid. They see this, and they recognize the mistake made here. But what can they do about it?

Now, secondary to this, is the concept that Valve is going to go into the hardware business. They are going to produce a Steam Box. Why? Because, well, why not? A SteamBox in terms of physical development is a no brainer. It’s a low spec PC in a nice box. It’s not hard to produce – look at Oyua. But why bother at all?

Well, to a certain degree, because Valve have to. Windows 8 is coming – and Gabe has ranted on about how terrible it is. Well, yeah, it is terrible. For Valve and their Steam ambitions. Microsoft is finally going the closed, walled garden route – mainly because Apple has made so much money doing so and Microsoft need to compete. So Windows 8 is going to be particularly Steam Unfriendly, because Microsoft doesn’t particularly want Steam on there. They want their OWN app store, not Valve’s. They aren’t taking 30% of the Steam revenues – Valve are.

So Steam is likely to find it hard going, going forward. They aren’t particularly welcome on OSX since OSX has it’s own app store, Windows 8 is going to have it’s own – where do they go? Well, they make their own channel, on their own hardware. They use Linux (Remember all those “Linux is the salvation of developers?” statements from Gabe? Well, what those really mean is “Linux is the salvation of Steam”) since a) it’s free and b) it’s not owned by a conglomerate who is all about creating a wall garden and shutting Steam out of it.

So basically, Steam has no choice but to own it’s own hardware, going forward, if it’s going to retain the success it already has. But it does get better. If Valve makes this bet, the hardware costs go down over time, AND it can fairly easily get integrated into other platforms, like TV’s. Look at the Raspberry Pi. That’s a complete computer on a chip, and that costs $35 – and it’s pretty much Steam Capable. Imagine that built into your TV, running Steam. So the long term prospects are pretty good here, and it’s not hard to see why Valve are eyeing the hardware route.

Now the whole issue of curation is a problem – Valve doesn’t want to be in the business of judging your game – they also want as much content on steam as is possible, (and preferably exclusive content). A curation system imposes friction on the process (as anyone who has every submitted anything to Apple will know) and does NOT stop crap from getting onto your system – again, a wander through the appstore and google play indicates that.

So what to do? If you abandon curation, your platform gets flooded by crap, and gamers get pissed off that they can’t find the quality when they want it. Apple and Google are already grappling with this problem (although it’s a nice problem to have).

But is it really the worst thing? Having lots of shovel ware on your system? Well, actually, contrary to popular opinion, no.

One of the lessons I learned on The Sims and working on Quake based products is that Free Sells. What that means is that if there is a lot of Free product, it doesn’t matter what the quality is – the fact that there is a lot of free product is enough to drive people to buy your product. They think they are getting a lot for free, and that is attractive. It doesn’t matter if 99% of that free product is dross. It’s Free, and that’s what counts.

Valve knows this. In order to compete with Apple and Android and, to a certain extent, Oyua, they have to have a LOT of content to choose from in order to persuade people to put that new device under their TV. So, from a certain perspective, abandoning the curation and opening their platform to anyone works. Now a certain contingent are going to be pissed at this, because for them, the value of steam is that it is curated. They know what they are looking at is good. This will not be the case going forward.

But to a certain degree, this is a solvable problem (as we’ll see in a moment), because this is actually a problem of finding the good stuff, not the fact that the crap exists. And also, if Valve is really going to compete with Apple and Goggle and Microsoft, they have no choice. They HAVE to throw those gates open to allow more content and not burden themselves with the problem of judging it all.

So, ok, now we have a store full of large amounts of shovelware and some gems. How do you find the good stuff? Addressing this problem, Valve has had a master stroke of daring and audacity.

They aren’t going to solve it.

You are.

The idea is that Valve is going to open the Store API’s so that anyone can create their own front end for Steam. Oh, all transactions are still done through Valve and Steam – you’ll just be able to request all game information, and then display it, based on any filters you choose to put in place. So if you filter and only display games YOU think are good, eventually you earn the trust of gamers, and they’ll come to you to find out what games they should be looking at. Think of it as the movie critic effect. Those people who consistently filter out the crap and only display the good will get repeat visits, but those games are still actually bought through the Steam APIS (presumably there would be some kick back mechanism from Valve to the forwarding front end, so you get 5% of the sale, Valve gets 25% and the developer gets 70% – this would make sense since it incentivizes the great unwashed to provide Steam Front Ends). This means there are now multiple ways to get Steam games and multiple filters out there in the world for gamers to find what is good and what is not.

Now this is very smart, but also a heavy bet – because if no one does pick up on this, Steam is now no better than the Appstore of Google Play to find stuff relevant to your interests, and at that point, why would anyone bother with a specific SteamBox under their TV?

After all, Google Play wanted to do the same thing with Google TV – they had the devices and persuaded a few TV manufacturers to put their hardware (which again, was peanuts) into the TV’s, and it has NOT taken off. Why? In a word, content.

All of these front end stores require two things. 1) a frictionless, easy method to both find and buy games and 2) the content to actually buy, preferably exclusive content. Valve needs both, and while they have a massively good start with Steam as it is now, they need to evolve it. With 1), they are hoping you, the web savvy gamer, will help and with 2), well, the only solution there is to throw open the doors and cross your fingers.

I think that, from a personal perspective, this is an enormously ballsy bet. I can completely see why they are doing it and frankly, they are turning a potential platform killing event into an opportunity to, if not own the living room, be a large competitor in there.

I gotta say I applaud this. I think there are several things that Valve needs to be doing to make this more of a success – for example, they need a couple of Steam Evangelists, to get out there to websites like Evil Avatar, Kotaku and so on, and persuade them to build some of these front ends – they are the perfect place that already have gamer credence, and they also have the design and web skills to actually pull it off. Valve is notoriously insular, so it’s questionable they’ll actually do it, but if they did, it would help stack the deck on this gamble.

They also need some Linux Evangelists on staff. All of this is precedented on the fact that they can persuade developers to write their games for Linux, since that’s what the SteamBox is going to be running, and that is not going to be easy, as Microsoft has found by trying to push developers into XNA (And giving up) for mobile. The whole point of the success of Steam is that it is windows friendly, and windows has the best developer tools (Sorry Apple and Sony, they do. This is a fact.) and windows has the biggest market penetration. Switching platforms is a massively risky thing to do, and despite assurances that “this will be easy, it’ll be like writing C++ code for IOS”, not a lot of developers are going to go for this without some help and coaxing from Valve. They are going to need a Dev Rel team there, and I’m not sure that a company like Valve is built along those lines.

The only thing I think Valve is doing actively wrong is by not spinning off Steam into it’s own company, or siloing it within Valve itself. Currently all developers at Valve can see all sales figures within Steam, and this is a clear conflict of interest. Activision and other distributors do not do this and Valve shouldn’t either – policy of internal transparency or not.

Still, the next couple of years are going to be majorly exciting to see what happens in this space, and if Valves bet pays off.

Posted in Uncategorized | 2 Comments

Virtual Currencies – a primer

Holding real money value in games is either extremely simple, some what complex, or You Are Asking For Trouble. One of the three.

The extremely simple paradigm is allow people to buy a virtual currency, and that virtual currency does not a) shift in value and b) can ONLY be used to purchase in game items. B) is obvious – you can buy skins in the hunting game and with those skins, you can buy ammo and binocs and better weapons and so on.
In terms of a), that’s slightly more complex, because if you shift the cost of an item for a period of time, you are actually changing the value of the currency they bought. So if on day 1 Binocs cost 10 skins, then you decide to run a discount on day 2 for the Binocs to cost 5 skins, then what you’ve actually done is change the value of what the skins currency will buy you.
Now it doesn’t strictly speaking matter, because the transaction is done, and even tracking this devaluation can get very very complicated if you have 20 things that you can buy with this currency and you run specials on 3 of them – tracking exactly how much you’ve devalued the currency can get tricky. It can get tricky anyway if you have several currency value packs to buy – e.g. $1 gets you 10 skins, $2 gets you 25 and $5 gets you 150. At that point the real money to virtual currency relationship is not constant anyway.

And, like I said, it doesn’t really matter anyway – there’s no use to which you need or can put that information anyway.

Then there’s the slightly more complex version of this – and that’s where you share currency across different games. This kind of currency needs to stored at a server level. The idea being the currency is stored at the account level, and you can use it across different games. Gree has this functionality and DeNA is working towards it.

The problem with this approach is it means your currency value needs to be maintained and balanced in scale across all games. For example, if game A uses 10 skins to buy Binocs but game B uses 7000 to buy ammo, then your scale is completely out of wack.

Then it gets more complicated still if you can earn currency in game or by 3rd party portal. Earning currency in game is pretty obvious – I shoot 5 animals, I get 5 skins. You can also earn currency by 3rd party portals. This works basically by you going into an ad portal like Tapjoy, and assigning value to users clicking on ads in your game – so if they click the ad in game, they are awarded X skins for doing so. Obviously you are just awarding those skins on your end for nothing, but remember the ad portal is paying you real money for the click through. Most ad portals that offer this feature allow you to set the currency value at their end, and they offer an API that communicates with your game to tell you that a user has done something that generates in game currency, and you can add to it.
NOTE – Apple does NOT like this functionality and will ban you if you implement it on a game on Itunes. We have to comment out this ability on our IOS games.

There’s also the relatively complex issue of deferred cost liability that can arrive here. Most of the time video games such as the like we make will never have this problem, but the larger you are, and the larger you fan base, the more this actually becomes something you have to track.
So what is “deferred cost liability”? Well, its like this. If I buy virtual currency, I, the gamer, pay you, the developer $1 for 10 skins. Now that transaction is done. You bank the money and we are done. But, those 10 skins are now out there, and have not been redeemed against anything. What if it costs you, the developer, when I do redeem them? That average cost of that redemption is “deferred cost liability” – the act of me buying those skins created this, whether or not it’s ever incurred.

To put it another way, think or Virtual Currency as Olive Garden Gift cards. When I buy the card, I give Olive Garden $30 for the gift card. They bank the money, thank you very much. But when I _use_ that gift card, it’s going to cost Olive Garden the cost of my meal I use it for. Now, the cost of that meal isn’t costing Olive Garden $30 – more like $15. $30 is what they’d charge me, not what it actually costs to put it on my plate. So the deferred liability for that gift card is $15. When I bought that card from Olive Garden, they made $30, but they also generated a $15 cost that may well happen down the line. But what makes it more complex still is that a percentage of gift cards will NEVER be redeemed. Lets say only 80% of gift cards bought are used. That means the deferred liability cost per gift card is now 80% of $15.
However, you cannot _really_ know either what meal someone is going to buy with the gift card – to know that the deferred cost _is_ actually $15, nor can you know what the percentage of redemption is going to be. Both are estimates and as such, prone to being wrong.

In video game terms, you have to look at what it costs a video game developer if someone uses some of their virtual currency. If they simply buying Binoculars, well, that’s zero cost to you. Indeed, most IAP is going to be that way. But if they are now downloading DLC data from your server, well, now you have the cost of them using your server – downloads are not free. So how do you calculate that? If you have a large enough user base, it starts to get easier (or at least more predictable), but for smaller games, well, it’s harder. Not that most games will even care – you pay for the dlc server in a bulk amount, it comes out of the games profits, you move on. But for larger corporations, deferred costs can be large and scary and you generally want them to be predicted to be as low as possible – there are tax implications from having a large amount of unsecured debt coming down the line that you aren’t aware of.

You can also usually do things like either gift currency or items bought with the currency to other players. This generally doesn’t affect currency value and is just a nice feature – but the next feature you can offer does affect value.

Allowing the user to sell items. The moment you add this feature, you’ve now created an economy that you don’t 100% control. Up till now, you, the developer, have complete control over what currency is actually worth. It costs this amount and buys that item for that amount. Done and dusted.

But the moment you allow users to sell items on their own auction block, the actual value of the item (and hence the value of the currency) is no longer in your control. The Item Costs X equation now goes out the window, because users can set their own prices (Oh, you can force them to use the same prices as your store does, but at that point, unless the item is extremely rare, all you are really doing is shuffling around who gets the money – you aren’t affecting value or giving players a _reason_ to sell anything).

At that point, currency and item speculation can start happening, and the value of your currency changes. And the only way you, as a developer, can affect this is by affecting how much currency goes into the market. But how do you do that, if people can just buy the currency in the first place? You have no bank interest rates to vary, since no one is lending anything in your game. The only way you can really do it is limiting the amount of currency people can buy and changing the ratios of what people can earn in world.

Then you’ve got the cross platform issue that you might or might not want to do – I buy virtual currency on Android, can I use that on IOS? Strictly speaking, there is no one to one correspondence on currency to dollar value, so it’s not like Apple can track exactly what 30% they missed out on by you not using their IAP system. However, while it is technically permissable right now – there are some restrictions on it, but it’s not been very clear policy wise what these restrictions are (I hear different things from different people about what their experiences have been when they ask Apple.), it’s not a wise bet to make. If you make this kind of system and then Apple suddenly decides that no, you shouldn’t be allowed to do that, what do you do? How would you split the currency value that you have as a player across two platforms? The only way to do this is to track what is bought on which platform from the start, so if you need to suddenly split currency availability based on platform – Gree does this.
It’s a very unclear situation and one fraught with Apple suddenly getting The Hump.

So it can get quite messy in terms of managing your Economy. Second Life had two full time guys doing this, with a myriad of tools at their disposal to determine what was going on in world and what they might be able to do about it.

Honestly though, at this point, unless you are farmville, it’s extremely unlikely that anyone is going to get to this point of economy manipulation.

But then we get to the really scary part. When you can take virtual currency out and convert that to real money.

This is where Second Life is above what almost anyone else does in virtual worlds and virtual currencies. At this point, you are actually a complete economy, and you have to start dealing with all the implications that come with that. For example, you have to deal with The Mob, who will use your system as a money laundering operation. This happened to Second Life, and they have a whole suite of tools to track this stuff, as well as ongoing liaisons with the FBI and the treasury. They ended up limiting the amount of money you can take out of Second Life to the same rules as an ATM – $300 a day max, and even then only if you’ve provided proved credentials.

At this point you are basically operating as a bank – carrying a balance that is transmutable into real world funds – (much like paypal does) and strictly speaking you should be under the banking authorities. But, like Paypal, banks aren’t enforcing this and neither are the feds. Another hole in the banking laws.

If you allow multiple currencies to buy into your system, you also have to deal with currency speculators. I buy virtual currency with Canadian dollars, then sell in Francs, because the exchange rate works for me. Remember, your cost to currency value has to be set externally, and you have to decide which is your anchor currency – ie which one you set the absolute Virtual Currency Value to Real Currency (e.g. 10 skins = $1) and then all the rest will fluctuate based on their currency-to-the-dollar ratio, which changes daily (or hourly in some cases).

As if that’s not enough, then you have to deal with taxation. When and where are your users taxed? Are they taxed using Virtual Currency when they buy something? In which case, how do you work out what that virtual currency is actually worth at that precise moment? And worse still, which real currency are they taxed in? If I’m in France, I do business on a server in the US, who’s tax juridstiction am I in? Both countries will argue “theirs” because both wants the revenue. What do you do then?
Do you tax someone purely on when they take money out of the virtual world? Again, am I being taxed in the country who owns the currency I take out in? If I am in Spain, and I work in Pesos, but I take the money out in Euros, who is taxing me, and where? And if the taxing is taking place outside of MY country, how is that other country going to enforce it? Or even have the mechanism to do it?

You can see how messy that gets. I built an international billing system for Second Life and ran into all these issues – the Fed in the US desperately wants to tax virtual worlds, but can’t figure out how to do it, when effectively the Linden $ is a global currency. None of the countries can, so when I left, nothing was being done. Every 2 or 3 months the Feds would come to Linden Lab with a “new Plan” for taxation, and we’d pick holes in it, send it back and they’d go back to the drawing board.

Sorry – big assed post there. For most game developers, 90% of this is not something to worry about, and if it does become important (like deferred cost liability tracking), you’ll be large enough to pay someone to do it.

Posted in Game Development, MicroTransactions | Leave a comment