advocacy education games design programming

What programming language should aspiring game developers learn in their free time?

I was asked this recently in private mail by someone heading off to University / College. For people choosing between a Computer Science/Software Engineering course vs. a Game Design / Game Development course, I’d said:

If you love games, you’ll do both anyway; one you’ll learn in lectures, the other you’ll self-teach. Which will you find easier to self-teach (given no-one is prodding you), and which will you need the extra benefit of having a formal course/teaching/teachers? (usually: people find it easier to self-teach “designing and making my own game experiments”. Usually, people find formal Computer Science / Maths is ‘hard’, and they need the help of a formal course)

Gross generalization: Most game-developers in the indie community are programmers; most of them are programmer-centric when looking at the world. I’m a programmer, but I’ve done approx 40% of my career in project-management and studio management (and even a tiny bit of publishing) over the years.

There’s one interesting point I want to clarify a little: By “indie community” I mean “focussing on the places filled with people who actually ship games”. Most game designers who want to make their own stuff have to learn programming, even if they’re 100% non-programmers, since it’s the only way to get “your” vision launched. Even the ones that started-off as pure artists often end up being highly technical (whether they admit that to themselves or not).

So … this is not a popular view, but I think it’s more accurate than most: by the time you finish a 3-4 year course starting “today” … C++ won’t be the game-dev language people care about. Already, for entry-level jobs most studios are more interested in “how good are you at Unity? How good’s your C#?”. That trend will only continue/increase.

games design GamesThatTeach

GamesThatTeach: Papers, Please

An interesting review here of “Papers, Please”. I haven’t played this one yet, but I’ve been following progress via the promo screenshots they released earlier, and this (p)review sounds great:

“At a certain point, the transit papers will get so complex that you will, inevitably, start making a lot of mistakes. This can become a serious problem as every incorrectly reviewed passport will deduct more and more cash from your pay at the end of the day. With your family’s lives on the line and the job getting tougher and tougher, the game asks you — like actually asks you, through gameplay — what are you willing to do to get the money you need? Will you take a bribe from a shady character? Will you start throwing more people in jail so you can get a cut of the prison guard’s bonus? Will you do knowingly dishonest or immoral things just so you can get that extra ten bucks that might allow your family to eat tonight? There are no right or wrong answers.”

7dfps games design Unity3D Unity3D-tips

JumpTest v0.2 (different jumping algorithms in Unity)

New version up on the webplayer link:

Screen Shot 2013-08-14 at 18.46.23

Test jumps

Proving quite fun just playing around with it and testing different jumps:

Screen Shot 2013-08-14 at 18.56.00

Screen Shot 2013-08-14 at 18.54.41

User-aimed jumping

Two jumps in a row using the same algorithm, but it aims your jump based on where you’re looking when you hit the spacebar. In this case, second jump I flicked the mouse up at last moment before jumping, giving a higher/longer arc:

Screen Shot 2013-08-14 at 18.53.35

7dfps games design

The perfect jump: testing techniques for Jumping in Unity3D

In a physics-based engine, there’s many ways to make a character “jump”. For my 7-day FPS entry, I’m trying to work out the perfect jump for my gameplay. Easier said than done. I’m struggling…

Before I go looking for feedback and suggestions, I thought it would help to make a demo showing the things I’ve been trying-out.

Unity webplayer link to try the examples below

Instructions: wait till you land on skyscraper, then hit a number key to select a jump type, and get jumping (spacebar).

Note: if you fall, no problem, it’ll auto-respawn you after a couple of seconds of falling

7dfps computer games games design

7DFPS 2013: Day 2 demo (first day!)

I skipped the first day (long week, needed a break), but here’s a crappy playable demo after my first day:

Screen Shot 2013-08-12 at 00.28.30

Download links:

7dfps games design

Useful Links for the 2013 7dfps

Just gathering links here as I find them or remember them … useful things on FPS design, FPS coding, FPS art, etc.

(I’ve never written an FPS before, so … everything/anything in the way of research is useful!)



Level design

Assets / Art

  • – Free, high-quality fonts that (unlike most free fonts sites) aren’t “mostly stolen from somewhere else”, nor “not free, but advertised as free, so they can charge you later”
  • – Marcel’s excellent resource site for textures so you can DIY your models and texturing…

