April 9th, 2009 by adam

Wifi and internet at all is a priviledge – but Free Wifi is something that in our modern society, and the society we’re set to become, needs to be treated as a right. When I started writing this, I was looking at the benefits we have yet to see (ubiquitous free wifi); in the week I’ve been offline with jetlag, the preceding benefits we already have that would make them possible – flat rate internet – are being ripped away from us, and . Both are understandable, but … yikes.

Casual, assumed, free internet access is now ubiquitous (even if the access itself isn’t as operationally ubiquitous as services assume). I can’t even access half my music collection any more unless I’ve got a wireless high-bandwidth connection available (Spotify). The other half lives on my MP3 player (iPhone) – but is static, unmeasured, unconnected, and unshareable.

This is a problem. Right now, sitting in San Francisco, the city of a thousand broken, crashing, low-bandwidth, pay-per-minute (min charge 24 hours) wifi connections, next door to Silicon Valley, a world center of innovation that only exists because the right infrastructure here and the wrong mistakes elsewhere allowed it to form, it’s particularly on my mind. SF is a great example of what will push the next Silicon Valley to happen elsewhere. A lot of people ought to be worried by that – and doing a little more about it.

In Brighton, my current (temporary) home city, the first repeated free wifi hotspots were set up – as I understand it – effectively as an act of charitable benevolence by “a couple of guys” (looseconnection.com/Josh Russell). They weren’t even rich, or old – just some kids doing something cool, and useful. Anyone could do this. Too few actually do. I’ve heard it suggested again and again (where are the mesh networks that were supposed to be ubiquitous 4 years ago?) by people in the UK – especially in and around Cambridge, in tech the UK’s closest replica of Silicon Valley – but always with excuses about why they aren’t doing it yet, aren’t able to until someone else does something else to make it easier for them. That’s crap. Just do it. Do it this weekend; what better are you doing right now?

Will Apple single-handedly save Wifi? Maybe. It could be the biggest gift of iPhone: that it finally turns the rest of the world on to building bigger, better, and above all FREE, wifi networks. Everywhere. Ironic, considering that’s exactly what will kill the fundamental device that drives the iPhone: the “cell” phone. Does anybody else remember that before we had cell phones we had hotspot phones, back when cells weren’t good enough, and were so expensive to use? So we go full circle, but this time with an ecosystem and a tech interconnection system (API’s, protocols, layers) big enough to support the worldwide rollout of such hotspots (well, and that’s what mesh was supposed to be about, right?)

But why would this happen? It doesn’t make sense … does it?

Skype is a great example. Sadly, it’s also overloaded with additional meaning that clouds the issue – because Skype is an internet app (good) that is mostly about phone calls (bad / confusing the issue).

Skype is now available on iPhone, and it’s a great, highly polished, iPhone App. It *works* (as well as anything can on iPhone – with the current version of iPhone Apple does not allow *anyone* to have their app listen for incoming connections and auto-start, so you can only “receive” Skype calls on your iPhone if you are not using any other app and instead are currently inside the Skype App.

But … the voice part only works over Wifi. This is the concession it took for Skype to be “allowed” on iPhone (NB: Apple allegedly forced the network operators to give away free / flat rate data in return for being “allowed” to sell network-locked iPhones; if Apple had also allowed Skype-on-3G/EDGE/cell network, then they would have caused people to stop paying call charges en masse. Although this is the natural future of cell phones, and everyone knows this, the network operators would probably assassinate Steve Jobs if he tried that today).

So, Skype is – effectively – a “wifi-only” application.

20 million devices cannot be ignored

But wait … there’s more. The iPhone platform has an installed userbase of almost 40 million handsets as of first quarter 2009 (yes, that’s only 20% less than the entire global sales PS3 and 360 combined; the iphone is already one of the top games consoles in the world; Sony (Computer Entertainment) is doomed, and Nintendo’s cash days are numbered, even though they’ll make loads of cash for the next 3 years – the DSi was defunct due to iPhone *before it launched*, so after those few years, the cashflow will drop off / vanish).

But … around half of those are not iPhones, but iPod Touch’s. This is very important to understand: the two devices are compile time identical, and *almost* feature identical. They are more similar than almost any pair of cell phones in the world, even ones from the same manufacturer. And by default all iPhone developers are writing code that runs seamlessly on the iPod Touch – it doesn’t (usually) “break” on iPod Touch if it uses an unsupported iPhone-only feature … rather, that part of the app silently is ignored.

So … nearly all those iPhone developers are actually also iPod Touch developers. Many of them deliberately steer clear of using iPhone-only features. Some of them (myself included) write their apps to cleverly detect whether they’re on an iPod Touch, and work around the limitations (it’s not hard – e.g. if I can’t upload scores to the game server because I’m on a Touch that isnt in wifi range, I save it and upload it next time the phone is online. As a bonus, this makes my games work “better” on iPhone when the iPhone has to go offline, e.g. when it goes on an airplane).

NOT “iphone App”, but “Wifi App”

Back to the point… There aren’t many Wifi-only Apps out there on iPhone … yet.

But there will be. More and more of them. And this summer, when Apple brings out the 3.0 update for iPhone, making ad-hoc discovery much easier (i.e. my phone will be able to auto-detect / find your iphone when they’re in the same room), wifi-local Apps will blossom.

A simple example: real-time fast-action games.

e.g. a Racing Game, that works like this:

  1. I persuade you to download the free version
  2. We each click on the icon on our own phones
  3. The phones magically discover each other, without either of us doing anything, within a couple of seconds
  4. We start playing a high-speed racing game – e.g. Need for Speed, or Midnight Club – over the local wifi network
  5. The net code works beautifully, there’s no lag, everything updates very fast and smoothly
  6. When we finish, the free version you downloaded pops up to say “you played with your friend because he/she had the paid version. If you want to play with different friends, one of you will need to buy the paid version. Click here to buy (one click, instant download)”.

All that is possible, and relatively easy, come summer 2009. You *can* attempt to do it over a 3G network, but it’s hard. But as a wifi-only app it becomes easy. Guess what’s going to happen?

The future of local free wifi

I predicted around 30-40 million iPhone* devices sold by now, and Apple’s 37 million official figure made me look clever (although admittedly it was only a 6 months extrapolation and a 33% error margin I quoted there ;)). I predicted around 75-100 million sold by the same time 2010, and I’ve noticed a lot of other people have come up with the 100 million estimate for 2009 since the official 37 million figure came out.

