Categories
advocacy community computer games design entrepreneurship games industry games publishing marketing MMOG development

Reaction to CoH (City of Heroes) community, and NCsoft’s response

(background: after 8 years as one of the world’s mid-tier MMO games, City of Heroes (+ City of Villains) is being shut down. The community banded together to ask if they could take over running the world that meant so much to them; NCsoft (the publisher, and a company I used to work for) said: no)

“No means no”

NCsoft is basically saying: “Please. We love you, but … you just *don’t understand*. It’s more complex than you could possibly imagine!”

That’s not a dialogue; it reads like a “this conversation ends when I stop talking” monologue.

“Why on earth wouldn’t you say yes?”

Lots of people wondering that. Obviously, being a public company, no-one’s going to answer that in public. We can only guess. But hear’s a few (over the top) suggestions…

If the community succeeds … then THE FEAR IS: some Executive(s), somewhere, are going to look like bad (I’m not accusing; I’m just saying that in corporates I’ve worked at, this kind of *fear* is common). A lot of the work they do is guess-work. That’s fine, they’re paid to make the best decision they can, while never truly know if they made the right one.

But if a bunch of inexperienced, eager novices come along and offer to do it for free. And – the worst possible outcome – they succeed … that could make someone look really bad.

Another thing I’ve seen in corporate politics at this level is a lot of “horse-trading”. i.e. sacrificing one project (that someone else resents, or has been snubbed by) in return for that person helping out out with a problem on a separate project, that you’re trying to rescue.

Who (individually or collectively) made the decision, and what did they stand to gain or lose? (they are probably worried about / aiming for / trying to win … something bigger than this single game. c.f. my 2009 post on why NCsoft is so huge a company gains nothing from “profitable” games, they need “mega profitable” games)

“Software is software”

Ha!

Has anyone found out yet what format(s) the data is in? Imagine the most insane, unwieldy, incomprehensible, inconsistent, unusable format that bears no relationship *at all* to the game itself … and you’re probably half way there.

This game was written *8 years ago*.

Read the biographies of the people involved. Were they non-game developers … academics with decades of expertise in distributed systems and real-time transaction messaging? … or … were they a bunch of smart guys trying to catch up with the academic research in the space of months, just enough to build and ship a major new computer game? And … most importantly … to make it “fun” before they ran out of budget.

I’ve not yet found an MMO where the people who made it feel – with hindsight – they had any idea what they were doing at the start. When they started, of course, many of them thought they’d covered all the bases, and were “well prepared”. Everyone tries their best up-front (or fails completely); but everyone finds it much harder than expected.

What should we/they do?

Looking at it analytically and logically, I’d give the community a very high chance of failing dismally if they were given the game. But … the eagerness, the excitement, the sheer determination: I’d give them a small chance of succeeding despite everything. Simply because: when you see this much determination, it often wins out and overcomes the obstacles in its way.

So, I say: Go for it.

They know the game they’re trying to (re-)create. The difficulty is simple: whenever you try to re-create a game, the temptation is always there to “improve” it … and 99 times in 100, you find you slightly misunderstood what you were “improving”.

Categories
fixing your desktop programming

Fixing Firefox: Prevent it quitting and losing all your work

Are you having this problem?

“I tell Firefox to ask before quitting, but it always quits without asking”

Especially on Macs, where cmd-w (close tab) and cmd-q (close window) are immediately next to each other…

Solution

It looks as though Firefox won’t fix this. It’s been 3 years, and it’s been reported to them plenty.

In the meantime… I found one solution that *does* work:

Plugin: “Always Ask” (tested on OS X Mountain Lion, with Firefox 16 – works fine)

Background / history

I find it interesting. The developers decide to remove features – but seem to have misunderstood how/why those were important to the userbase.

Fortunately, the Firefox team are extremely open with their process. Anyone can see the reasoning and the debate that goes into each change – and can comment on it themselves with their own feedback.

So, reading the bug reports on Firefox.com, you can build up a picture. My impression – based on reading a bunch of these reports over the past few years – is that it went something like this:

  1. “The ONLY reason someone would want to “not quit” is because they lose all open tabs”
  2. “We’ve changed Firefox so that it re-opens all tabs by default, all the time”
  3. “Therefore: we can remove the feature”

