Sort of gives us organic developers a spot of hope, aye?
Mm interesting, procedurally-generated gameplay basically. More and more computers are going to be automating aspects of game design.
I stopped reading when I read this…
Because apparently you can’t make a platform game without using ActionScript.
The author obviously doesn’t understand game development at all. If anyone’s interested, here’s the blog post by the actual developer.
Edit: Wait, what? The official blog post says the same thing. Maybe I’m missing some context here?
He’s saying the AI is written in Java, but the platform games are written in ActionScript. The AI would monitor the running game and output some sort of text data explaining what it wanted, which he would manually incorporate into the ActionScript game. They don’t mean all platform games are written in ActionScript; they’re saying that the platform games that his AI uses are written in ActionScript, probably to make them easier to use with Flash.
Boring…it just randomly changes a variable and randomly decides how that variable is altered when you press X.
They didn’t go into any detail on how the AI playtests. And it can’t decide difficulty well. Thanks guys!
This doesn’t make a game any better than a human; a human would have more imagination in their levels and mechanics(in most cases). This doesn’t come up with crazy mechanics either. This is a lazy attempt to make a game and then provide “content” to make it seem as if its more value.
Actually I read it the same way, that they suggested ALL platform games are made in flash, but obviously that isn’t correct… not enough reason to stop reading though. I think more and more procedural generation will be the way forward, maybe not exclusively except on the extreme end, because there often needs to be some human input somewhere to make things meaningful or semi controlled. It can be hard to spit out meaningful playable fun game levels, for example, from purely random processes, when the gameplay is intricately linked to the layout… it can be mostly done, though… spelunky for example… but there are still elements of not being able to control/isolate out some of the less fun aspects of the final results. Once algorithms get better at being able to generate content that is more fun, or the formulas for that are more defined, it will be really interesting to see what can be generated.
This also could be a way for indie’s, and particularly those in a tight or no budget, to come up with much larger volumes of content than all the time and effort it can take to do stuff by hand the traditional way. That said, I think people need to realize that just throwing in random levels does not make a good game, and marketing that randomness as unlimited levels also does not present it well - people need real world number like 1000 levels, that’s far more appealing because then it comes under the scope of maybe someone actually made all these levels especially if the results are good. Who needs a million levels anyway. I think Tiny Wings falls prey to this problem a bit because it randomly generates the game each time but it doesn’t make it out as though each level is a new world or whatever… to distinguish them… it just sort of randomizes them quietly and it left me a) confused as to why there is only one level, and b) less appreciative of the size/scope of the game… I would have more regard for it (I still like it) if it said it had 1000 levels and actually numbered them and gave a progressive path through them - it’s an important way to measure progress. So we have to be careful some of the important elements of game design aren’t lost in the shuffle when we let the computer take over.
Honestly I just want to see how the AI play tested this. Was it heuristic? etc. I could care less for the random portion that any junior could create and isn’t unique in any way. But they didn’t focus on this, sadly.
Hey guys! I’m the chap behind ANGELINA. A few things (I’m planning a nice postmortem sometime in the next month or so):
-
This is PhD research, and I am the sole person attached to the project. When I started two years ago I had never coded a game in my life, so this has been a learning experience for me and it is slow going (the field of automated game design is very small and little has been done so far). It’s early days, and the results are not amazing - that’s not why I’m sharing them. I’m sharing them because I want people to see what public money is funding in terms of research, I want people to see the project slowly evolve, and because it’s fun to play a game that has some cutting-edge research in it! Like you, I can look at A Puzzling Present and say “Well, I could do better”. But that’s not the point! It’s just about showing where we are right now.

