Category Archives: games - Page 2

MS Wheel Mouse Optical (WMO 1.1)

I’m an addict

As a first person shooter (FPS) addict, I play a fair amount shitload of games.  I racked up a god-awful number of hours in Team Fortress Classic (I would conservatively estimate over 3000, on account of the fact I played it on and off for several years), 1400+ of Battlefield 2 and now 1000+ of Left 4 Dead.  I average ~1 hour a day.  I like to tell myself it’s a small time sink and I’m not wasting my life.

In that time I’ve gone through countless mice, mouse pads and a few desks, too.  If you waste spend an inordinately large amount of time doing something, it’s worth making sure that your time-wasting is enjoyable as possible.  I recently bought a new mouse.  Here is some highly interesting* discourse for mouse enthusiasts.

This post covers choosing a mouse, setting it up and then rejoicing in shooting pixels more accurately.

Everyone else: I am warning you.  Look away now.

*may not be true

Caveat Emptor

I’ve been gleefully using MX5xx series mice for the best part of a decade.  The MX518 is a fine, spangly beast. It looks a bit like this:

An MX518, yesterday.


However, I recently stumbled across the ‘feature’ the MX518 has that’s commonly referred to as “angle snapping”, “prediction” or “correction”.  What is angle snapping?  Well, at the hardware or driver level, if your movements stay under some arbitrary threshold, the mouse input is subtly altered to keep your ‘lines’ straight.

Here’s the effect in action.  A common test is to draw some horizontal and vertical lines in MS Paint.  Notice that my MX518-created lines are eerily straight for large sections.  If you’re pixel aiming at someone’s head with a rifle, this is not helpful.


Note: This is a feature that is found in several mice, including gaming mice.  In some cases (such as the Logitech G series and the Razer Death Adder), you can disable the “feature” using the driver.  As that bloke off Art Attack used to say, “Try it yourself.”

Time for a Change

The MX518 I use at work (I have two) recently had a wheely bad fault and, having discovered the most-likely-non-issue that is angle snapping, I decided to unnecessarily obsess over it and buy something else.

Because that will make me a Quake Live Pro, of course… (oh and sometimes it’s fun to change things)


Things to be aware of

Before I delve into specifics, here’s some guidelines for purchasing a new gaming mouse.

Laser Mice Suck

Firstly, steer well clear of Laser Mice — their tracking sucks. They’re expensive. Even people who are endorsed by these brands don’t use these mice – laser has not yet caught up with the best optical has to offer, so don’t be fooled by the notion that newer is better.

DPI is overrated

All of this DPI nonsense seems to have little to do with mouse performance and tracking characteristics. All a higher DPI count seems to do is multiply your sensitivity by a factor using hardware and/or a mouse driver (much the same as turning up your sensitivity in windows and/or ingame).

Older mice with lower DPI can potentially track better than newer laser mice with 5600000000000 bajillion DPI.  In short, it’s largely a marketing gimmick.

Most of the professional quake players use 400 or 800 DPI coupled with a low sensitivity, so why would you ever need a 5600 DPI mouse?  Answers on a postcard.

Mouse Drivers Aren’t Always Needed

If your mouse is perfectly serviceable without installing drivers, try the mouse both with and without the drivers.  I’ve had mice that worked well both with and without.  I used the setpoint drivers for my MX518 solely to turn off the silly DPI switching buttons, but I’m not using any drivers with my new mouse.

Kill Windows Mouse Acceleration

Like Poison Sockets, Windows Mouse Acceleration is a hazard to your health.  It’s terrible.  Switch it off using the CPL mouse fix.  This version works with Windows 7 64 bit – I can’t guarantee anything else, but there’s another version that works with XP floating around.

Mouse acceleration means that physical distance you move the mouse isn’t the sole factor for your aiming.  If you use it, it should be a conscious decision, not something foisted upon you by windows in a ham-fisted fashion.

If you insist on using mouse acceleration, either use the driver settings for your mouse or, even better, set up acceleration using in-game settings (newish half life and quake-based engine games offer customisable acceleration settings).

Negative Acceleration