So, although I think it’s optimistic to expect 100m by the end of the year, I’m confident it’s going to be close. 100m wifi enabled game consoles sitting in cafes, restaurants, bookshops, trains, buses, hotel lobbies, city squares, pubs, etc.

Oh, and don’t forget – that iPod Touch, with no “network contract” to pay for, is a perfect gift for kids. Plenty of people have lined up to tell me that kids can’t afford them; the market research that consistently shows under 18′s as the second largest demographic for iphone* ownership suggest that’s an ill-informed opinion. So there’ll be a lot of those devices sitting in the hands of bored children / used to keep them occupied while parents are doing other things. And we all know how strong a child’s “pestering power” can be.

Monetize local wifi? Screw that; who can be bothered to monetize it when it becomes as essential a driver of custom to your store as having coke/pepsi/coffee on the menu (even though you’re actually, e.g. a bookstore…). Re-think how that affects the “monetization potential” of local wifi (hint: look to the already vast field of *indirectly monetized* Freemium / F2P for inspiration)

So, I’m optimistic. And rather than focus on how “iPhone is going to destroy the cell phone / network operator hegemony, and bring around fair pricing for consumers”, I’m focussing on how it’s going to usher in the long-envisaged era of high-bandwidth, low-latency, high quality console games and apps that focus on the local area. I’m happy with that: I’ve spent almost a decade learning how to make online games for millions of players where the core experience takes place in the local group, so I feel extremely qualified to do well out of this. What about you? What will you be doing with it?

April 24th, 2008 by adam

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:

http://t-machine.org/index.php/category/mmog-dev/

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

January 22nd, 2008 by adam

I’ve made a small simple but complete java NIO server (with full source included) that is free for anyone to use for anything. At the moment, it only deals with sending and receiving strings, and isn’t optimized, but if anyone wants to improve it and send me the changes then I’ll post up an improved version here.

Download, documentation, license details, tutorial etc after the jump…

(more…)

December 22nd, 2007 by adam

Also known as: Nobody expects the Spanish Inquisition!

(because I’m now deviating from the original schedule I outlined in Part 1; what the heck, it was only a rough agenda anyway…)

Questions, questions…

First of all, there’s a bunch of good questions that have been raised in response to the first two posts:

  • what data and methods are stored in the OOP implementation of an entity?
  • where does the data “live”?
  • how do you do object initialization?
  • what does the ES bring that cannot be accomplished with an AOP framework?
  • what’s the link between entity systems and SQL/Relational Databases? (OK, so that one’s my own question from last time)
  • what, exactly, is an entity?

Let’s start with that last one first.

(more…)

November 2nd, 2007 by adam

Years ago, I found the spritesheets + source code from the author of SFE, who was offering them up if anyone wanted to improve it, make it 4 player multiplayer again (like on RISC OS) etc (or something like that).

