Just a quick one – the source code for the LibGDX game A Puzzling Present is now available on Github. It’s missing libraries, some assets I don’t have licenses for, and a small amount of code present in the released game.
The code and the art are public domain, so you’re welcome to use them as you wish. Unfortunately, it’s not the most beautiful code out there, but if you’re looking to get into the excellent flixel-android library for LibGDX, it might help you!
Did you come to this year’s Games and Media Event at Imperial College? If you did, thank you so much! I hope you had a great time. I can honestly say that this year’s event was the best we’ve organised yet. Over the course of six or seven years the event has slowly grown in scope, brought in a wider spectrum of attendees, and is now a driving force for getting students interested (and into) jobs in the games industry. Thank you again if you came, and particularly if you were one of our excellent speakers!
The day before GaME I wrote up and submitted a paper to AIIDE, which means I’m relatively deadline free for a month or two. It’s a nice feeling! I get this about once every six months at the moment, and it’s a good time to reflect on how the PhD is going, as well as a nice justification for playing with side projects. One of the purposes of this blog is to keep people in the know about what I’m working on, so here’s a quick list of the things I’m pottering between these days.
I’m beginning to put some code online at GitHub, especially code that I think might actually be useful to people (which is a very small subset, believe me). Up there currently is some code I made to demonstrate evolution, and I’ve also put up the current version of the APACE library I posted about ages ago. That’s it, really, I just wanted people to be aware. I’ll add a link on the main site here sometime too.
For those interested in APACE – it’s really not very functional right now. It needs better tools for creating walkable areas and placing items, which I don’t have in place yet. It’s also entirely undocumented. It’s really there right now in case someone wants to peek at some example code or hack it into shape themselves. I will be adding to it in my spare time though as I like the idea.
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.
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.
APACE is ready for a public demo soon, but I’m diverting my work yet again for the next two months while I work on a platformer-based project in the Flash game library Flixel. Once again it’ll be a Java library that generates game code, this time for Actionscript 3 and the Flixel library. I’ve been fleshing out the Flixel code by hand over the last day or two, and it’s in a playable state so I’ve embedded it below.
The next step is to get a representation of this in Java, and then start to build the evolutionary system that will evolve these games. Once again, we’ll be using the multi-faceted evolution technique that worked in ANGELINA’s arcade game work, but of course this will require new fitness functions to evaluate the games we produce. What they consist of exactly is still to be decided, but over the next week or two I’ll be testing out some ideas.
The objective of the demo is simply to get to the bottom-left of the map, retrieve the powerup, and climb back to the top again. You can’t die, but you can fall out of the map. Enjoy!
Graphics courtesy of Oryx - http://www.oryxdesignlab.com/sprites/
The point-and-click game framework’s very nearly done, so I’ve put together a short video showing it working and demonstrating the core features (and the core bugs!).
I’ll be working on this over the next month or two, maybe trying to design some games using it, but it won’t be the focus of my work right now. Still, once the API’s in a usable state I’ll release it for others to use if they wish.