Even with today’s space-age technology and fretful nerdery, mouse tracking is not yet perfect.

Most optical gaming mice on the market today can handle extreme speeds without losing their minds (as in, it’s almost humanly impossible to totally totally baffle the sensor while furiously turning around).  However, if you play with a low sensitivity and use a large mouse mat (I’m talking at least > 20cm of mouse movement to turn 360 degrees) there is the possibility of suffering from negative acceleration.

Negative acceleration occurs when the sensor continues to recognise input, but cannot accurately track the distance covered.  The faster you move the mouse, the less distance is registered.  This manifests itself in fast movements (such as flicking the mouse to turn around) not turning you as much as if you’d performed the movement slowly.

The optimum mouse setting is one where physically moving the mouse the same distance maps to the same logical game input.  Negative acceleration erodes this consistency.

The ESRreality MouseScore offers the clearest explanation.

It should be noted that, but for all the worst offenders, this is only a concern for low sensitivity gamers, and certain mice have workarounds available (such as increasing the USB polling rate via Windows).

The Contenders

After researching the pitfalls, I did a cursory bit of reading around and discovered that roughly half of the best competitive Quake Live players use (or used) one of the following (crappy-looking) mice:

None of these mice is billed as a gaming mouse and they’re all dirt cheap.  Bizarrely, Microsoft don’t really talk up this fact or try to cash in.  They’re like a trio of unassuming murderers living next door.  Strange.

All 3 feature the same optical sensor.  The differences are just the shape and the available buttons.  The WMO is ambidextrous; the IMO is the same shape but has some extra side buttons.  The IME 3.0 is also a very similar shape, but is right-handed and has the extra buttons.  Gamers tend to favour the WMO or the IME 3.0.

The negatives of each of these are all similar.  Firstly, without altering the USB polling rate, the sensor performs worse than the likes of the Death Adder.  Secondly, the wheel has a mind of its own.  Slamming the mouse down can force a button press.  For this reason, many players unbind the wheel and mouse 3 and rely on keyboard binds.

You can find the WMO or IMO for £8 to £15 and the IME 3.0 for £20.

The rest of the mice like the Death Adder all have strong reviews, but furtively slither into the £40+ price bracket.  As a Scottish miser, £40+ is a lot of clams for a pointy thing, so I baulked at the prospect.

Anyway, I chose…

The Wheel Mouse Optical 1.1

After drinking in the details posted in various nerd forums, I plumped for the WMO 1.1 at £14.99 from Maplins (product code: D66-00074) ordered via Amazon.

As far as I can tell, there’s no problem with stock or versions. If you get one that was manufactured in the last 90 years, it ought to be a version with the sensor that’s good for gaming.

The WMO 1.1


My first port of call was to uninstall my old logitech setpoint mouse drivers.  I then plugged in the new mouse and cancelled the intellipoint driver installation process.  There’s no need to install drivers for this mouse, so it’s one less thing to worry about.

Next, I installed the CPL mouse fix to remove windows mouse acceleration.

Finally, to minimise the chances of encountering negative acceleration, I overclocked my USB polling rate to 500hz.  This was quite fiddly to do, but beyond a few reboots and Avira complaining about phantom viruses, it wasn’t a big deal.

Overclocking the USB polling rate increases the ‘perfect control’ region from 1 m/s up to 1.5 m/s, so unless you really throw it around with a miniscule sensitivity, negative acceleration shouldn’t be a concern.

A quick test showed everything was in order.

Desk and Mousepad

As an avid PC headbanger, I’ve always favoured large desks.  In fact, I don’t understand why many PC owners fret over mice and monitors but often overlook the cornerstone of the PC experience: The desk and the chair.

I’m using a Influx Curva 1200 Right-Handed Wave Desk coupled with a Steelseries QcK+ mouse pad.  Both are fantastic products.  The Curva is solidly constructed, is a perfect height and affords me plenty of room.

I’ve got a 24” + 20” monitor dual screen setup, and there’s still room for a 45cm mouse mat and a few other bits and pieces.  At £150 it’s not a budget buy, but given how much I use my PC, I think it’s well worth it.

image + image

