This is the first in a short series of posts about No Man’s Sky and the future of procedural generation.
Procedural generation has been around for a long, long time now. We are approaching the 40th anniversary of Rogue, Elite has already had its 30th birthday, and even sprightly young Spelunky is coming up to double digits. We’ve seen old ideas refined and polished over those decades, and new ideas experimented with and tested out. But throughout this evolution and growth one area has remained largely the same, swept under the rug every time it caused problems, hoping that we could forget about it for a little longer. With the release of No Man’s Sky this month, I feel like it simply can’t be ignored any longer. We need to talk about how we talk about procedural generation.
A Puzzling Present is finally out! The festive platformer I’ve been working on this month is now available on Android, Windows, Mac and Linux, and it’s completely free! Click the present to go to the download page.
The banner above and our present logo were both done for us by Harriet Jones,
and the game features some great Christmas music by Kevin Macleod!
Today I’m going to be watching over the release, talking to a few journalists, and working on an optimised Android version that irons out a few bumps here or there. You can email me (email@example.com) if you want to ask anything or report a problem. Below is a few words about the project – I’m really excited to have it released!
Later this month, deadlines permitting, I’ll be releasing a game for desktop platforms and Android called A Puzzling Present. It’ll be a Christmas-themed platform game, with game mechanics and level design by the new Mechanic Miner system. It’s going to be released for free (because it should be!) and it’ll also include a way for you to help ANGELINA and myself out with the research by telling us what you think of the game as you play it! Continue reading →
With some curation from me – I’ve changed this post as a result, actually.↩
I was a bit hesitant about some of the games coming out of ANGELINA over the last fortnight. In particular, it became obvious to me that the more autonomous the system became the higher the likelihood it would produce something that might offend, upset or libel people. Sex, Lies and Rape doesn’t include anything you wouldn’t find in a moderate Google SafeSearch, and is entirely safe for work. But the theme it is trying to convey, and some of the selections it makes as a result, do make for quite an unsettling experience.
As before, here’s a YouTube playthrough of the level:
And if you’d like to play it yourself, you can find it here.
There won’t be any more games for a while as I need to take two days’ holiday, finish my paper, present at GaME – all in the next week! There should be more games up around the end of the month though.
The first game from the AIIDE run of game generation is up. It’s called The Conservation of Emily and it’s based on an article about UK politicians being involved in illegal logging companies. If you’d like to play the game, you can do so by clicking here. There’s also a YouTube playthrough of the game available, which I’ve embedded below in case you don’t feel like playing or it’s just a bit too fiddly (which ANGELINA and I are still working on somewhat).
It’s not up on the Games page yet but I’ll be doing that in early July when I’m over AIIDE, GaME and ICCC 2012…
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’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.
With the paper now submitted to EvoStar, all that remains is for me to say thanks to all that helped out, and wish you the best for Christmas. I’ll be taking a hiatus to go and work on projects and fiddle with things behind the scenes, while I get ready for a new stage of work.
You can now play a single-level sample game from ANGELINA. It’s a small level from a single run of the system, onto which I added some bells and whistles (like a title screen and an end sequence – nothing that ANGELINA should be doing itself). You can play the game here.
It would also really help me if you completed the survey just underneath the game, when you’re done playing. You only need to answer the first question to submit the form! Another way you can help out is by spreading this level sampler around! The more feedback I get, the better.
As you know, I’m also writing a paper about this stuff right now, but I’ll be putting two more levels together with this one to create a fuller game, and releasing this game more widely in the next week. It’ll probably have a similar survey attached.
It took me a week or so longer than I wanted, but I finally have something playable to offer up. Below is an early run from the new ANGELINA system, this time designing platform games. It’s as-yet untitled, very short and simple, but playable. Let me know what you think. There’s plenty more tinkering to do this month, so expect changes as time goes on. The aim of the game right now is simply to get Santa back to his sleigh in one piece! You’ll find powerups along the way to help you. It’s possible to get stuck, so you might need to refresh the page (I’ll be adding in manual reset soon, it’s just not a the top of the to-do list).
The purpose of this project is to demonstrate that ANGELINA has a few new skills from her arcade game days:
An appreciation for player progression. Games created through this system should have multiple stages of world exploration, where each powerup unlocks more of the world. Enemies should appear more readily in later stages of the world, and so on.
An agnostic approach to game evaluation. ANGELINA knows very little about the specific game mechanics going on here, and it’s important to maintain this as we move onto more complicated design tasks. For instance, the system doesn’t need to be told to put things high out of the player’s reach if there is a jump powerup around, or to use locked doors to hide powerups. This knowledge should emerge from the system without it being explicitly programmed in.
There are other things I’m hoping to experiment with, but I want the games to exhibit these two things in particular before we’re done. I should stress that this game definitely does not exhibit these two skills strongly enough, but we are getting there slowly but surely. Let me know what you think.