Last Sunday afternoon I was very bored, and found just the spritesheets lying around on an old disk, so I wrote the gamecode from scratch. Didn’t quite finish it that day, but I think one more boring Sunday and I’ll have over-the-internet multiplayer and highscores server working, which would rock.

Kevglass asked for a screenshot, so…

(more…)

October 21st, 2007 by adam

Networked games use the internet, and the difficulties of making these games evolve on Internet Time, which means that the articles people wrote as recently as a year ago on how to make a networked or multiplayer game are already out of date. Most of the literature is more than 5 years old, and some as much as 10 years old – hopelessly out of date in the modern world of internet and online gaming.

Anyway, to get you thinking (I’m not providing definite answers here, but just some stuff to make you think about more carefully about how you’re doing your networking), here are some common rules that perhaps no longer apply the way they used to:

(more…)

September 27th, 2007 by adam

A few years ago, I wrote an article for Develop magazine – “10 MMOs you don’t want to do”.

Here’s 8 things you really shouldn’t do but that might seem like a good idea if you’ve never made an MMOG before.

All these are examples of things that have been done on real MMO projects, usually MMORPGs.

  1. use off-the-shelf middleware from the enterprise industry. It’s designed for completely different usage-patterns and cannot cope with MMO style usage. Equally, initially distrust anything from traditional Big Iron companies.
  2. think that Grid Computing will somehow magically solve the problems. It won’t (c.f. previous point).
  3. aim to code the server in a scripting language. You *can* run some scripts embedded in the server, but not the server itself – but even that can screw you when you’re trying to run thousands of scripts at once
  4. assume that front-end load-balancing will solve any problems. It won’t, all it does is increase the efficiency of your cluster by a small amount. And it usually won’t provide you with failover, because most game designs will end up kicking you from your server if it dies, so the failover never gets used at that level.
  5. ignore performance testing until mid-way through the project. If performance tests at 10% of the way through production say it’s slow, that means you’re in deep trouble – it does NOT mean that “we’ll come back and optimize it later”. Optimizing netcode and server code is NOT like traditional single-threaded local-only optimization: many of the things you’re dealing with (like LANs, and TCP/IP stacks) run orders of magnitude too slowly, so your optimization comes from imaginative system-architecture, not from optimizing small chunks of code at a time.
  6. ignore billing concerns in your core game design. Non-free MMOG’s are entirely about billing, which means that you have to design it in, and build it in to the tech design from an early stage. Retrospectively adding billing hooks and billing information to existing server codebases is often about as easy and effective as retrospectively making your code secure. Just don’t go there.
  7. hire an academic who specializes in networking, especially a PhD student (this gets done quite often). All this means is that they’ve obsessed with a very narrow slice of the many many problems, and generally they won’t know WTF to do about the rest of the problems. That’s no better than just promoting a general programmer to become “the new Server specialist”
  8. innovate on both technology AND game design at the same time. Either do a traditional MMO so you can re-use all the existing common wisdom for design, and get to market (or at least a stable GDD) fast, and use the slack that buys you to focus on better tech, or use the most boring tech you can think of (instance lots; do lowest-hanging-fruit in your tech design) and innovate on the gameplay

I reserve the right to come back and edit this to make it ten once I’ve had more sleep and can remember two more :)…

September 12th, 2007 by adam

…was my section in the fourth GPG book from Charles River Media. And, sadly, although I tried to put some resources up on the web, a series of unfortunate events led to that all disappearing.

But now … they’re back! (and I’ll be adding more followup stuff in the coming weeks/months)
(more…)

September 10th, 2007 by adam

UPDATE: short, complete, 42-slide version now available from the CMP website – https://www.cmpevents.com/sessions/GD/S5762i1.ppt

…but if you want the 144-slide version (!), see below. No extra content.

(more…)

September 3rd, 2007 by adam

A few years ago, entity systems (or component systems) were a hot topic. In particular, Scott Bilas gave a great GDC talk on using them in the development of Dungeon Siege. The main advantages to entity systems were:

  • No programmer required for designers to modify game logic
  • Circumvents the “impossible” problem of hard-coding all entity relationships at start of project
  • Allows for easy implementation of game-design ideas that cross-cut traditional OOP objects
  • Much faster compile/test/debug cycles
  • Much more agile way to develop code

(more…)

August 23rd, 2007 by adam

An article I wrote for Gamasutra’s Game Career Guide:

Part 1 – What to study
Part 2 – Practice and Experience

…hopefully this will be useful to some of the many people interested in network programming but not sure where to start.

Also, you might want to have a look at my post on Career Progression for Games Programmers