Regarding the size of the mousepad: I used to think anything over 30 cm was overkill, but having a 45 cm pad makes a large difference.  It covers such a large part of my desk that I no longer have to worry about positioning the pad – it’s everywhere, so I can get comfy.  A decade ago, my TFC clanmates used to constantly mock me for my OCD style mouse mat positioning.  The words still ring in my ears.  I cried sometimes, but no longer.

Compared to the standard size QcK, it also affords me the luxury of using a lower mouse sensitivity.


I’m an arm player in that I use my forearm to move the mouse as opposed to my wrist/fingers.  I used to be a high sensitivity wrist/fingers player when I had a small desk.  I prefer using my arm; it’s more precise and I suffer from fewer PC-related mousing strains.

One sweep across the entire pad turns about 400 degrees (so probably about ~40cm for a 360 degree turn).  Because of its weight, this was slightly cumbersome with the MX518. The WMO is much lighter and glides easily.

Generally speaking, the lower your mouse sensitivity, the more precise you can be for picking out enemies.  A low mouse sensitivity is not a panacea, nor will it make you, me or anyone else a PRO GAMER!1, but I’ve switched around over the years and I keep gravitating towards lower and lower sensitivities.

Also, once you’re familiar with a game, the need to sharply turn around often abates as you react less and predict more.

Testing and Conclusion

I’m impressed with the WMO.  For £14.99 and a bit of tinkering, it’s a great mouse and, with my settings, the tracking seems to be borderline flawless.

It’s definitely not as grippy as the MX5XX series so if you’re a sweaty git, you may find it becomes slippery due to the lack of a rubbery finish.  Thankfully, I don’t sweat at all when sitting at the PC so this is not an issue for me.

Also, the shape is perfectly fine; I prefer the shape of the MX5XX but this is better than adequate.  Everyone will have their own preferences when it comes to shape.

The tracking is borderline flawless and its lightness means it glides much more easily than other more tubby mice.

The only real downsides I’ve encountered were the phantom clicking mouse wheel issue and having to mess around with USB polling rates.  If you can live with these two issues, then I’d strongly recommend trying it out.  For £15, you won’t do much better.

Yes, I am a nerd.

Additional References

Fragtality’s epic gaming mice guide

Project: MyWorld announced

We finally announced our minature-version-of-real-world-as-a-platform-for-games project last week.  Image shamelessly nicked from Luke’s blog:

I’ve worked on this for over 2 and a half years (in test engineering and software engineering capacities) and learned a hell of a lot during that period.  It’s not finished yet, but head on over and check it out :D

Data oriented design links

I’ve been doing a little reading around data oriented design of late and thought it was worth sharing some interesting links. Here’s my distillation of the reading I’ve done so far (caveat: I may be talking balls).

Prelude: Battling Dogma

All too often, games programmers butt up against dogmatic catch-all declarations of “virtual functions are slow!”  For the general case, this can be proved as a nonsense as virtual function calls are blatantly not slow!  They’re very, very fast.  However, if someone said instead, “virtual functions are slow when iterating over large collections of heterogeneous types because of cache misses” then that’s another matter, entirely.  Unfortunately, we all too often hear the former declaration rather than the latter.  It’s neither compelling (as we can prove it is incorrect in the general case) nor edifying.  Most programmers like to learn things, so it’s nice to read some illuminating articles about a touchy subject.

The gist of it

Data oriented design is based on examining the access patterns and transformations performed on data.  The code is then structured to make it data-centric by using a combination of changes to the type of data stored, the way it’s laid out in memory and the ordering of the data, amongst other things.  An instructive example of this is given in the BitSquid article where animation data is ordered by time, as this best fits the common access pattern that a game would use.  Another particularly useful example is where data structures are broken up into multiple parts so that more of the data used by common operations fits into the cache.

The main benefit is reducing cache misses, but a nice side effect is the increased opportunities for parallelisation.  A lot of this stuff is well-known and as old as the hills, but in my experience it’s often been bundled with dubious practices, so it’s nice to see some practical, tangible examples of when and why you should apply such techniques.


Games from Within Article — A high level article; Noel works through some disadvantages of object oriented design and then cites some examples where data oriented design can be employed to speed things up.

