Can games really be a force for good?

In my latest article over on Medium, I discuss how games can be used to distract, and to hold people’s attention against all odds. Games even seem capable of distracting us from biological needs like hunger and sleep. So do I really believe games can be a force for good?

In short, I don’t believe that games are inherently good, bad, or anything in between. They’re a force, a tool, a thing that exists which, used by different people in different ways, can be for good or for bad. Or even for evil.

Have no fear though – this isn’t going to be an airy-fairy discussion of philosophy! Despite it “being complicated” there are clear case studies and examples of games being for good, bad, and “evil”. Let’s start from the bad, dip through the valley of the shadow of evil, then come out on the other side. We’ll wrap up by trying to stick all that together.

Games for bad

It is easy to see, games aren’t a force for pure good. They really can distract a person from what’s important, they really can be addictive, and they really can encourage bad schemata and behaviors – not mass murdering, but more subtle things like cultural stereotypes and trust in certain idealistic worldviews.

Hellblade : Senua’s Sacrifice puts you in a dark place

Thankfully, most game developers have either parents or children, and are aware of this. Increasingly, games will remind players to take a break, and children are pretty good at getting homework done (faster than usual) if games are held till after the hard stuff is complete. The issue of inclusivity is also growing, with more and more games from tiny studios all the way to AAA productions including a wider range of genders, races, quirks and stereotype bucking characters. A long way to go, but a long way forward from the field of white-male-shotgun wielding heroes of 1995.

Games for evil

Very rarely are games intentionally for evil. There are a few nasty examples (names won’t be named as they don’t deserve more publicity) that directly encourage, quite frankly, nasty behavior. But among all games, encouraging “evil” is very rare. But there is a more common evil in the increasing tide of “games” designed around addiction (for the benefit of their makers) with no inherent value. Boiled down, they are nothing more than psychological traps – almost indistinguishable from “games” to the unwitting outsider.

EncyclopediaEnemies copy
Our bacteria aren’t evil. ❤

These subversive little wracklings are an easy trap to fall into. A high proportion of the games I play are either totally built on this premise of addiction, or use it as the primary method of holding engagement. While I’m optimistic about games for bad, this face of games for evil appears to constantly grow in “popularity” as more and more people get addicted to the next big thing in fighting exponential growth with linear tools.

Games for good

So with all that bucket load of bad, how can games be good? An indeed, how can games that are also bad and evil be good at the same time? There are obvious examples – the infamous Call of Duty “airport scene” of 2009 that asked “what is acceptable”, the addictive grindfest of Clash of Clans that also happens to bring together parents and children in a heart-touching way, and the mindless drone of tetris letting a war veteran work through crippling flashbacks.

It’s a 10 year grind to the top. And it’s also a way to bond with your children. Complicated!

I can only summarise this in one way : games are complex pieces of art. They cannot be reduced to good, bad or evil – they are like books or movies, with a whole new level of audience engagement. So whether they are used to distract, remain ignorant of, entertain or educate, try to see games for what they are : much more complex than any single word can describe.

Using the Redmine Kanban

We’re working on a small project and wanted to see how well the Redmine kanban works – it fell to me to set it up.

I started by followed the instructions from the Kanban plugin website, however, it requires a few extra steps to get it working at all:

  • Install the gem block_helpers (gem install block_helpers)
  • Read the README.rdoc that comes with the project – to save you some time here it is in short – you need to go to the administration page in Redmine, then configure the kanban plugin. There, you need to configure the pane settings – any panes you want to use must link to a status within your own redmine – there’s a list of recommendations in the readme but it’s just common sense.

Now, how does it fare in use? It unfortunately has a showstopper bug – moving something twice on the kanban logs you out. In addition to that, some users were unable to see the kanban. This means that the kanban plugin as it stands, is unusable for anything but an ‘overview’ of the projects (and an non-interactive overview at that).

Seeing as development seems to have ended a while ago, this plugin isn’t worth installing, and we have removed it from our Redmine setup. If it resumes active development, I will do a more full review of the plugin.

How can I change the interpolation mode of a WPF image?

I needed an application to show images as actual pixels when zooming in – the application was specifically for drawing pixel differences. The default WPF image however, was using some funny sampling (fant sampling, it seems), so when zoomed in, pixels became blurry soup. What I wanted was nearest neighbour sampling.

Searching the web I couldn’t find any messages saying ‘do this!’, in fact all the messages were saying ‘this feature is not yet available’. Well, it turns out that it is now available and really easy to do. Just add the property to your image like this:

<Image name="myImage" RenderOptions.BitmapScalingMode="NearestNeighbor"/>

This did exactly what I wanted. There’s a  range of other sampling modes available too, if you know what you want.

Tips for improving mouse(cursor) input