That’s pretty sound reasoning. Although (and I’m not sure why?) … it seems they forgot to remove the GUI that lets users *insist* on the original behaviour, and to remove the three about:config flags that let advanced users fine-control it. Those are all still there, but they don’t work (any more).

But … by browsing the open bug reports, we find a bunch more reasons why Firefox had the original feature (just a sampling from what I read) :

  1. Accidentally closing would lose your set of opened-tabs (OK, they understood that one!)
  2. Firefox has disabled long-term disk caching for the past 4+ years – this is a basic feature of web-browsers, but to workaround bugs in their implementation, where data could get corrupted, Firefox mostly disabled it. It’s proving a long and difficult task to fix it, partly because the rest of the browser has changed so much in that time, and partly because the original implementation was poorly designed (I’ve been watching the bug thread for 3+ years now)
    • …so, when you restart Firefox, ALL your data has to be re-loaded from the web.
  3. If you’re offline when you accidentally quit: BANG! You (often) lose EVERYTHING.
  4. Even if you’re online: Firefox reloads every page. This can take a lot of bandwidth, and a minute or more to complete on broadband … on dialup, or tethered iPhone, it can take minutes or tens of minutes
  5. Some webpages WILL NOT reload after quitting, as a security precaution (for instance: internet banking). If you were typing into a form … the data there is lost, forever, with no workaround
  6. On Macs / OS X: the “close tab” shortcut (used hundreds of times per day) is adjacent to the “quit Firefox” shortcut (used rarely)
    • …OS X has a feature where you can re-assign those shortcuts. If you use this feature, Firefox IGNORES THE OPERATING SYSTEM, and continues to use cmd-q (although it will allow you to use whatever else you chose “in addition”)
    • On Windows, Linux, etc – the shortcuts are very different, so that it’s very difficult to achieve this. In many versions, it’s impossible – only OS X has a global “kill everything” shortcut for each app

…which explains why people get so angry and frustrated at the removal of this feature from the browser.

In short:

  • ONE reason to do with another Firefox behaviour (the thing that Firefox authors “fixed”)
  • MULTIPLE reasons to do with a major Firefox bug that no-one can fix
  • ONE reason to do with online security (that’s very unlikely to change! The security problem will always be there)
  • ONE reason to do with the design of OS X

I suspect that the most common of these reasons is the Mac-specific one. So it’s very likely that a bunch of Firefox developers – who don’t use Macs – wouldn’t have been ABLE to see the problem for themselves. That underlines the importance of consulting your user-base…

Categories
amusing android bitching iphone

4 reasons NOT to install iOS 6

As a developer, I’ve been using iPhone’s since they first came out. I have to test my apps on every version!

iOS 6 is the first version of iOS “post Steve Jobs”. But it’s terrible – it seems to be a 2nd-rate product rushed out by a small team of startup programmers, working from their garage.

As a developer … I’m dismayed. Consumers are famously slow to change (en masse) – but they are neither stupid nor indifferent. Their tolerance is high, but not infinite. The iOS 6 experience is going to force a lot of people away from iPhones. Looks like we’ll be doing a lot more Android development in 2013 than I was expecting …

1. It will DELETE your photos

Yes, really. You can recover them (from what I’ve seen so far: all of them) if you use backup recovery tools. But seriously: WTF?

Many google hits for this, plenty on Apple’s own support forums, with no response from Apple.

Or … it will randomly delete half your photos (happened to a phone I saw).

Or … it will REDUCE the quality of all your photos until they become tiny pixellated blobs.

AND … photos taken after you upgrade iOS 6? Forget it – they’ll be inaccessible too.

Deleting people’s photos is – commercially – unforgivable. I was amazed the first time I saw this happen.

2. It crashes. A LOT.