FPS Controller design

Specific to my game:

Assets for city-building in Unity

Unity bugfixes

Things I had to do to fix Unity long-standing bugs (that Unity has declared they’ll never fix). Most of these copy/pasted from my “Fix Unity Bugs” folders in other Unity projects ;)…

  • Customize GameObject to add: Find a specific Component on “the nearest ancestor that has one”
  • Customize GameObject to add: When creating a game object, always place it at 0,0,0, instead of “in the middle of nowhere, randomly”
  • Fix fonts so that they DO NOT render through walls (Unity makes everything in your scene transparent-to-text)
  • Auto-rescale all textures on scaled objects (Unity’s editor won’t allow you to scale a single object without scaling its fixed-size, tiling texture (and without breaking all your other objects) – but Unity source code strangely does allow it)
7dfps games design

Make an FPS in 7 Days – Game idea: “Metamorphosis”

Next week is the 7DFPS challenge – design, code, ship a game in 7 Days, on the theme of “first person shooter”. I want to do something unique and interesting. Here’s one of my ideas.

(if you like this idea, please re-tweet this to vote for it – I’ll decide which to do based on which one(s) people like most) Other ideas: “Runners”, “Follow”)

Title: “Metamorphosis”

Premise: what makes an FPS unique/special among games is the visceral, immersive nature.

But our FPS’s today all project the same, boring, 1:1 flat rectangle as our window on the world.

What if we had eyes on the side of our head? (a la most herbivores – you can see to both sides, and halfway behind you – but have a blindspot dead-ahead. This is why some birds flick their heads left and right all the time – they physically can’t look directly ahead!)

What if you were a Beholder – with 360 simultaneous vision. Looking ahead, behind, up and down all at once?

What does the world look like when your camera is 2 inches off the ground? (a rat’s-eye-view) … or upside-down, attached to the ceiling? (a spider’s…)

Core gameplay

In Metamorphosis, you start in a lab with one way out: a small mouse-hole in the skirting-board. A theft gone wrong, a wizard about to catch you “in flagrante”. You have only one chance: a giant bubbling flask labelled “Rat”. You gobble the potion, dive through the hole, and escape.

…but now you’re a rat, loose in a dungeon full of nasties. Absolutely everything out there is bigger, meaner, and (often) uglier than you. And sadly: loot won’t be much good, since you’re too small to wear armour, and have no hands to hold a sword.

Special effects

It’s a dungeon-hack with a difference: you’re looking for magic potions that metamorphose you into new and useful creatures. When you metamorphose, everything changes:

  • the lighting (some creatures see by light, bats echo-locate and see only monochrome, other creates have infra-vision/heat-sensitive vision)
  • the viewpoint (high, low, upside-down)
  • the number of simultaneous “cameras” (one per eyeball…)
  • the “lens shape” of each eyeball (normal, fisheye, warped, 360-degrees…)
  • your strength/speed/vulnerability (heavy/light, low hitpoints / high hitpoints, regeneration…)
  • movement abilities (walk, jump (rats jump so high they almost fly…), fly, wall-walk, etc)


An old friend of mine wrote a real-time 360-degree FPS projection 15 years ago, and kindly dug out his original source code + demo app for me. With his permission, I’ll post it here ASAP, but suffice it to say: this stuff is doable, it may sound a bit crazy, but I’ve experimented with it (a little) before.

Upgrades and weapons

…entirely dictated by the creature you’re currently polymorphed into.


I like this idea because:

  • …polymorphing is fun.
  • …there’s historically been very little experimentation with FPS cameras – the best you can hope for is some post-processing screen effets (depth of field, over-saturation, blur, desaturation)
7dfps games design

Make an FPS in 7 Days – Game idea: “Runners”

Next week is the 7DFPS challenge – design, code, ship a game in 7 Days, on the theme of “first person shooter”. I want to do something unique and interesting. Here’s one of my ideas.

(if you like this idea, please re-tweet this to vote for it – I’ll decide which to do based on which one(s) people like most) Other ideas: “Follow”, “Metamorphosis”)

Title: “Runners”

