GARNET & Space Invaders Now Online (Again)

I’ve had real problems getting the arcade games running anywhere outside of my development environment, so I set today aside to remedy that and I can finally offer up what I think is a working version of Space Invaders for you to enjoy. You can find it wrapped up in a package called GARNET right here. GARNET is the name for the library I’ve made to run these arcade games off of YAML scripts. It runs as a little game engine that reads all the YAML files in its directory and works out what ones are playable. Then you choose one, and you’re away.

It isn’t hugely pretty right now, but eventually it’ll allow easy distribution of games made using GARNET, by just throwing out the YAML files and having the desktop application read them on their own. I toyed with an embeddable web version, but it was too much hassle, and this is a more flexible solution in any case.

Download it and have a look, play the Space Invaders example and poke around with the YAML if you like. Now that this is fixed (hopefully) I’m going to expand the library until Pong and Pacman are both playable – then I’ll distribute some guides on writing YAML descriptions of GARNET games, as well as the library’s source itself.

p.s. An Android port of this system is also a probability. The group is looking at purchasing some tablets for research and development – if this happens, I’ll probably do a port.

ANGELINA 101

I’m giving one of the Advanced Object-Oriented Programming lectures to Imperial’s first-year Computing students next week. Definitely looking forward to it, and I hope they enjoy the talk I’ve got in store. I also thought I’d digest it and post it up here, as it neatly does something I’ve been wanting to do for a while on the blog – discuss the basics of evolution that underpin ANGELINA.

Continue reading

Space Invaders Released!

I’ve finally added in some rudimentary AI hooks, which has let me finish off Space Invaders and move on with the game engine. You can download and play Space Invaders here as a runnable JAR. Let me know how it runs! It should work cross-platform, you just need Java installed. If you want to cross reference the game, I’ve updated the YAML description to the latest version here.

My next step is to implement a couple of other games – PacMan and Pong. With those done, the engine should be expressive enough to start properly inventing with. I’ve got a little time to work on it today and tomorrow but it might not be until next week that you see those games released properly.

Are you at A Bit Of Alright this Friday? Get in touch and let me know.

EDIT – Oops! Someone’s very helpfully pointed out that the JAR crashes right now. I’ll fix this as soon as I can.

YAML Space Invaders In Motion

I finally got around to recording a video of the YAML Space Invaders interpreted and running. I needed to patch up a few things before doing it – and you’ll see that everything is still quite static so far – but I wanted to get a permanent record of the progress! Now that EvoGAMES is submitted and other paper-based things are out of the way, I can get back to this project properly. Here’s the video:

If you check out the YAML you’ll see I’ve specified a syntax for some AI commands but they’re not there yet. I’m going to put that in next in a basic way, and then get a PacMan example going to concretely show the system’s flexibility. Then I’m probably ready to start making stuff, although the jury’s out on how that’s going to happen right now.

Indie Science (And The Science Of Being Indie)

I was interviewed for Develop Magazine last month and it’s just going out in their latest edition. It was all very fun to do and the final piece is a great description of where my research is and where I hope it’s going. My favourite part is where we talk about how doing games research can feel a bit like being an indie developer, but since reading over the interview I think there’s more there than I initially thought.

I said:

…the indie games industry, and the indie games ethic, has made [gamers] amenable to the idea of research projects… people are in that mind set already…

We’d been talking about my interactions with the indie community on TIGSource, and I’d said that I felt that many indie projects were like my work with ANGELINA – rough and ready, something new but unpolished. Of course there are plenty of exceptions, and many indie games are incredibly polished, very well-rounded affairs; but the core of the indie community has a lot in common with the world of research. Let’s do a tour. Continue reading

Questions and Answer Sets

This post might get a little bogged-down in logic programming, but stick with it. I thoroughly enjoyed revisiting two articles last week by Adam Smith and Michael Mateas of the Expressive Intelligence Studio at UC Santa Cruz. They’re both very readable – Variations Forever is an account of building a sort of self-designing arcade videogame, and the slightly more intimidatingly-titled Answer Set Programming for Procedural Content Generation is a superb article in an AI-for-games journal. I was turned back to these projects after some paper feedback pointed me towards Tanagra, another UCSC project (but a topic for another day). Both articles come highly recommended! Here’s what I took away from them.

Continue reading

ANGELINA At EvoGames 2012

I’ve just received notification that ANGELINA’s second paper, Initial Results from Co-operative Co-evolution for Automated Platformer Design, has been accepted for an oral talk and inclusion in the proceedings for EvoGames 2012. I’m delighted! The reviewers all gave great feedback and many offered up related work I was unaware of, which is always the best part of any review. Thanks to everyone who took part in the various surveys and contributed advice and opinion during the last few months!

I’ll be putting up a version of the paper for people to read as soon as I can.

ANGELINA’s Game Engine

Things are going well so far. Almost two weeks into the new year and the new version of ANGELINA (which is version three, not two as I said before) is coming along well. It can read basic game descriptions in YAML and then turn that into a playable game, with multiple levels, real objectives, and so on. It’s not hugely pretty but the code itself is quite flexible – sufficiently so that I’m going to try and release part of it openly as soon as I can, in case anyone wants to take a peek or, god forbid, try and use it themselves.

