First we had Procedural Invaders. Then we used them fill up space with Fractal Invaders. But we’re not quite done yet! This time, let’s mix things up a bit and make Invader Fractals.

Today’s post is a follow up to Sunday’s post Procedural Invaders. This time around, we’re going to work through two different space filling algorithms in order to eventually generate something like this:

Today’s post comes from a long line of ‘inspired by posts’ all pretty much leading back (so far as I can tell) to this post by j.tarbell: invader.procedural from 2003.

The basic idea is that we want to generate ‘invaders’ in the style of space invaders. Except we don’t want 10 or 20, we want tens of thousands. So how do we do it? Well, take a look at this:

# Ludum Dare 30: Demo mode

Quick update this morning: I managed to get a ‘demo mode’ working. Now when you first start the game, the boxes will be whizzing around in the background giving you an idea of what you’re about to get yourself into!

# Ludum Dare 30: Programmer art and simple AI

A few hours later and we’ve already finished (or at least made good progress on) two of the goals that I was hoping for:

• AI players; at the very least one that moves randomly, but optimally several different kinds
• Pending the previous, a selector on the options screen that can turn each player either off, on, or to any of the current AIs
• Stylings around the page; probably some sort of thick border that bleeds a little in and out, looking different per player

# Ludum Dare 30: 24 hours

Here we are, 24 hours into the competition.

A lot of the last few hours has been spent doing a fair amount of restructing. Before, I had a single ‘thread’1 for each of the tiles, along with another thread listening for user input. Unfortunately though, that lead to all sorts of race conditions. Specifically, whenever two tiles overlapped, it was often the case that one was doing the falling step (which copies from one internal buffer to another) while the other was in the swap step (which copies from tile to another). Then after the first finished, it would copy the second buffer over… overwriting anything that had been swapped.

Oops.

# Ludum Dare 30: Hints of a game

We’re getting there. 18 hours in and I have the first hints of what might actually be a game…

# Ludum Dare 30: Sandbox Battle

And here we are again. Ludum Dare. Taken directly from their about page…

Ludum Dare is a regular accelerated game development Event. Participants develop games from scratch in a weekend, based on a theme suggested by community.

More specifically, the goal is to make a game from scratch in 48 hours. You’re allowed to use publicly available frameworks and code libraries, but no art or other assets. Previously, I missed the original start time. So although I made my game in 48 hours, it didn’t qualify. This time around, I’m starting on time.

If you were paying attention when I posted part 2 to GitHub (pegs.rkt), you might have noticed a function I hadn’t talked about: play