Premise: what makes an FPS unique/special among games is the visceral, immersive nature. How many Oculus Rift games are not first-person?

One thing FPS’s should be particularly good at is wish-fulfillment. Well, something I’ve “wished” I could do ever since seeing the opening sequence of The Matrix … is superhuman jumps from rooftop to rooftop. (YouTube: the ‘jump’ program and YouTube: the opening sequence)

(I especially like the second clip – this is the point at which we first get proof that the film can’t quite be real; it’s the first leap down the rabbit-hole…)

Core gameplay

Runners is simply an excuse to do desperate, death-defying, running jumps from rooftop to rooftop, while being shot at (and shooting back).

That’s it!

Challenges to the player

Moment to moment during the game, the player has the following decisions:

  1. Big jumps require big runups; you get faster the longer you run (Super Mario Bros stylee). Better plan your run-up, and don’t chicken-out and slowdown at the last minute!
  2. It’s easy to stand-still and snipe: so we make you invulnerable while in mid-air, and create lots of obstacles on the rooftops, that prevent “easy” shots from a distance
  3. You can’t jump forever (remember the bad old days of deathmatch quake bunnyhopping? Ugh). You have a fatigue meter that forces you to periodically stop and hide while you get your breath back
  4. “Guns. Lots of guns” – long distance, wide-open spaces, enclosed target areas? This is a perfect excuse for overblow weapons of insane destruction. Remember Syndicate’s supremely over-the-top Gauss Gun? Oh yeah!

Decisions, decisions

Three conflicting tensions (no upgrades in this one! Just choice of weapons):

  1. Movement: speed, jump-distance, acceleration (run-ups) … heavy weapons = fail
  2. Accuracy: sniping and head-shots requires keeping still, keeping fatigue at a minimum (no jumping for a while!)
  3. Positioning: is it better to circle round behind an enemy and catch them unawares (lots of jumping, weak weapons) … or go straight at them, guns blazing, and try to scare them into running while tired (they fall to their death)?


I like this idea because:

  • …who doesn’t want to play in The Matrix?
  • …”Canabalt … with guns”
  • …most FPS’s give you infinite mass and infinite acceleration … this one makes things a lot more realistic and interesting
  • …level-design will be easy! (procedurally generating skyscraper-roofs = WIN)
7dfps games design GamesThatTeach

Make an FPS in 7 Days – Game idea: “Follow”

Next week is the 7DFPS challenge – design, code, ship a game in 7 Days, on the theme of “first person shooter”. I want to do something unique and interesting. Here’s one of my ideas.

(if you like this idea, please re-tweet this to vote for it – I’ll decide which to do based on which one(s) people like most) Other ideas: “Runners”, “Metamorphosis”)

Title: “Follow”

Premise: what makes an FPS unique/special among games is the visceral, immersive nature. Almost every *other* genre of game gives you 360-degree vision. This was originally to compensate for the way “a computer” fails to use most of your human “peripheral” senses (depth, perpheral vision, positional sound, etc). The most obvious difference with FPS’s: you can’t see what’s behind you.

In most FPS’s, you only have to worry about your own skin. You spin around frequently to check no-one is sneaking up on you. You strafe round corners so that a head-on enemy doesn’t get a chance to blindside you as you slowly rotate around the corner. Stealth games let you “lean” to make up for the danger of corners.

Core gameplay

Follow is different: you are invulnerable, and you’re being followed by creatures you’re trying to rescue / lead to safety. Because they’re always behind you, you cannot see when they’re being attacked – you can gun down all opposition, then turn round to find out everyone’s been eaten behind your back.

But if you walk backwards everywhere, you’re bound to fall off a cliff, or run into an enemy and only notice it when your followers go down in a hail of fire.

Challenges to the player

Moment to moment during the game, the player has to compromise between the following tensions:

  1. Avoid static obstacles/dangers (look where you run) … vs … prevent followers from wandering off (look behind you, at followers)
  2. Takedown enemies (charge forwards, run around obstacles) … vs … lead carefully (avoid leading your followers into traps / fields of fire)
  3. Hands-off (followers wander and get into danger) … vs … Hands-on (use non-lethal weapons to herd and cluster your followers, so you can keep them alive more easily)
  4. Get to level-end / safety quickly (lose lots of followers) … vs … slow, stealthy “no man left behind” (slower and painstaking but higher success rate)


