Category Archives: Game Development
My own work on game development
As game designers, is it our responsibility when someone spends more time than they want to on a videogame?
It’s a common enough occurrence in this world of social game systems like Raptr and TrueAchievements. Someone buys a game, and straightaway fills their Twitter and Facebook feeds with their journey towards completing every single little challenge in that game.
Achievements, for the uninitiated, are meta-medals that are associated with a player’s profile across multiple games. They are earned by completing small or large challenges in the game – or at least, that is how they were designed. The best achievements record things that players might do just for fun – to see if they can. Today, the effort required to get an achievement is approaching rather silly extremes. From the ‘turn-on-the-console’ achievements, which reward you for starting the first mission or shooting your first enemy, to the achievements which require literally hundreds or thousands of hours of play. An example of the latter is the now-infamous ‘Seriously…’ achievement from the Gears of War series. Here you can see the Seriously 2.0 achievement from Gears of War 2. This achievement requires you to kill a hundred thousand enemies.
Anybody who is of an obsessive frame of mind – and some gamers certainly are – might waste incredible amounts of time trying to reach this goal, way beyond the amount of time they would spend on the game if there were no achievements. I realise that designers want to encourage players to spend more time (and sometimes more money) on their games, but achievements like this are simply gratuitous.
I play games for fun. Achievements are fun in general, and some of them can be entertaining to strive for, but the pressure of earning every single one in every single game would drive me mad. And yet some people feel that pressure. As game designers, I think we have a ethical responsibility not to enable this kind of anti-fun idea. Not that I think achievements are bad, just that there will always be players obsessive enough to spend the time earning the silly ones like Seriously…, and that we should think carefully before adding such achievements to our games.
JustEvasion is a game that I developed in 2011. I wanted to make a simple game to keep my programming hand in over the long summer months. I developed it in C++, using OpenGL and the freeglut library. I was relatively unfamiliar with C++ at the time, but I had some sample freeglut code to learn from. The low-level nature of the libraries made some features quite difficult to implement, but it was a very good learning experience for me.
JustEvasion is a game in which the player moves a star shape around the screen. The star is chased constantly by circles, which use an extremely basic chasing mechanism. As such, the circles often line up or overlap as they attempt to reach the player. Players score points by effecting these overlaps. When two circles overlap perfectly (so that only one can be seen), one of them will disappear and the score will increase. If there is more than one overlap happening at once, the player gets a combo bonus.
I had JustEvasion working to this specification within a relatively short time, and I wasn’t sure what to do with it next. Some time later I was investigating Adam Saltsman‘s Canabalt, a very entertaining one-button Flash game.I discovered that the library he used to make the game, Flixel, is open-source. It is possible to develop a full game using only Flixel and FlashDevelop.
I was very excited about Flixel, so as a first project I decided to remake JustEvasion as a Flash game. Although I had made JustEvasion open-source on Google Code, almost nobody I knew had been able to play it because of its dependence on system configuration. A Flash game could remedy this, and allow everyone to at least try my game.
I started by reimplementing all the features that JustEvasion had, then started to add new ones, like a high score cookie that is stored on the computer for the next time you play, and different behaviours in the enemies. The development in ActionScript3 was slow at first, because I had limited Flash experience before, but once I grasped the differences I made progress quickly.
JustEvasion was a landmark project for me. Being able to publish a game in a medium everyone could understand and play made for a great feedback loop. Catching bugs was a lot easier with ten or fifteen people trying each build. It also boosted my confidence in my own abilities.