I made another trip up to Vancouver this week to give my encounter design talk to another developer we’re working with and once again it went very well.
As in the past, though, once I get thinking about this topic it’s hard to stop. This time, my ponderings have inspired me to do some related-fields type research and it’s been fascinating.
Basically the more I think about this topic the more I become convinced it should be possible to procedurally generate good combat encounters, including the level design the encounter takes place in. Because of this most of my research has been looking into procedural content generation, artificial intelligence, and the like.
Here’s what I found, along with a few words about why I found it interesting:
Right off the bat, I found a wiki about procedural content creation that gave me a shit ton of links:
http://pcg.wikidot.com/pcg-algorithm:map-generation
Through this I was turned on to a bunch of articles about random dungeon generation for roguelikes. Most of the algorithms I didn’t like much, but here’s one that was very interesting:
Over-engineering dungeon generation
The link goes to a forum discussion about the methods the author used to generate his random dungeons and ensure the were all completable. The article got me interested in learning more about a few of the concepts he refers to, like Perlin Noise, A* Pathfinding, and Delaunay Triangulation
Perlin noise and Delaunay Triangulation were interesting to read about, and could be useful in generating random level layouts, but reading about A* got me thinking about other uses for the tech, like determining what nodes in a grid might be best for placing enemies in random setups. That thought led me to research Potential Fields, which is VERY interesting, and just might be useful for what I have in mind.
In the end though, I think it’s mostly me geeking out about cool programming crap. It’s good to know about the stuff I’ve learned (might come in handy for me) but I’m still not sure I have what I need to design a system that procedurally generates good encounters complete with level design. If I do figure it out, though, my plan is to code up a demo as a proof of concept. Who knows, maybe an epiphany will come soon.
That’s not actually Perlin noise, by the way. Perlin noise has some very specific properties. That’s just one way to generate noise. Perlin noise is _so_ 1990s anyway. The new (sorta) hotness in noise generation is sparse convolution noise, with various different kernels.