Pitfalls of Object Oriented Programming — Tony Albrecht of Sony has some very interesting diagrams, slides, timings and statistics that lay out the costs of cache misses and branch prediction failures with very specific examples, then optimises via various means.

Practical Examples in Data Oriented Design — Bitsquid engine programmers dish out some examples of designing with data access in mind.  Higher level that the Sony presentation, but also very useful.

GameDev discussion thread — Generally useful discussion thread.  Has some code examples, too.

Typical C++ Bullshit — Code annotated by cranky post-it notes.  Not exactly an illuminating discussion or an article as such, but worth including for completeness.


Game Entity Systems — The T=Machine blog has a series of posts on designing game entity systems.  One part of the series deals with processing homogeneous data and why this makes it fast / more easily parallelisable.

Mouse Input in FPS Games

Am I the only PC gamer that is really, really fussy about mouse input?  I say this because it feels like every other PC game I play comes with default input settings that are beyond jarring, yet most reviews fail to mention it.

This typically involves inbuilt mouse acceleration and/or input smoothing.  Here’s a tip for budding FPS game designers: I have no mouse acceleration because I don’t like it; adding it a default non-configurable behaviour is nothing short of infuriating for someone who is fussy about these things.

This is only going to get worse as more and more games are developed across multiple platforms.  What goes for consoles does not necessarily go for PCs, particularly when it comes to input.

NB: These things are subjective, so I say ‘right’ and ‘wrong’ enclosed in hyphens quotes.  However, my opinion is better than yours — this is the Internet after all! — so I’m probably right (no hyphens quotes).

Doing it ‘Right’

Games that do it ‘right’ usually take the OS mouse settings and meddle with them very little.  No smoothing, no acceleration.  If options exist for the game, you can tweak til your heart’s content.  TF2 is a good example of this; it has several mouse smoothing and acceleration options, but doesn’t enable them by default.  As such, it ‘just works’ out of the box using your OS settings, but there is scope for customisation.

Doing it ‘Wrong’

Games that do it ‘wrong’ can commit any number of crimes, from smoothing or buffering the input over multiple frames (causing extra input lag), to using acceleration by default in their game input logic.  I.e. your preferences get clobbered by the game and there’s nothing you can do about it.  Maybe there’s some obscure editable .ini files with esoteric options to fix it, but should you really have to resort to such meddling to make it feel ‘right’?

Sometimes you don’t even realise how bad it is until you re-acquaint yourself with a game that does it ‘right’.

The Wall of Shame

Games that offend the input gods (in no particular order):

Battlefield 2

I love BF2 and have 1300+ hours logged, but god damn, it has some weird-ass floaty mouse input and acceleration going on — I had a game recently and had forgotten how bad the input was for infantry combat.  I’m a pretty good infantry player in BF2, but compared to something like CS, it’s like being drunk.  Being drunk can be fun, but I’d like the choice all the same.

Mirror’s Edge

The input is generally fine for movement and fast paced bits, but when you have to aim a gun you realise how awful it is (I guess this was partly down to the game’s combat having a melee focus, but still).  I had to grip my mouse like I was squashing a potato or something.   My mouse is set up with low sensitivity, but it felt like there was no fine control due to the acceleration, plus they varied the horizontal sensitivity based on your view angle.

Left 4 Dead 2

L4D2 is basically the same as L4D1 which had perfect mouse input, but it has an option named “Enable Multicore Rendering”.  Enabling this option increases my framerate a little, but it also adds a strange, unwieldy “floaty” feeling to the mouse input.  I’m guessing it causes extra input lag because I cannot aim worth a toss with it enabled, but disabling it returns my input to L4D1 standards (i.e. good!)

Thief 3

I am not exaggerating in the slightest when I say that the mouse input in Thief 3 was so utterly horrendous that the game was rendered unplayable.  I went poking around in configs and changed various settings according to internet guides, but it was all to no avail.  It was so very very choppy, unresponsive and uncontrollable that I gave up after a few hours of play.  Horrible.

L4D – Pleasure and Pain