Three interwoven upgrade paths:

  1. Player: might/damage/speed
  2. Relationship with followers: trust/obedience
  3. Followers: speed/intelligence/resilience

At end of each level, you get cash in a virtual currency based on how many followers you rescued, how quickly – and how much they like you.

(if you got them to the end by bullying … they won’t like you so much as if you gently nudged throughout)

Weapon availability

Potentially: various unique weapons only “unlocked” when you achieve difficult non-shooting things, e.g.:

  1. Complete a level with 100% survival of followers
  2. Keep followers at 90% or above happinness for 5 levels in a row
  3. Complete a level in under 50% of the “par” time

Ideally, those weapons would be complementary to the achievement. e.g. for the “complete a level fast” award, you’d get something that made it easier to complete levels stealthily (you’ve already mastered “moving fast”, so this gives you something valuable).

…also: if you don’t like playing fast, this gives you a high cost/reward incentive to do so: you want to play stealthily, you want the uber-weapon for stealth … so you need to take a break from stealth-play to go earn it.


I like this idea because:

  • …it’s an FPS about protecting people, rather than slaughtering them
  • …it emphasizes the vulnerability of “people other than myself”
  • …it demonstrates that making yourself into a super-soldier may be ultimately useless and unrewarding
  • …it makes the purely-tactical parts of an FPS a lot more strategic, as core gameplay – rather than relying upon “map design” and/or “multiplayer team tactics” to provide all the strategy
games design iphone programming

Preview of a new game: “Peace by other means” – Screenshots1

I’ve just posted some screenshots + notes for Reddit’s Screenshot Saturday, for the iPad game I’ve been working on for almost 2 years now.


