In the last couple of months I’ve made two “complete” games, both in game jams. One is called [placeholder] and was made for Ludum Dare 26 which happened this April, with the theme of ‘Minimalism’. Like all good Ludum Dare themes I thought I would never possibly have an idea for it, then came up with one halfway through Day One and decided to go for it. I can’t put many hours into a Ludum Dare, the timeframe just doesn’t agree with me, so I tried something as condensed and small-scale as possible. The result was [placeholder] – an abstract puzzle game inside an abstract puzzle game.
My 7-Day Roguelike experiment, A Rogue Dream, is now on Github, such as it is. It’s not quite playable yet, but hopefully some of the ideas behind it might be of interest to developers. So the code’s online with a brief description of how it works, in case anyone wants to fiddle, and this post will give an overview of the premise and the most famous original bit of tech behind it – generating game content from the web.
The original idea for the game came from musing about a roguelike which changed its theme as you played it. Initially I didn’t think this would have a mechanical effect, I just thought it would be a fun exercise in procedural content generation, if you could suddenly convert a fantasy theme into a cowboy theme, and work out analogues for items, monsters, etc. I was going to set the game in a virtual reality world gone haywire. This would slot in nicely to my development of Spritely (coming soon!) which is a tool for generating sprites from the web.
As I thought about this idea more, though, I had other ideas. In particular, I remembered Tony Veal’s 2012 paper about making metaphors, which you can read online here (it’s quite fun). Tony noticed that if you put an unfinished question into Google, you can mine answers from autocomplete. If you were to ask, say, why do doctors…
You get observations about doctors – so you can infer that they wear something called scrubs and say stat and do something called prescribing steroids. I was absolutely bowled over by this cute trick when I first saw it, but until now I’d not thought about how games could use it. A Rogue Dream does just that. The player enters a noun at the start of the game, and we try and autogenerate abilities, items and enemies for that noun, which the player takes control of. All of the screenshots are showing automatically generated sprites and abilities/items.
I add in some filters which are hand-made (something I shy away from for the work on ANGELINA but that fits perfectly here). For instance, after searching for why do <noun>s… if we see the word ‘hate’ we take the remainder of the autocomplete to be the description of an enemy. So cats get the enemy water, and cows get the enemy red. We do similar things for items (wear, eat) and even goals (like, love, eat). Anything not fitting the filters (including negative filters that remove things like references to ‘you’) is considered to be an ability. Journalists get the ability Plagiarise. Men get the ability Cheat On Women.
Herein lies the problem – and the strength – of the technique. It’s highly unpredictable even with my basic filters on. You don’t get facts, you get observations, which includes racial stereotypes and common misconceptions. But that can also lend a lot of weight to the results. One roguelike player observed that the game’s concept is a little bit like playing the Internet in game form, which I like a lot.
I want to keep using techniques like this, perhaps finding more focused or reliable ways to do so. It’s such an elegant and cheap way of getting fresh, contemporary knowledge from the internet without using databases or libraries of knowledge. You solve the common sense knowledge problem like any human would – you Google for it.
In terms of lessons learned, I wouldn’t have dreamed of entering Ludum Dare to make a platformer without having made platformers before. For some reason I thought I could enter 7DRL without having made a roguelike before. I’m glad I did, because it was a last minute thing and I got a prototype running, but next year I need preparation beforehand. Looking forward to it.
Last week I made a silly game called Ambex. This weekend I made a silly game called Nose and Tail. They both were started by me asking for four words on Twitter – I specified what kind of words, because in both cases I kind of had an idea in mind. I just wanted some random input from people, to make it more fun and to add extra possibilities in. I’m slowly collecting this into a process that I can do on a regular basis, that I’m calling a ‘four word game jam’. More on this after Christmas I hope!
Download here. Requires Java.
I asked for two careers, one noun and one emotion and I got wine taster, fisherman, action figure and discombobulated. I had various ideas about them at first, but my inability to draw a wine taster or a fisherman meant that they sort of became inspirations at best. Sorry to Tristan and Craig for that!
The idea is not exactly earth-shattering: you can swap between your Nose and Tail costumes by standing in front of a colour-coded action figure box (again, not the best art) and pressing ‘up’. Costumes have different abilities, and exits to levels are colour-coded too. There’s only five levels in here, but it gives you an idea of the mechanic, which is about as far as you can get in the time I had!
I’m putting the code and art online here in GitHub. The music is generated using autotracker-bu which you can get… somewhere on GitHub. I can’t remember exactly where, unfortunately but I’ll try and find it and link it in. I also used LibGDX and the flixel-android library, which I obviously haven’t bundled into the Git upload.
Do let me know what you think! As I say, more on the four-word-game-jam later. If you want to throw words at me the next time I do one, please do follow me on Twitter!
I got tired of normal work so after listening to Roguelike Radio’s podcast episode on game jams, I decided to make a game. I spent two hours making a game about toasters and explosions and kebabs based on Twitter suggestions, and then did this:
You hit toasters with X, and jump in them. When they explode they catapault you in the air. Only three levels as I ran out of time/enthusiasm/awakeness. You can download it here and find the source on GitHub here – it was made with LibGDX and the awesome flixel-android library.
At the start of the year I told myself to finish a game in 2012. I was quick to pass this on a technicality, having made a one-screen game about invigilating an exam, and another one-screener about a typing test mashed together with a terrible Bogart film. It’s satisfying to finish creating a game, no matter what size, complexity or seriousness it takes. I’m continuing to expand slowly in scope, with a film noir monologue rhythm action game called Gritty Noir Hero. It contains one screen.
Alright, two screens if you count the menu. I’m doing my best to finish it up as soon as I can.
I bombed. I made a last-minute decision to enter LD23, and got in a good six hours on the first day, but the second left no time at all. You can see where I was headed over at my page on the Ludum Dare site. However, the experience was a useful one, and I thought I’d write a few words on here both to explain what this site is for, and how a failed game development competition entry shed some light on it.
In my day job I work as a PhD student at Imperial College, designing videogame-designing AI. There’s a link in the sidebar to that project, which this year has been devouring an unusually large fraction of my time. The intention this year was, though, to start developing games in my spare time. The Scratchpad link at the top includes a few two-hour game designs which I had a lot of fun making, but the real focus has been on a side project or two tucked away in corners, that I badger friend and game expert Mike Prescott with on a daily basis.
Mike’s exceptionally perceptive about game designs, and a conversation with him about an idea you have tends to be incredibly healthy for whatever you’re trying to do. One thing that even Mike can’t fix, however, is my inability to get things done, and Ludum Dare showed me just how much can be done in a short period of time. The theme – Tiny World - matched perfectly a game prototype I’d tried to make earlier in the year, so I decided to take it, twist it, and do it in a weekend.
In four hours I’d surpassed, in pure gameplay terms, what many days of evening hacks hadn’t managed to cover, simply because if something was taking too long it got cut. No art, no UI, if there was user input that was hard to code (like clicking an image on-screen) it got replaced (with, in this example, number labels that the player could press to select things instead). Fast, loose, and productive. Lessons that most game developers learn, lessons that I’ve been told many times before, but lessons that – like many things to do with programming – you never really learn until you’ve taught them to yourself.
This blog probably won’t see much activity for a few more months now, but I did promise myself to produce a game this year. While my Scratchpad games are undoubtedly works of art, I’m hoping that something more substantial will find its way up here eventually. If I can get into the LD mindset again, perhaps that’ll be sooner rather than later.
Thanks for visiting Cut Garnet Games! I’m just getting set up here for 2012. Check back later in the year for more on what I’ve been doing!
In the meantime, you can visit Games By ANGELINA for the latest on what I do during the day – write software that automatically designs games!