Left4Dead is ridiculously good.  I can’t quite get over how tremendously visceral, tense, hilarious and fun it is.  I’m one of those people who tries games, but only latches onto one in a big way every couple of years; I haven’t loved a game like this since TFC or BF2.  I’ve already played over 200 hours of it; I can’t stop playing it.  It’s multi-faceted; it has different ways of playing to suit my moods.

I love the camaraderie and the shared experience.  Many of my friends have bought it and can’t stop playing it. We jabber away about last night’s games like a bunch of dullards.  “Haha, that tank that smashed a car through the front door and incapped us all”.  “Oh, did you see that pounce I did off the crane that knocked the other two survivors off the edge?”.  “haha, when we were all waiting to go up the ladder and a boomer dropped down right in the middle, then we all played pass the boomer”.

It’s a riot.  There’s just one problem: we absolutely hate it.

So near and yet so, so far

The premise, art, mood, gameplay and everything about it smacks of quality.  However, there’s nothing quite so galling as a flawed genius, and L4D is utter genius and utterly flawed.  “What’s the problem?” you ask?  Well, the problem is in the multiplayer matchmaking, or the total lack of it. If you’re playing campaign mode (4 players versus the AI) it’s perfectly acceptable.  If you’re playing versus mode (the mainstay of the multiplayer), it is utterly inadequate.

The game operates using lobbies.  Someone starts a lobby and is designated the “lobby leader”, then other players join the lobby.  Once 8 players have been shepherded into the lobby, the game is started.

It all sounds grand so far.  Unfortunately, Valve’s lobby system basically pulls in a bunch of random players. Now I’m sure it’s more complicated than that (region, skill, ping and some other things possibly come into it), but for all intents and purposes, it might as well be random.  This is because if you have mates — and let’s face it, why would you play a multiplayer game without your mates? — you can join a common lobby and take on allcomers.

However, it still sounds reasonable though, right?

Wrong.  The problem is that teams of friends versus teams of randoms has one inevitable outcome.  One team is likely to rack up the points while the other team gets utterly ruined.  Due to the fact that it’s 4 v 4, if even one of the players on the other team is markedly inferior, a skilled group of players will always win.  There is no padding as there would be when playing in games with larger player numbers.  I’ve played games of BF2 in an unstoppable squad and still lost because there were too many passengers amonst our remaining 26 players (32 v 32!)  By consequence of design, this doesn’t happen in L4D.

This wouldn’t be such an issue, but there is seemingly no mechanism for skill matching, nor is there a mechanism for teams of friends to play other teams of friends.

L4D Versus Terminology

This has resulted in two terms entering the vernacular of any L4D player who has even had a cursory go at Versus mode:

