Bisby's Escape v1.2.2

I just deployed an update to Bisby’s Escape, the game that I made a few months ago for the 2016 7-day roguelike challenge. I fixed a bunch of bugs and added animated movement and sound effects. No real gameplay changes yet, but I think the animation and sound makes it a lot easier to read what is going on on the screen.

I’m planning for the next release to have new types of crates and more varied level generation, but I wanted to get these features in first.

Bisbee's Escape Screenshot

Play Now

IRDC 2016 Highlights

So the other weekend I attended the 2016 International Rogulike Development Conference. Had a really good time. Some highlights:

  • Jason Grinblat’s talk (slides) on using Markov chains to create procedurally generated books in Caves of Qud. I especially liked the idea of adding PCG clues into the Markov chain to make researching in these books an actual gameplay mechanic. Also, I never realized Markov chains were actually so simple to get started with. Makes me want to make some sort of bot or web toy that uses procedural text.

  • Jeremaiah Reid’s talk about Time Travel (slides) in The Only Shadow That The Desert Knows. The challenges of creating not only a time travel system but thousands of years of PCG history to travel through were fascinating.

  • Playing Killer Queen during the breaks. Not a roguelike but the machine was there in the NYU game center and how could anyone resist such a neat game.

  • Brian Bucklew’s talk (slides) on Caves of Qud AI. The part about how they made AI able to semi-intelligently use items without coding a huge nested if block kind of makes me want to make a game with items.

  • And of course meeting new and upcoming roguelike developers and getting to check out some of their cool works-in-progress was awesome.

Roguelike Celebration is coming up in September… The speaker list looks amazing. I really want to go but not sure if making a weekend trip all the way to SF is something that will happen. Might have to settle for watching the live stream. We’ll see.

Trees and nanoKONTROL

A few days ago, I got a KORG nanoKONTROL2 to play with. It’s supposed to be for music stuff, but I just like all the sliders and dials.

I wanted to hook this up to my fractal tree stuff to control a little forest with all the sliders and dials. The demos folder for my tree library was getting a little bloated so I wanted to break out the demos into their own repo first. And to do this properly I decided to convert the library from just a script that creates a global object into an npm module. I settled on webpack with babel-loader to pack things up. I decided to go with babel-loader so I could use the ES6 module syntax.

One thing I got hung up on while trying to get this setup working was when I couldn’t figure out why my module was only exporting an empty object. And when I tried to use it I just got lots of foo is undefined errors. It turns out you can’t just export default something from your main file and expect webpack to know what to do. You actually have to configure webpack to export a module. Eventually, I set up the appropriate config values, got all the demos working off the module, and moved them into a new repo.

With that done it was time to get ready to hook up the nanoKONTROL2. Now, by default, the trees that come out of my library can have a lot of randomness, which isn’t good for smooth animated transitions between values. But a while back I made a creepy animated tree with a function that is constrained to only creating deterministic trees. It had a nice simple interface where you just pass in an array of numbers with values between 0 and 1 and you get a tree. This was inspired by ideas from Kate Compton’s ProcJam 2015 Talk.

So now I just had to hook up the values from the sliders and dials to some trees. I used this excellent library to do most of the hard work there. And here’s the result.

If you have your own nanoKONTROL or nanoKONTROL2 you can try it yourself in any browser that supports webMIDI. (please plug in your device before loading the page.)