computer games games industry

“Games are mainstream. Drown, or learn to swim.”

We’ve won; get over it … says Dr. Bartle (although if you’re reading this blog because of any interest in MMO’s and don’t know who RB is already, then … you have some reading to do).

alternate reality games computer games games design

Review of The (Former) General (part of an ARG)


Another story – The (Former) General – has been released as part of Penguin/STS’s current ARG, We Tell Stories.

This story, and the website it comes from, is all part of an ARG, from two of the key people (Dan and Adrian Hon) behind Perplex City (PXC). So … expect misinformation, deliberate errors, and stenography. I’m not playing the game (sadly; just too busy with other things at the moment), so I’m interpretting this completely cold.

computer games massively multiplayer mmog links networking programming system architecture

New page – MMOG Development Links

With some WordPress-Fu, I’ve added a page that’s a category and auto-includes links with custom meta-information.

Or, in other words, there’s now a page where I can effortlessly post all my various bookmarked links to do with MMO development – and add my own commentary to each link – which you can’t ordinarily do. Which is why it’s taken me some time to get around to it (previous efforts to do this without customizing WordPress, or using plugins only, failed).

The (practically empty) page in all it’s (non-)glory can be found here:

Over the coming weeks, I’ll be posting much more stuff to it. I hope.

network programming

How to hack an MMO (Raph Koster)

“The first thing to realize is that encryption of the data stream isn’t going to stop anyone serious.” – this page lists half a dozen conceptual ways that people will try to hack your MMO. It’s nothing like as exhaustive as the title suggests, but given it’s on Raph’s blog, the comments section is likely to pile up with many different additional concepts and information from world + dog.

agile devdiary programming

Writing games in Korean – part 3

Computer grammars, Unicode in Eclipse, and problems with Java’s XML parsers…


[OT] Places to eat in Brighton

It happens quite often that I get a “surprise” dinner: friends turn up in Brighton and want to try out the great local food I … bore on about too often … or there’s an impromptu work event, or just people visiting the office want to know where’s good to go. At the last minute. When I’m walking out of the office, and I get a mental block and can’t think of anywhere.

So … from now on, I’ll be prepared. I’m writing it down here so I can find it later. By the magic of google, I’m going to explicitly mention “adams places to eat in brighton” (should be able to google that later; sod bookmarks and delicious, I’ve got an indexed blog).

That’s Brighton, England, in case anyone is wondering. This list might even be *useful* for some people come the Develop Conference this summer…

bitching web 2.0

Antiquated RSS feeds (Scott Hartsman, I’m looking at you)

I found Scott’s blog the other week, and liked it.

So, I added it to my feed reader.

Now, I’m removing it, because the way he’s got his RSS setup – – is unreadable (literally – only the first 100 words or so of each post is included, the rest is all missing).

Incidentally, this is why – after many years of using the site as a primary news source – I no longer read (feed) : a site that resorts to hiding its information and news behind extra links, sacrificing usability to gain advertising money, is not one I have time for. There are plenty of people who’ll provide the info I want in an easy manner, without this jumping through hoops.

Sigh. I have a feed reader to read feeds, not to get a “free sample of your brilliance” that I then have to go to a web browser to be allowed to actually read in full…


Funorb first impressions

(the new casual games portal from Jagex, the people behind Runescape)

– good game/website integration, very smooth
– very basic game design – most games seem to ahve never been playtested, or designed by very novice game-designers. Most simply aren’t fun, and need just a few basic tweaks.
– control systems mostly awful, bouncing and snapping and with unnecessary lag.
– No ability to see your achievements! Achievements rock, but they don’t seem to understand the main point of them – showing them off.
– artwork and sound are extremely polished.

– a very highly-polished (graphics, sound) attempt to clone Pogo, but without fully understanding how and why it works so well, and ultimately coming tragically short. Go play Kongregate instead – its much more of a mixed bag, but the overall experience is much, much more satisfying.

(Notes from several weeks ago, accidentally clicked save instead of publish at the time)

bitching maintenance

WordPress 2.5 can’t login; blog broken; debian sucks

I just tried to upgrade WordPress to 2.5, and the whole blog broke; when I got it half fixed, I couldn’t login as admin any more and instead got the following error – and here’s how to fix it:


Why did people start calling ‘rewriting things better’ refactoring?

(re-posting from private forum thread)

My response to this question was a bit of a gross generalization, and made several assumptions about the questioner; I hope I didn’t misinterpret what they were getting at. I *think* I got it right:

Because it’s not “rewriting things better”.

It’s “changing the implementation of things without changing the observable effects of the overall system, even if the system is BROKEN at the moment”.

By cutting out a much smaller problem than “rewriting things better”, you get a more powerful suite of techniques: there are complete processes which just don’t work if you allow yourself to spend time improving the code at the points where, instead, you are meant to merely “refactor”.

Damn useful technique – although I found it hard at first to get over the idea of leaving broken features broken: I felt guilty doing it. But it works, and eventually the guilt goes away, as you see that it really is the right thing to do (…in the appropriate situations, of course, and as part of the right process(es)…)