Rage Quitter – Someone who leaves a game due to frustration and a build-up of hot salty tears.  A rage quit commonly occurs due to:

  1. Their team getting destroyed
  2. Someone else on their team leaving (see #1) resulting in a domino rage
  3. Incompetence on their team (see #1)
  4. Deciding that they don’t like French/Italian/English/Scottish/<insert nationality here> people all of a sudden (usually coincides with #1)
  5. Some kind of alleged cheating bulllshit that is going on with the other team (usually imagined; see #1)
  6. Other people on their team being dicks

I suppose calling all quitters “ragers” is harsh.  Let’s face it: Most of us play games to have fun.  If our team is riduclously bad or there is a huge skill chasm, it’s not fun to be dismantled for the best part of an hour.

Pub Stomper – One person who plays as part of a group of friends/acquaintances.

Again, pub stomper is an unfortunate tag because it doesn’t accurately describe why (most) people play in a group.  In my case, I don’t like playing online games alone.  I’ve got single player for lone gaming; humans are more challenging to play against and half of the fun in online games is the interactions and replayability that come out of it.

I’m not hugely interested in winning, so I don’t “stomp” pubs for that reason.  The stomping just tends to fall out of the fact that I play the game a lot.

I will happily play the game with any of my friends.  It doesn’t matter if they’re terrible or a 2 day newbie who thinks the Witch just needs a hug, it’s still fun.  However, most of the friends I play with (both real life friends and from the Internets)  are playing most nights.  If you play, say, 4 nights of the week and those same friends also play a lot, it is only natural that the heaviest gamers will stick together.

If I were to suddenly stop typing this blog post and fancy a game of L4D, it’s more than likely that 2 of my best L4D buddies would be available to play.  The fairweather L4D friends would not.  They’d be off doing something else, like running through a meadow, doing charity work or cooing at kittens.


I’m sure you can see the problem with the clash of the two groups.  The problem is exacerbated because it’s a form of mutally assured destruction.  Just as it’s no fun having your random team systematically decimated by a bunch of autonomous friend-bots who second guess your every move, neither is it fun to get 5 minutes into a game, only for the other team to all rage because it’s a total mismatch.

To give you an idea of just how bad it can be, in one campaign, my friends and I went through 50+ players on the opposite side.  The campaign lasts much less than an hour in a one sided game, and yet we still had 50+ folk who joined and left.  That’s the team filled and re-filled about 12 times over (look at the steam friends “recent games” player list if you want to see this).

I thought L4D had reached its nadir with the No Mercy 1 ragers (NM1 is like Counter-Strike’s “de_dust” in that it’s probably the only map a lot of people ever see…), but I was mistaken.  In the last week, my friends and I have started countless games on the new maps (mainly Dead Air).  We’ve completed about two of them.  In every single other instance, the whole team quits after maybe 2 rounds.  It usually goes like this:

Dead Air 1: They play infected; we make it as survivor.  They play survivor and die at the first plank.  One or two of them leave.  Maybe the spots are filled, maybe not.

Dead Air 2: They play infected; we make it as survivor.  They all leave.

This is not an exaggeration.  Sometimes they all leave after a single round. We then go back and start a new lobby and the process repeats itself.  We play the same maps time and time again, rarely even getting to play infected twice, let alone see the third map.

So, what can Valve do?

Firstly, and this should’ve been in from the start: introduce a better matchmaking system!  This should be cater to two main groups:

1. Randoms.  Some people have no L4D friends and no time to make ’em (or they have a few friends or acquaintances, but don’t spend a lot of time playing with them).  If 4 random players can be matched up against 4 other random players and the game isn’t a total mismatch, then that’s good enough.  Whether this is done by win/loss percentage, average score per round or some combination of multiple things, I don’t care.

2. Friends.  If you have two or three mates and want to have a fair / challenging game, then this would allow you to create a lobby with four people, then look for a matching group to play against.  This is a very simple idea, but it doesn’t yet exist.  Somebody made a good post about it on the Steam forums and it received widespread support, so let’s hope it happens.

Regardless of who is playing, Valve really needs to encourage people both to stay in games and to be nice to one another.  I don’t care how good someone is; if they are abusive then it is no fun playing with them.  Case in point: Last week, a random joined my friends and me for a game.  This guy was an OK player, but he spent a good 10 minutes berating a friend of mine.  Now, the person he was spouting abuse at doesn’t play too much, but at least he doesn’t act like a moron on the Internet.  We votekicked the abuser which was a decent fix, but some other unfortunate team were no doubt landed with him shortly thereafter.

If someone is repeatedly kicked from games or constantly leaves after a single map, it’s usually a sign that they’re not worth playing with.  I’ve been friends with a few people like this in the past and their outlook is that they’re right, everyone is against them and they must gob off at every opportunity.  Instead of speaking to people in a respectful manner, they just resort to abuse.  It has become their default setting.  A lucky shot or acquired skill becomes an instant cheat accusation.  Any kind of misunderstanding turns to flames.  It’s no fun to be around and, given a choice, nobody wants to play with these people.

Valve already delists servers that offer a bad player experience so I’d be very interested to see how they’re tackling the problem.  Could they apply many of the same principles to players?  Could they delist or at least categorise players that offer a bad player experience?  I think they could.

Valve can change your access levels to games when you cheat, but what about when you’re a twat?  Will they actually do it?  It’s debatable.  I’d love to see it happen, but the system would have to be robust, else folk would just game it.

The bottom line is that whatever happens, things have got to improve because it’s getting harder and harder to have fun.  It’s taking the shine off a remarkable game.