-
I don’t know if that’s a typo or not but as makeshiftwings says, the platform games were originally written in Flixel. I don’t have time to reimplement games, learn new engines willy-nilly, and I had a lot of Java code - a lot - that generated games on the presupposition that the output was ActionScript+Flixel. Thus, finding flixel-android didn’t make it physically possible, it just made it possible with as little effort as could be. I can’t afford to spend weeks retooling, flixel-android let me make the leap in a day.
-
The automated testing is not what you think it is, alas! ANGELINA exhaustively tests the levels (or attempts to, the simulator needs rewriting) in order to test all possible routes through the level. However, the reflection use means that if often finds unusual stuff. For instance, it discovered that teleporting inside a wall (it discovered the notion of teleportaiton itself) allowed it to jump out of the wall, because my sample platformer code only checks if the player is touching the ground before letting them jump. It effecitvely found and used an exploit in the game code, and designed levels based on it. That’s pretty cool!
-
Dabeh, I feel you’re unfairly dismissive of this. This work was begun just a few months ago, and the proof of concept for this technique was just mechanic discovery for platformers using simple field alteration. We have plans to do major research in the area, looking at code generation, method invocation, class creation, as well as applying it to other genres such as RPGs and action games. But it’s early days. ANGELINA doesn’t understand difficulty because we’re talking about understanding something that is very complicated, something that we take for granted as humans, let alone game designers. The data from A Puzzling Present will help us analyse various generation metrics and work out if we can get ANGELINA to be more savvy in the future when it comes to making content.
Bear with us! I play games and love them just like you guys - I’m not happy yet, but we’re just getting started. ![]()
I really hope that this will lead to tools that can assist and inspire game developers - coming up with suggestions or throwing out quick jams on ideas you’ve had. “Hey, check out this variation I thought of on that level you just designed!” or “Hey I had this great idea for a new character class.”
We’re all in it together ![]()
If anyone wants to continue to chat, do follow me on twitter - @mtrc - check the website - gamesbyangelina.org - or email me! mike@gamesbyangelina.org
Thanks for being interested!
I’m not really too dismissive, although I may have been harsh. I like the testing and I’d like to see it more developed and to read more on how it works though :).
I’d also like to see more variety in mechanics, do you intend to introduce enemies or rather something that can cause “Endgames”? Spikes etc?(I’d be extremely impressed if ANGELINA came up with this idea on her own)
Difficulty in platformers, in my view, is mostly about timing. Couldn’t you test this in various ways? For example, the points between certain jumps required to get to the goal. If the goals jump doesn’t provide much lee-way to it then this would be difficult, maybe requiring extra-precision and if you fail this jump there is a chance of death(ie: spikes below) adding in even more difficulty. And then requiring these types of jumps in succession.
But, I’m talking about one part of a plat-former to test difficulty(You might eventually add in puzzles like black/white or as you mentioned, teleportation). There could be millions of variations based on how or what you/ANGELINA introduces to the game.
I’m not sure if ANGELINA already does it but I’d love to see it creating a level based on what it’s changed.
Some kind of live feedback that shows the level being made and tested would be amazing, like you start it and at a watchable rate it begins to build the level and see what mechanics work or something of the sort.
I like this idea a lot! I’ve made a note of it (and you!) and I’ll let you know if I manage to look into it.
Thanks for the rest of your comments - I definitely want to look into obstacles, lock/keys, pickups, items, switches and all other kinds of object generation. The next step is creating stuff for use in game levels, not just modification of existing code. That’s a big step though, of course!
Toast: Yeah I’d love to do a timelapse too. Maybe I’ll put together some code to export progress at stages through the design. I made a toy maze evolver for a lecture I gave that you could watch in real time and it was very cool indeed. Doing the same for this would be fun.
mtrc - I went back and re-read a few things. I noticed you mentioned using ANGELINA for RPGs (presumably, J-RPGs.) I love JRPGs!
I think a coherent, narrative-based RPG would be a bit harder to formulate than a platformer though, due to the inclusion of story, and the fact that in order to best build Willing Suspension of Disbelief, the game should be able to explain its mechanics not just as necessary to gameplay, but as relevant to the story (e.g. how Final Fantasy VIII explained the relationship of GFs and Para-Magic.) I would argue that almost certainly the human developer would be necessary to supply the story and exploration components.
What your AI could probably rather easily do, though, is the hard work of creating and designing encounters. For a non-leveled RPG like Thora, I’d assume the steps to be similar. Assuming a given state of the player’s party, create an impossible enemy, then provide the player some mechanic to counteract the fact that the enemy’s time to defeat significantly outstrips the sum of each player’s time to be defeated. I say a ‘non-leveled’ RPG, because a grind-happy player would totally wreck the presuppositions your AI would need in order to create a consistent level of challenge, which even you’ve mentioned she’s having a hard time with.
I’d be really interested to see how that works out.
It’s an interesting project, keep up the good work
… I’m curious how difficult it will become to simulate a more complex gameplay because the more subtle it becomes and the more variation there is in what the player might do, the more outcomes you have to test and analyze. Seems to me it would lead to quite a huge number of possible paths through the level especially if the level becomes bigger, since each next step is based on the one before?
I see a lot of similarities with Genetic Programming, actually; I’d be very suprised if this wasn’t at its core a novel application of GP.
Instead of just generating code that better-fits the fitness function, it’s also creating level layouts, and powerups as well. And, since these randomized situations are the output, it’s probably storing them somehow as well.
Me too! A real milestone in my gaming childhood was buying Final Fantasy VIII for the PSX. My first RPG of any kind, the first game that I tackled alone without my friends. I really fell in love with them. And the older, simpler ones have very basic worlds, mechanics, spell trees, and so on - ripe for autogeneration I think!
That’s very interesting. So I’d thought about the RPG thing before - I know a lot of great guys who work on narrative generation, and I have a few ideas for simple (hacky) solutions that aren’t brilliant. Often I find with ANGELINA that my research is really on the connections between generators rather than the quality of the generators themselves.
However I’d never thought of the bridge between narrative and mechanics before. And FF8 is a great example of that. Thanks for the example! I’ve noted it down.
Yeah, this is what I’d like to do. The interesting thing (and therefore research-y thing!) is that before we used impossible scenarios in the platformers. For RPGs its really about difficulty. Encounters rarely become impossible but they do get steadily harder. In some circumstances you’re given unique skills that change how you take on encounters (FF6 was great for these). I wonder if we could say to ANGELINA “Okay, you should have a 60% chance of winning a battle normally. This encounter has a 40% chance. Invent a character class that raises this to 60%”.
I really would love to look at that.
Yeah, this is a problem I’m facing already. I’m probably going to rewrite most of ANGELINA in the new year to refresh old parts of code, and improve the efficiency along the way.
It is! It actually began as a project looking at how to design multi-part evolutionary systems that designed things like videogames. But I got carried away… I imagine my thesis will focus on the applications of GP to game design (we’re using a special kind - ‘co-operative co-evolution’)
Thanks for the replies folks!
EDIT - Oh, also - I began learning Unity in November (it’s awesome, but 3D is haaaaard) and I notice that C# has reflection, the core component a language needs for me to implement Mechanic Miner in it. Watch this space…
.
Idea - you could always consult TV Tropes for useful tropes. It (might) be possible to have ANGELINA, or some future RPG-exhaling variant, create trope-generic stories.
Is Angelina single? Her algorithms sound sexy