In the forum thread, I didn’t go into the details – you can google a lot of uses for refactoring.

There’s one great example I ALMOST wrote about last year, but didn’t get around to (I didn’t realise until now that I’d never posted it…Doh!): using refactoring with unit testing to convert an old code base to a new code base, but doing it with many many passes.

Brief summary of the parts that would be relevant here:

  • Traditionally, with a horrendous mess of a codebase that needs converting, you’d either suck it down and spend many months (maybe many man-years) “converting” it – or else give up and rewrite it from scratch, one part at a time
  • With Refactoring, you can rewrite it from scratch INSIDE the existing codebase, LESS than one part at a time, so that you get to use all the new code you’re creating immediately (instead of waiting for the complete system to be rebuilt-from-scratch)
  • This works because Refactoring does NOT “fix” the code, it merely moves it around a bit, perhaps changes some minor subparts of it, often parts that have no effect on the overall system
  • “no effect” means NO effect: no performance improvement, no change to the end-users
  • …which allows you to use a particular Refactoring task in your schedule to merely “make the code slightly more amenable to be improved in the future; make it a bit less messy”

Yes, this shows no overall improvement in the system after each Refactoring pass – but you make those passes so EASY and so QUICK to do that one individual programmer can do literally HUNDREDS of them in a few weeks.

Traditionally, even doing just one “rewrite this small part of the system better” task would take months to even get started, because each time you think you’ve “fixed” it, you uncover another broken part, somewhere else in the system, somewhere that SHOULD be unrelated but sadly isn’t, that prevents your fix from working.

With refactoring you just shrug, smile, ignore it, and get on with making small incremental improvements every day, and go home happy in the knowledge you’ve at least achieved SOMETHING today, even if no-one else will see the result of it until you’ve achieved many more days of little somethings. But then they’ll be amazed, because in the limit – as the complexity of the codebase / number of refactorings tends towards large numbers – the sum total of small steps of refactoring quickly becomes net improvements to the code base that were literally IMPOSSIBLE with traditional software engineering: they would have taken so many man years, you’d never have finished them in the liftetime of the product you’re working on.

So. Just one example there, of how refactoring is a useful – and unique – tool, quite separate from “rewriting things better”.

computer games games design java tutorials programming

Writing games in Korean – part 2

Using a custom font renderer that lets me position text exactly where I want it, I put together a simple game that teaches you to count from 1 to 10 in Korean characters.

Screenshot of numbers test

First, you HAVE to manually download the Korean font I’m using (because I don’t think I can legally include it in the executable file :( )

NOTE: you MUST (windows is rubbish) do “Save to” and select C:\Windows\Fonts (this causes windows to automagically “install” the font) – I can’t remember how to install new fonts on Linux or OS-X, but it should work fine with both of those OS’s too.

Then just stick the two attached files in a directory somewhere, and double-click on the one called korean-numbercounter-all.jar

Essential library (download this)
Main file (download this to same directory as the library file, and run this file)

NB: this is mainly just a proof of concept to test my rendering code, I’ve got a couple of other simple “games” like this I’ve knocked up as tests.

bitching Web 0.1

Web 0.1 – British Airways

Travelling to Helsinki with British Airways, 24 hours before the flight I received an email telling me that “Online Checkin is now available” and providing a link to check-in online.

So, from my blackberry, I tried the link. It’s broken – it runs some buggy javascript that ends up redirecting to the britishairways homepage (probably because someone is using a 10-year-out-of-date hacky “what is your web browser” check instead of writing the page properly), and then does something I haven’t seen in years – an infinite redirect to the same page. I left the browser for about 5 minutes, and it was constantly redirecting for all that time, as fast as it could load the tiny HTML fragment, around once every 5 seconds.

Sigh. I tried again, this time from Firefox. Now things worked fine, and it picked up my flight automatically from the code embedded in the URL they’d emailed me. Great.

Only, after clicking through a series of pages – I want online checkin; yes, I want it now; yes I’m ready to checkin; yes, I’m the only passenger / have all other passengers with me – it goes to an error page saying:

This flight does not support online checkin. Please checkin when you get to the airport.

So … what was the purpose in sending me that email in the first place?

If they hadn’t bothered, then I’d never have found out that their website is broken, and I wouldn’t have wasted my time trying to do an online checkin process that they don’t allow for flights to Helsinki. Even better, I would never have found out that the email address they sent me the email from has an auto-responder saying “we never read any emails sent to this address, please use for any support queries”.

Of course, the original email doesn’t say this, and the address isn’t something obvious like “noreply@”, so I’d written them a proper complaint and given them the details of their broken site. All of which they proceeded to automatically delete.

Verdict: BA’s hamfisted attempt at using the internet has shown not only their incompetence, but also their contempt for customer service. It’s also created a desire in me for online checkin, shown me how easy it COULD be, if I were flying with an airline that supported it. All in all, they’ve gone out of their way to use the internet to persuade me to stop flying with them in the future – and I haven’t even got to the airport yet! Definitely a case of Web 0.1…