Until iOS 6, Apple’s OS was getting better and better with each release. I don’t *try* to crash phones, but it happens accidentally when you use the phone a lot. But iOS 6 is a total disaster.

  • iOS 2: took me 3 days to crash it
  • iOS 3: took me 3 weeks to crash it
  • iOS 4: took me 3 months to crash it
  • iOS 5: …never managed to crash it…
  • iOS 6: took me 3 seconds to crash it

    To be clear: this is through normal usage, nothing special, nothing “developer-y”.

    The iOS 6 crash was 100% reproducible, triggered by simply moving an icon on Springboard to a differnt screen, and then hitting the home button. Wow.

    3. It removes GPS and Maps from your phone

    Apple’s “Maps” app simply Does. Not. Work.

    iOS 6 REMOVES Google Maps, and there is NO WAY to get it back.

    So, now … unless you buy an additional “mapping app” (and there are none that are as good as Google Maps, unless you spend a huge amount of money), then … that GPS chip in your phone, that’s part of the cost of the phone? For most people it’s now a hunk of useless metal.

    In the last 10 years, very little in mobile phones has changed the way people live their lives quite so much as the instant availability of detailed, accurate, maps with GPS no matter where you are on the planet.

    Apple says you can “use Google or Nokia maps by going to their websites and creating an icon on your home screen to their web app.”. Wow.

    4. You cannot return to iOS 5

    iOS 5 worked. It was stable. It had a GPS! and Maps!

    …but Apple forbids you from running it if you ever install iOS 6.

    As a developer, this has been a recurring nightmare: we had to make sure no-one ever upgraded a phone – even by accident. (as a developer: you test your app on every old version of iOS that you can. Not just on a simulator, but on each physical phone)

    Now consumers get to find out quite how (unnecessarily and unfairly) painful that process is…

Categories
computer games dev-process games design iphone

Made an iPhone game in 2hrs 15mins (native code)

How slow is making iPhone apps using native code?

You have to write HTML5, right, if you want FAST app development on iPhone? Or Unity? Or cocos2d?

Right?

Or … write it in Objective-C … a beginner-friendly “native” language: 2 hrs and 15 mins to create the artwork, design the game, code it in native Objective-C, debug it, and push to iPhone devices

NB: first half shows: “Collect the fish, avoid the dynamite, grow bigger!”
Second half shows: “if you hit dynamite, you shrink; when you’re tiny, if you hit dynamite, you’re fishfood :(”

For the love of … WHY?

Because I entered a voluntary “48-hour game jam” (you have one weekend to make a game), and last time I went to the Apple shop for a repair, they dislodged my network card. It fell out, internally, and it’s not user-fixable (believe me, I tried – even specialist screwdrivers aren’t enough :( ).

So I did something else with my weekend. But a few hours before the competition deadline, I figured “what the heck; what could I do in a couple of hours?” … with some encouragement from The Mighty Git.

The code?

222 lines of code, including comments, blank lines – and code that I commented out because I replaced it with other code.

That’s all it takes for a working, playable, iPhone game.

…and the art?

You can’t see it from the video, but the art is resolution-independent – as your whale gets bigger, it re-renders, so that all the curves ALWAYS have razor-sharp edges. No effort required on my part.

I did all the artwork in Inkscape (free image editor for vector images), and saved as SVG (web-standard for vector images).

Then, courtesy of the open-source SVGKit project (renders vector images on iOS, because Apple doesn’t add support to their libaries – shame), and the following few lines of code:

	self.sivWhale = [[SVGKImageView alloc] initWithSVGKImage:[SVGKImage imageNamed:@"whale-1.svg"]];
	sivWhale.frame = CGRectMake( 0, 0, sivWhale.frame.size.width * sivWhale.scaleMultiplier.width, sivWhale.frame.size.height * sivWhale.scaleMultiplier.height );
	sivWhale.center = CGPointMake( self.view.frame.size.width/2.0f, 0.75f * self.view.frame.size.height );
	[self.view addSubview:sivWhale];

If that looks rather like using a built-in UIImage and UIImageView … it’s because it’s intended to. SVGKit adds a new type of image – SVGKImage – that’s almost the same as an Apple UIImage, except it’s better (it’s resolution independent). And the SVGKImageView does for SVGKImage what UIImageView does for UIImage…

Want the code?

Sadly, the version of SVGKit I used here has some bugs in it – it’s live at: https://github.com/adamgit/SVGKit/tree/transforms – but until it’s been tested and fixed by the SVGKit maintainers, it won’t appear on the main SVGKit project page.

So, feel free to use that link and play with it – but be warned: it’s NOT as stable as the main SVGKit. Yet.