Once the engine is finished, we come onto the thornier matter of actually evolving games. I want to take my time here to avoid a repeat of the Metroidvania project I did at the end of last year. I rushed ahead, didn’t analyse at each step, and ended up with a messier project as a result. So we’re going to take this slowly, first building up a system that can analyse definition and unit operation files (that is, the rough outline of the game rules, but with no level-specific info), possibly evolve new ones, and offer new information it infers from reading these design files. I’ll keep you posted on that latter point in particular, as it involves an interesting AI challenge that I’m not sure how I’m going to solve yet.

Continue reading

Game Blueprints – YAML and Space Invaders

I’ve been spending a lot of time this week working on the new version of ANGELINA. I’m trying to make it more flexible than before, but it’s throwing up a lot of philosophical challenges too (the old question of how much to give ANGELINA at the start, that we saw in the previous projects too). I’m getting somewhere now though, with work in two areas – the first is a lighter, Java implementation of some elements of the Flixel language for game programming. This is going to help ANGELINA create games that are easily playable, while letting me stay entirely within Java for the first time ever. Good news.

The second area of work is blueprinting game designs. I’m playing with an idea of pre-design blueprint stages, where ANGELINA considers abstract game designs and does some evolution at this level before going and implementing anything. I’ll explain why I want to do that in another post, but for now let me talk about how I think these blueprints are going to work, and YAML.

YAML is a readable data-representation language that has lots of language libraries. This means it’s a handy, human-readable and easily edited way of distributing and sharing data. My intention is to have these game blueprints represented in YAML, and I have an example I drafted this morning that you can see here. There are two files – one contains definitions that describe objects in the world, like the player character, bullets and so on. The other contains unit operations which are little bits of action and change that can occur in the game. I’ve represented these as triggers and events.

You can’t see the entire scope from the little sample files I’ve made, but you can get the gist of it even if you’ve never seen YAML before. I’d appreciate it if you could take a look and let me know what you think – could you design a game like this? What would you change?

More on game blueprinting next week.

2012 For ANGELINA

Happy New Year, everyone, and thanks for coming back to Games By ANGELINA. I’m hoping 2012 will have plenty in store for this site, including (most importantly of all) lots of new games for you to play. Let me update you a little on what’s going on right now and where I’m hoping to look at next.

Firstly, general stuff outside the research itself. In mid-January I’ll be receiving notification on my EvoGames paper I wrote about the work done on evolving Metroidvania-lite platformers. I’ll let you know how that turns out, acceptance or failure. I’m hoping for an acceptance, obviously, but the project was a difficult one and I imagine the reviews will reflect that.

I’ve got a few events I’m looking forward to this year. I’m attending Dare To Be Digital on the 24th January and A Bit Of Alright on the 3rd February. If you’re attending either of these events, please get in touch with me, we should meet up and talk about game design!

I’m also in the process of organising this year’s Games and Media Event at Imperial College. We’re looking at potential speaker lists right now, but I’m hoping to give a talk myself, so if you’re in London in early June and want to hear me talk about ANGELINA and what I’m up to this year, you should stop by. More on that closer to the date.

In terms of research, we’re at a crossroads with my PhD work right now. So far, I’ve tried to apply evolutionary techniques to arcade game design and platformer design, with mixed results. On the one hand, it’s tempting to apply this technique to other genres, refine the systems I’m using and present as effective a review as possible of using this method to automate game design. One route through the PhD would certainly see me do this – JRPGs, point-and-click adventures and roguelikes are all potential targets I have lined up.

Another avenue, however, is mechanic invention. In both of our experiments so far, I’ve been quite explicit with ANGELINA in describing the game design areas I want it to explore. What would happen if we relaxed this? Can we get ANGELINA to innovate and come up with new ideas for games, as well as designing levels and setups for them?

This second question is a compelling one to me, and so today I have begun implementing a new version of ANGELINA[1] which will serve as a base to investigate some of these ideas. I don’t know exactly what kind of system we’ll need to look at the question of mechanic invention, but hopefully we’ll find something of interest eventually.

Those who follow me on Twitter will be pleased to know that my whining about the time ANGELINA takes to run may be less frequent in the future, thanks to the superb Dr. Tristan Allwood who helpfully ran me through the innards of Condor, a system for distributing computational jobs across many different machines. The lab at Imperial’s Department of Computing has such a Condor server, which spreads jobs across any available machines in our computing labs. It’s even got a special set-up for Java! I’m hoping that I can use this to evaluate dozens of games simultaneously, potentially increasing the effectiveness of ANGELINA by a huge factor. More on that, again, as the system develops.

Thanks for following my progress on here so far. I literally could not have done the work I have so far if it weren’t for dozens of dedicated people willing to play terrible arcade games and platformers and give me their opinion on them. Hopefully one day we’ll all look back at this and nod sagely – this was the start of something brilliant. Here’s hoping, and here’s to an interesting 2012.

  1. [1] I’m codenaming this one (so to speak) ‘Superfrog’ and retroactively naming the previous version ‘Zool’