this is john tringham's tech blog
Flash, flipbooks, Vectorpark and me

With the news that Windosill is going to be released for the Nintendo Switch I wanted to write a bit about Vectorpark and how much their work affected me artistically and educationally growing up.

Background - Early Flash

A bit of back story: back in 2004 I was 11 years old. The company my dad worked for had gone bust and laid everyone off, and he had stolen a bunch of office supplies on his last day. Me, my brother and sister were given company branded pencils for school and had fights with company branded stress balls. We had branded mouse mats and erasers and a couple of mugs.

Even at this point I had been showing signs of being a weird computer kid, so for me the best thing he stole was a CD copy of Macromedia Flash 5.

Macromedia Flash 5 (who’s future versions would become Adobe Flash in a few years) was a perfect IDE for an 11 year old. If you’ve never made anything with early versions of Flash before, the basic premise (as my 11 year old brain understood it) was this:

  • You’re making a flipbook, and you can add as many pages as you want
  • You can make movieclips, buttons and “graphics”, which were like special-purpose self-contained flipbooks that you could put in your “main” flipbook
  • You can add scripts to on-screen objects (or frames themselves) to get something to happen (like jumping to a different frame, or moving something on screen)

And thats about it.

Full Post
Wave Function Collapse Algorithm for Level Generation

In the last couple of months I’ve been working on a implementation of the Wave Function Collapse algorithm, which is for creating large patterns out of a selection of smaller tiles that can fit together. It’s kind of like playing the board game Carcassone, where there’s a grid of potential places a tile can go, and deciding whether the tile can sit in that position is based on whether the edges of that tile match the neighbouring edges. If you haven’t played it before, it looks like this:

The WFC algorithm very similar to just playing a round of Carcassone by yourself, but with a bit more forward planning about where you put your next tile. The basic gist is:

  • You put a tile down in a legal spot
  • For each of the four neighbouring spots, you work out a list of all the possible tiles that could fit there
  • You then do that again for all the neighbours’ neighbours, calculating which tiles could legally go there
  • Once you’ve worked out all the potential different tiles for each spot in the grid, you pick the spot with the shortest list of potential tiles
    • So if there’s a spot that can only accept one specific type of tile, you’ll end up picking that one
  • You then place a legal tile in that spot, and repeat the whole process over again with the remaining empty spots

You keep doing this until the entire area is filled up (or you get a spot that can’t be filled because it requires a type of tile that doesn’t exist - but if you have a decent variety of tiles then this shouldn’t happen often).

This algorithm isn’t simple, but it isn’t too difficult either - you just need to maintain lot of lists that specify what tiles are legally allowed in each position.

Here’s my version running on a regular square grid, using a basic set of “desert rock” tiles:

End result (with the background removed so it’s easier to see):

Full Post
Evaze Released!

I’m happy to announce that I (finally) released Evaze!

Evaze was originally a Ludum Dare entry from a couple of years ago, and I revamped it, spiced it up, and made it a proper game.

It’s a fast-paced puzzle-action game where you slide rows and columns of a maze around in order to get around, while avoiding the bad guys.

It’s a simple and fun little mobile game that you can download for free!! That’s right FREE

It’s my first independant commercial game - a relatively small game, but I like it a lot.

And if you want to check out the credits page with more info about how the game was made (and a big list of names), head over here