The big news this week is that the Electric Shocktopus and I will be at the Boston Festival of Indie Games.

You can read all about the festival here, here, or here, but the name sums it up pretty nicely. The Boston area is a hotbed of indie game developers, all working on their own neat thing. But, in spite of the monicker ‘indie’, we have a pretty strong community of game devs. There are monthly meetups, collective workspaces, conferences, and so on. And there’s also a festival for the public: Boston FIG.

This is the second year of the festival, and it’s looking like it’ll be even bigger and better than last time. The core of the festival is a few huge rooms of game developers (like me) showing off their creations. Last year thousands of members of the public came by to play games. I was hunkered down in my booth (ahem, table) passing out iPhones as fast as I could so people could check out Agent Higgs. There are mobile games, console games, browser games, tabletop games, you name it. I hear this year there’ll even be live action games. So yes, a lot of games.

Other notable pieces of the festival include a few keynote speeches, game-related films, a video game music concert (?), and an 8-hour long game jam.

And somewhere in the midst of all of this chaos will be little ol’ me. Which means, decoration is key to the game. Last year, I made posters and colorful particle blocks to draw people to my booth.

I have a couple weeks yet to figure it out, Boston FIG is happening on Saturday, September 14th. Plenty of time to learn to knit. The festival is entirely free, so if you’re in the area, come on by and check out my latest creation.

I’ve been working a lot recently on a little piece of the Electric Shocktopus called ‘Level Design.’ And by little piece, I mean a tremendous one that makes or breaks games.

It’s Alive

In the case of the Electric Shocktopus, it is comically easy to just make levels. The game already has a level editor, so I load up a blank level and use the mouse to add or remove tiles. I get to play through the level constantly as I make it — making sure the ledges are at the right height, the jumps are jump-able, and the level is fun. Simple.

Back when I was working on Agent Higgs, I took this to an extreme, and created *random* levels. I just made a whole bunch of them, and trashed the boring ones — saving maybe one out of a hundred that was actually fun and challenging. (Speaking of this, to give the same treatment to Velocity Raptor, check out this python code ARP created.)

And as easy as that, we’ve got a great level! Right?

Testing the Level

Wrong! Turns out, at least for me, designing levels is less of an art than a science. I do my best to make a good level on my own (the art), but it all comes down to testing (the science). Which is why I’ve had so many people play the Electric Shocktopus. Playtesters, forum-goers, other developers, anyone. I see what works — and more importantly what doesn’t — and tweak the levels accordingly.

It takes a *lot* of trials to figure this all out. The game, mind you, is currently on version 0.87.

There was a great example of this process this past Monday. I brought my game to a meetup of local developers so they could try it out. Overall, they quite enjoyed the game. Great to know, but the most useful piece was watching them play.

How’d it Go?

In general, I’m always surprised by how *hard* the game is. With any of my games. This is a common issue — because I’m exceptionally good at it. (Not to brag) I know the systems backwards and forwards. I’ve played it more than anyone else. And I know what the ‘trick’ is to each level — since I added the trick. So when I watch other people play, I can get a much better sense for what the game is like for a ‘regular’ person.

The result? They died a lot. A lot. One guy destroyed well over 300 Shocktopuses before beating a certain level. It was like watching him play Super Meat Boy. Players would get so frustrated, and yet they kept coming back for more. They were driven to beat it, refusing to give up, demanding to get all three stars in a level. It was amazing.

And while I stood there and laughed (because frustration is *very* fun to watch, especially when you’re the one causing it), I made mental notes about things I needed to change. After all, I’ve gotta start working on version 0.88.

In the in-development game (ahem, ~~The Electric Shocktopus~~), the title character can charge himself and fly across electric fields. But how do those electric fields get there in the first place? Well, since it is a true simulation, we (I? The computer?) have to compute them.

The Simulation: Part 1

Electric Fields are an easy matter, right? Say we’ve got a positive charge in the middle of a level. To find out the electric field around it, we turn to Coulomb’s Law, something we all learned in high school.

The field points away from the electric charge, and the strength drops off as the distance squared. Simple.

If we have multiple charges, thanks to the superposition principle, we just do this for each charge — then add it all up. Straightforward, simple, perfect.

But that’s not the end of the story.

The Simulation: Part 2

Because in the game, I want there to be conductors. And these blocks of metal affect the electric field. The conductor, you see, is filled with positive and negative charges. Put another positive charge next to it, and the negatives in the conductor crowd toward it. Unfortunately, calculating these effects is no easy matter. Only in very symmetric and special situations can you even write an equation for this.

Enter the poorly named ‘Relaxation Methods.’ Since we’re on a computer, this is a way to numerically figuring out what the fields should be. And we’ve gotta crunch a lot of numbers to do it. Basically, you turn the screen into a grid (which is easy, since the game is already built on a grid). Then you take a guess at some initial values of the field, the ‘rough draft’ so-to-speak, which can be completely wrong for all we care. The strength in this method comes from revisions. You take the grid of bad values, and go through, do the number crunching, and make them slightly better. And then you repeat – a lot. Fifty times, a few hundred times, something in that ballpark. And eventually you get ‘close enough’ and stop.

Turns out, this isn’t too bad. On the 2D grid of the screen, the game can generally figure out the electric fields in about a fifth of a second. And since this is a 2D game, that’s all we need. The third dimension is irrelevant, right?

The Simulation: Part 3

Wrong. It turns out, that third dimension affects us whether we like it or not. Even if we think we’re dealing with a 2D grid, the third dimension is assumed. And that third dimension is very boring — nothing changes as you move along it. It’s just a whole line of carbon-copies of the screen. It’s as if every point charge we place extended in that direction and made a line of charges. And a line of charges gives a very different field from a point charge:

The force drops off more slowly, so stays stronger even further away (it falls off as the distance, not the distance squared). As you can tell by the face that the Shocktopus is being repelled back into a wall. So what we think of as ‘point’ charges in this method are not point charges at all.

The solution? Do the Relaxation Method on a 3D grid. It’s a whole lot more calculations (instead of 50×50 points, we have 50x50x50 points), and takes a few seconds to compute the fields. But, for all that, we can finally have point charges and conductors coexisting in the game.

Moral of the story? Nothing is as easy as you’d expect. The 2D game is actually a 3D simulation. Shocktopus *could* move in the third dimension to skip past barriers, he just chooses not to. He likes the challenge.

The Electric Shocktopus is marching ever-forward. And just recently, I added a big piece to the game: the music!

In the past, I’ve sourced my music either from free places — or made my own. Occasionally I bought some pre-made tracks. But not this time! For a game like ~~The Electric Shocktopus~~, I needed something bigger. Something better. Something, dare I say, awesome.

So I went to Brian Allan Holmes, a video game composer. He’s done some great game music in the past. In fact, he’s the guy that made my favorite flash game music ever — for Burrito Bison. Years after playing the game, I can still hum the tune. I’ve never experienced that with a browser game before or since. Take a listen to some of the Brian’s music for Burrito Bison:

I told him about Electric Shocktopus, and he set to work making some original tracks to fit the tone and style of the game. If you’ve played the prototype so far, you may have heard some early versions of these tracks. It’s epic, rock-y, beach-y, and great to listen to! I’m delighted with the tracks — and it makes working on the game a whole bunch more fun with the Shocktopus music playing through my headphones.