Whether you’re drawing a fine line, trying to click small buttons, or sniping your girlfriend as she learns to play team fortress (sorry!), you need precise control. Depending on the situation, you might also need to respond rapidly.  Here’s a few tips for getting the precision you need, in hybrid importance+price order:

  • Disable mouse acceleration. With acceleration disabled, moving the mouse 5 cm should move x pixels on-screen – regardless of how fast you move it those 5 cm. There are situations where acceleration is useful, so you might want to disable this in separate application settings
  • Use a better mouse mat/surface. I recently got myself a Razer pro solutions mousepad, and it’s far more pleasant than using the desk surface. It wasn’t expensive either.  After using desk surfaces for years, the upgrade is amazing. When looking for a pad try to combine a ‘glidey’ surface with a texture good for your mouse sensor.
  • Disentangle wires – you don’t want to run out of mouse cable mid stroke or while tracking your target. Prioritise the mouse cable over static cables like the keyboard, simply unplugging the mouse, moving it out of your current desk setup, and plugging it in again could gain you a good 10cm of cable. Wireless is an option if cables just won’t reach, but I prefer a cable (cheaper, less batteries).
  • Use a better mouse – Your mouse should fit comfortably in your hand, move smoothly across the surface it’s on, click easily but not too easily, and be reasonably durable. I personally ignore DPI figures, as long as they’re not depressingly low. Use a USB mouse. The old Ps2 connection isn’t as good. I use a Logitech Mx518 everywhere I use a mouse.
  • Get a mouse with variable sensitivity. This can take some getting used to, but switching sensitivity is great for changing from sweeping strokes to fine detail, or from 360° coverage to precise sniping.
  • Use a different style device (tablet/space navigator/gamepad). Mice are great general purpose tools, but they aren’t perfect for everything. Tablets offer pen control mapped to the display, mirroring your gestures exactly on the screen. A decent tablet can radically improve your digital art  quality. Space navigators are a great alternative for navigating through 3D space. Gamepads are great for driving and flying thanks to their continuous style input (you can continue to turn left infinitely without repositioning).

If you have any other tips or getting more out of your pointer, let us know in the comments!

California! GTC 2010



This week I am in… California! You would hardly have guessed from the title of the post eh? I’m here for work, at the NVIDIA GTC 2010 conference. This is the second day here, and while yesterday was just a tutorial day, I’ve seen some amazing stuff today.

– NVIDIA named the next two gpus in their roadmap, kepler and maxwell, as well as claiming an 8* performance per watt improvement by 2013.

– Adobe showed off an amazing piece of digital photography tech allowing you to refocus after taking the shot. It used the high megapixel of current sensors and many lenses to capture lots of small images, then sew them together in software. Magic.

– stacks of stereo vision, auto stereo, surround displays, some really impressive, others blah. Auto stereo was a bit nauseous, I thought- bad omen for 3ds.

– a nice multi touch screen extension, allowing 32 simultaneous touch points, and it did indeed seem pretty robust.

Other than that I curse biological rhythm, my body is sure it should be asleep despite not being awake long enough yet!

I am a blogosaurus Rex.

So, that’s what I am. I thought of something important and interesting to blog about earlier, unfortunately I forgot what. To any who noticed the downtime yesterday, my apologies, it shouldn’t happen again.

Batch script current directory

I was just trying to write a batch script that calls another batch script. This one was called by another batch script however, and I was having trouble with “batchfile.bat is not an operable command”. I figured my working directory must be different to what I thought, and indeed it was. The following command at the beginning of your batch file will show you the working directory and help you get the correct location:

echo %CD%

This let me add the necessary “folder/” before “batchfile.bat” and now the script works as intended.

Passing variables in C++

Just a bit of condensed info that people will hopefully find helpful…

Variables that go ‘in’ but not ‘out’:

void foo(int x)

-x will not be modified outside the scope of foo
-x is copied (consider overhead for big things)


void foo(int const &x)
x=6; //will no compile

-x cannot be modified inside foo
-x is not copied, preventing some overhead


Variables that go in and out

void foo(int &x)

-x will be modified within foo and outside of foo
-x is not copied, preventing overhead, but modification of x outside of foo may be undesirable. see the use of const above.
-simpler than using pointer technique and avoids having to change calling code to pass a pointer


void foo(int *x)
*x = 6;

-the value at *x will be modified inside and outside foo
-x is not copied
-involves more effort to program


Don’t email me my password!

You’d think, with all the recent hype about security scandals, missing briefcases and phishing attacks, people would be just a little bit more sensible about how they deal with usernames and passwords.

The correct way to do things…

You sign up for a site, your password is transmitted securely and encrypted in a store. There is no way to ‘retrieve’ a forgotten password, that is it, it will enver come out of the database in a readable format. To reset your password in this scenario, you receive a new, randomly generated password, after providing some details – something of that sort.

The wrong way to do things…

You sign up for a site, check your inbox, and find an email: ‘Dear user, thank you for signing up with us. Your username is JoeBloggs and your password is paSSword25. We hope you have a secure inbox, because we don’t have a secure system!’ (I added the last bit)

Your email, sent unencrypted in most cases, could easily be intercepted. Intercepted, and assuming you’re human like the rest of us, the hacker has access to a great many, if not all of, the sites you’ve ever signed up to, along with whatever details you have submitted to them.

What’s more, the database itself has a reversible encryption method (or just stored in a plain-text file, maybe? Why make it difficult after all…) – so a dedicated hacker can  take all of those lovely passwords.

The message to developers – if you’re setting up a username and password system, there is no excuse not to research security. If you email me my password, then I will put you in my blacklist, which is available here.