On ‘Principled’ Games

It's curtains.

One thing that causes me a lot of work when I’m making games is that I generally have some particular idea concerning what the game is ‘about’ (this idea of its ‘truth’ again) and quite often being true to that idea means a lot of programming and other tasks that nobody will ever see or experience…

So in Best Chess white plays a move and black proceeds on its merry path of solving chess. Great. Except that not only did I have to write the algorithm for solving chess, I still had to implement all the code that handles what happens after black has solved chess, despite the fact that this will never (practically speaking) actually happen. Thus, were black to solve chess, it would then in fact have the code in place to resign, offer a draw, or play a move (and then solve chess again after white replies!). All that extra stuff will never be seen, but it has to be there out of principle – otherwise it feels like I’m not taking the game in good faith, that I’m sidestepping some ‘true’ elements of the game that make it what it needs to be.

Similarly, in Durations there were many minigames that would obviously never be completed. Take One Millennium Avant Garde Band for instance – not a game anyone is actually going to complete, one assumes. And yet that game does contain the code such that, after 1,000 years have elapsed, the curtain comes down on the stage. If that code wasn’t there, if the game didn’t handle its end-state (even if that’s a millennium away), it just wouldn’t be right, right?

Today I’ve been working on another BREAKOUT for BREAKSOUT which involves the different rows of bricks being ‘in’ different cities in the world. So the lowest row is ‘in’ Montréal and can only be cleared if you’re playing there, the next row is ‘in’ Istanbul, and so on. Once again, nobody is realistically going to start the game (in Montréal, presumably), break the first row, then, leaving the game running, fly to Turkey to break the second row, and so on, but the game has to be implemented, in code, to account for it all. This ended up being to the extent that, because the free Google geocoding service only allows 2,500 look-ups a day, I limited the geocoding of any single instance of the game to just once a day, you know, just in case a couple thousand people actually want to travel around playing this game. It’s in the game.

All of these implementation details are kind of useless in that they will (almost certainly) never actually be experienced or seen by anybody (including me, in terms of their real contexts rather than just manipulated testing contexts). And yet if the code weren’t there to handle these things, the games would be frauds, unprincipled digital scam-artists. And that would be sad indeed.

It’s the principle of the thing, after all.

6 August 2015
← next words previous words →