Doesn’t look like much given how long it’s been in development :(, but I’m hoping it’ll speed up from here!

[homepage for the game]

Along the way, I’ve:

  • built the game
  • taught myself advanced Quartz / CoreAnimation
  • wrote a detailed playable game with AI
  • discovered the hard way that Apple doesn’t use hardware-acceleration properly on iPhone/iPad
  • threw away the 2D renderer, re-designed the game around OpenGL + 3D
  • re-wrote everything in 3D with OpenGL 1.x
  • taught myself OpenGLES 2.0
  • re-wrote everything with shaders
computer games games design MMOG development network programming networking programming system architecture web 2.0

MMO scalability is finally irrelevant for Indie MMOs

Here’s a great post-mortem on Growtopia (launched 2012, developed by a team of two)

It’s slightly buried in there, but I spotted this:

entity systems games design programming

Designing Bomberman with an Entity System: Which Components?

Today I found a new article on implementing a Bomberman clone using an Entity System (in C#) – but I feel it doesn’t quite work.

It’s a well-written article, with some great illustrations. But the authors “Components” struck me as over-complicated and too behaviour-focussed. If you’re designing a game based on an ES, this isn’t a great way to do it – it feels too much towards old-style OOP gameobjects.

This is an opportunity to talk about good and bad directions in Component design. I really like the author’s idea of using Bomberman as a reference – it’s simple, it’s a well-known game, but it’s got a lot of depth. Read the original article to refresh your memory on Bomberman and how it works. Then come back here, and we’ll do a worked example on choosing components for a game. I’ll completely ignore the programming issues, and only look at the design issues.

computer games games design programming Unity3D

Creating real-time Mirrors in Unity Free (attempt 2)

OK, a completely different approach this time (based on the “new technique for Render to Texture” that I mentioned last time). And it works a lot better – lighting, shaders, etc is all there for free (but something is wrong with the side-to-side)

games design

Skyrim level-design: transcript (+ notes) from GDC 2013 talk

A well-written text+images version of their GDC 2013 talk.

TL;DR: A couple of things that jumped out at me:

  • The total dev team for Skyrim (TES 5) is 90 people (less than normal for this size game)
    • Oblivion (TES 4) had a mere 45 staff!
  • They strategically embrace modular levels as the way to produce enough content in time
    • Added together: explains the recurring Art problem in Elder Scrolls games, where after an hour or so everywhere starts to look very similar
    • …NB: while I resent that (and I know many people who won’t play the games, they hate it so much), the tradeoff is IMHO worth it: broad story-content in a huge world. So it’s a big loss, but a compromise I’ve always been willing to accept as a player
    • …in the article, they call this “art fatigue”
  • Allegedly only in Skyrim (but … I’m sure I saw this in Oblivion too), they put arbitrary-rotated wall segments inside rooms to break the sense of “rectangular” walls everywhere. They called this “Shell Based” building
  • “It’s common at the start of a project to strongly associate a particular setting with specific types of inhabitants or gameplay. You may want to only see soldiers in military bases, and zombies in crypts, for example. Resist this.”
    • …IMHO: obvious (it’s basic art-composition theory), but worth pointing out to anyone non-art background looking at game and level design
  • There was some pushback in the team against mix/matching modules from different kits: “The notion of [an artist’s] art being used in unforeseen ways could lead to bad intersections or lighting issues, for example.”
    • …Stupid of me, I’d never thought about how the team artists would react to this kind of mix/match (the only games I’ve worked on with modular art kits … were 2-3 person indie projects, so the atmosphere was very different)
    • …This also explains a *lot* of the geometry bugs in TES games (where you get stuck in angles of the wall, temporarily, or items drop in places you are blocked from reaching for no apparent reason): the combination of assets wasn’t designed-for / tested-for, so there were bajillions too many combinations to test!
    • “when you’re trying to identify somebody with the the aptitude and interest to be a great kit artist, you’re basically looking for a unicorn. They’re rare.”

    Art Fatigue

    The author initially cites this with respect to:

    “the same rock or farmhouse or tapestry used again and again. And another two dozen times after.”

    …IME, that’s not the problem at all. The problem is that every internal environment appears to have bought their walls, floor, and ceilings from the same branch of Viking Ikea ™. As demonstrated in the screenshot of “blatantly modular pipes” in the article:

    …and when talking about Oblivion, it sounds like my experience was reflected in their testing with large groups of players too:

    you’re more likely to pick up on repeated clutter first, then the repeated architecture. This is especially true in actual gameplay from a first-person perspective. To minimize needless repetition, we abolished the use of warehouse cells as they existed in Oblivion.

    To be honest, I’ve long been surprised that Bethesda stuck with “square-based grids” for so long (other games were using non-square grids decades ago). As one of the commenters points out:

    Square meshes and ‘cubic’ tile-blocks on naturalistic indoor environments (eg natural caves) can be a challenge – how about equilateral triangular meshes, or for 3d space rhombic-dodecahedrons? – Xu En

    Common AAA art/design/level-design problem: handoff

    This is rarely written about but the kind of thing that Leads, Producers, EPs and Project managers spend ages dealing with:

    “They’ll do an art pass and make the level visually appealing Once they’re at a place they’re happy with, they send it back to design for final markup and scripting. Once design has done that, the level should theoretically be done – right?

    Not usually. Level designers often inherit a litany of unforeseen problems when receiving final art for their levels. Cover along a street has been converted into poles too thin to take cover behind. A wall intended as a visual blocker is now a see-though chain-link fence. A bridge now has support beams which occlude sight lines in a major gunfight you had planned.”

    (my emphasis)

    Common level-design problem: reference sizes

    Obviously, you need to know how “tall” your characters are. But how do you translate that into a practical measurement when working on a scene?

    “One thing we’ve found very useful is to determine a uniform dimension for door frames. This has a few benefits. It allows us to transition from kit to kit without unique pieces, as well as allowing easy re-use of doors between kits. More importantly, it gives AI and animation a fixed standard to work from, which can be reinforced throughout the game.”

    A little bit of the Agile/Scrum mindset

    Some of their approach is inherently Scrum:

    “we get our kits to a “functional-but-ugly” state as soon as possible”

    “The level designer should be constantly stress testing throughout these stages. The artist should deliver pieces as soon as they are even rudimentarily functional, and the level designer should use them in non-ideal conditions. ”

    They don’t go into detail, but imply that this has caused a lot of friction in the past with individual developers who found it emotionally difficult to work in this way. I would have liked some more info on that – dealing with this kind of “mindset” issue on game teams is a major challenge.

games design GamesThatTeach programming

SVGs, silhouettes, and … dinosaurs

With my recent fixes to “auto-scaling” in SVGKit, I can now take in images, apply various effects, and lay them out in a grid:

Screen Shot 2013-04-14 at 16.04.11

  • Top row: input SVGs of arbitrary size, auto-scaled to fit
  • Middle row: applying a 2 lines of code filter to remove the colours
  • Bottom row: applying a 2 lines of code filter to convert to a solid silhouette

…next step: get this stickers-game working…

computer games games design

Round Earth? Flat Earth? Impossible to tell?

(unsubstantiated, but hilarious): “If the measurement is close enough to the surface, light rays can curve downward at a rate equal to the mean curvature of the Earth’s surface. In this case, the two effects of curvature and refraction cancel each other out and the Earth will appear flat in optical experiments.”

…”an increase in air temperature … of 0.11 degrees Celsius per metre of altitude would create an illusion of a flat canal, … [or if] higher than this … all optical observations would be consistent with a concave surface, a “bowl-shaped earth””

…”Ulysses Grant Morrow, … found that his target marker, eighteen inches above water level and five miles distant, was clearly visible he concluded that the Earth’s surface was concavely curved”

(the history of maps and globe representations of the Earth is full of wonderful things like this)

computer games games design games industry

Tomb Raider 2013 shows games as a force for good

Ashelia/HellMode’s review of Tomb Raider 2013:

“Tomb Raider triggered me, sure. But it didn’t do it needlessly. It didn’t do it tactlessly. It didn’t do it for a cheap rise. It instead captured a real emotion and a real experience millions of women will encounter in their life. Some of them won’t be as lucky as I was. Some of them won’t be as lucky as Lara Croft was, either. Some of them won’t survive. Some of them will be silenced forever.

Some of them will die and some of their attackers will live.

Tomb Raider triggered me and that’s ok. Maybe that’s even good. I think it is because it means it’s the first realistic, non-gratifying portrayal of violence against women that I’ve seen in video games. It’s the first one I’ve seen that wasn’t exploitive.”

computer games games design games industry

“We are a compromised profession” (Game Designers)

Carlo Delallana responds to the sensationalized report that “I think most game designers really just suck”:

“One of biggest problems that game designers face in their path towards mastery is respect. It’s easy to respect an artist with a demonstrable skill, no average person assumes they can do what an engineer does. But game designer? For one thing our profession faces a common misconception, that game design is coming up with ideas (as noted by Garrott’s comment on lazy designers). That all you need to do is clone, that you are no better than your competition (as noted by Mark Pincus).

We are a compromised profession, tasked at executing a formula to minimize risk. Unfortunately, executing on formula is counter to mastery of any skill. If the marching order is “status quo” instead of “challenge yourself” then how does a game designer grow?”

(NB: Gamasutra clearly did the IMHO scummy journalist thing of sensationalizing RG’s quote; and RG should have been a lot more careful – personally I believe he didn’t mean it the way it came across, but it came across … badly)

Either way, Carlo’s reply is worth reading in full

advocacy computer games Dare 2 Be Digital education games design games industry GamesThatTeach iphone programming

Teenagers learn to program, write own 3D game, in 3 weeks


Last year, Pearson ran the first ever Innov8 competition, giving tech startups a chance to make their own innovative new product/project. The grand prize was £5,000 towards building the product.

Most of the teams were adults (even: real companies), but a team of students from Blatchington Mill School won, with their idea for an iPhone/iPad app: “My Science Lab”.

Team: Quantum Games

The three students named themselves “Quantum Games”: Jon, Nick, and Oli. All three of them have been studying for their GCSE’s in parallel with this project.

They’ve been supported by Mark Leighton, Assistant Head / ICT Director at the school.

For mentoring and game-development expertise, they had me – Adam Martin – previously CTO at MindCandy and NCsoft Europe, now an iPhone/Android developer


The students chose to focus on a game that would help other students revise the “Momentum” part of GCSE Physics.

In summer/autumn 2012, they learnt the basics of game design and development. We didn’t do any formal teaching – they simply had to pick up the skills they needed as we went along. YouTube videos, and “trial and error”, were our primary techniques…

In particular, they learnt 3D-modelling and texturing (using Wings3D and Photoshop) and game-programming (using Unity3D and Javascript).

By the end of 2012, they’d written their own physics engine, some basic gameplay, and a simple simulation of an exercise/problem in Momentum.

Last month

The big thing this month has been BETT. Pearson had a large stand, and asked the students along to talk about the project. They gave an excellent presentation to an audience of approx 30 people at BETT, covering the background and some of the things that went well, that didn’t, and what they’d learnt from it.

Leading up to BETT, they worked hard to squeeze in a new build of the game, with a rethink on the interactive sections and how they hang together. Unfortunately, we hit what seemed to be a major bug in Unity’s camera-handling, and none of us could fix it in time (nor could we get an answer from Unity support in time). But the students managed to invent a workaround at the last minute which worked fine for demoing at BETT.

The game isn’t finished yet – GCSE’s and schoolwork left too little time to complete it before BETT – but we’re very close now. The students are aiming to finish it off this month and next, and I’m hoping I might even be able to take a copy to the GDC conference in March (taking place in San Francisco, GDC is the commercial games industry’s main annual conference).

In the meantime … you can sign up now on the Quantum Games website (, and we’ll email you as soon as the game is ready – or sooner, with a private beta-test!

fixing your desktop games design games publishing programming

Unity crash: “type == kMetaAssetType && pathName.find (“library/metadata”) != 0″

Unity’s QA dept needs a smack up-side the head. If you get this bug, you’re a bit screwed – the only “fix” is to go into system settings and wipe Unity’s crud.

Error message:

type == kMetaAssetType && pathName.find (“library/metadata”) != 0

Thanks, Unity, that’s very human-readable and helpful. Not.

(appears to be an Assert written by a junior programmer – or a debug-only Assert that got left in the shipping version(!))\


  1. Unity’s tech team wrote Unity 3 so that it would open projects BEFORE checking if there was a new version available
  2. Unity 4 is NOT backwards compatible; it corrupts projects so that they will NEVER load in Unity 3.x
  3. …also: Unity 3.5 will FATAL CRASH if it tries to open a Unity 4 project
  4. Unity (generally) is badly written and auto-opens the last project, even if you don’t want to, and EVEN IF ITS CORRUPT
  5. Unity (generally) DOESN’T BOTHER to offer any way of starting “safely”

Solution (OS X):

  1. Force-quit Unity (not only does it crash, but it hangs forever) – RMB on the icon, hold down alt/option, and the Force Quit option appears
  2. run Finder, go to (your user)/Library, aka “~/Library”. If you don’t know how, then do ONE OF the following (either works):
    • EITHER: Start at your username folder (it’s the parent folder of your Desktop folder, parent of your Documents folder, etc), un-break OS X (Apple ships it as broken-by-default): google for “enable see Library folder in Finder”, follow the instructions
    • OR: In Finder’s “Go” menu, select “Go to folder”, and type “~/Library”
      • Inside Library, find “Preferences” folder
      • Find *everything* that begins “com.unity3d.” and delete it (there are approx 20 files, of 2 different file types)
      • Re-start Unity, and it will open the default project
      • …And this time, Unity will offer to upgrade to Unity 4


For bonus points, the Unity 4 “upgrade” isn’t an upgrade: it’s a replacement. I expected it to download “the bits that have changed”. Nuh-uh. One gigabyte download! (try getting that in a hurry, when your project has suddenly imploded in front of you, because of the non-existent backwards-compatibility :( ).

Some idle thoughts…

I’ve seen similar behaviour before when writing very simple OS X apps. There’s some massive bugs in Apple’s code that have been around for 5+ years (and Apple shows no intention of fixing), which cause “startup actions” to happen in a semi-random order, depending on the NAME and NUMBER of recently-opened projects.

It takes very little testing to discover this. If it’s the problem with the Unity software, then Unity needs to seriously improve their testing on OS X – they should have discovered this easily.

But also … why on earth are they using the NSDocument loading system? Apple never finished writing the docs for it, they seem to have never finished implementing it (major bits of the API seem to be missing) – in general, OS X authors don’t seem to use it any more. Probably because it doesn’t work?