LIMBS

RETURN HOME

Software

At this point, I had finished my GCSEs and had moved onto other things and I had chosen not to continue Art into my A Levels. But despite this, the LIMBS project returned in a major way in the form of a game for my Computer Science A Level coursework.

I had already considered how I might turn the 2D limbs art into a game; the Computer Science coursework allowed me to actualise that idea.

The art creation tool is now complete, you can download and play it here.

I chose to develop the game in the Processing IDE with Java. I realised that it wouldn’t be as simple as a tilemap editor, instead the game needed to autotile. This meant I took particular inspiration from Townscaper, which is similar to my project as it is essentially a very complex autotiling system, without any particular goal besides creating. The A Level required that I create a write-up documenting each stage of development, early designs and errors I encountered. This wound up being very long and is quite tedious, so I won’t share it here, instead I will go over some points of interest.

I started by outlining the requirements for the project and designing mock-ups. Here are the initial mock-ups.

titlescreen with three buttons: creative, puzzle and quit, and a tessellating LIMBS background. creative mode, a cursor with limbs-shapes, an option button and buttons for different colours or palettes. A palette menu, featuring 5 different palettes each made up of 4 colours A settings menu with a grid option, the ability to change the width and height, export image or quit to menu.

You can see that these are strikingly similar to the final game, that is because I took a lot of the assets and design cues from these early mock-ups.

Next, I came up with a way to work out which tile a given space should be, by checking the four surrounding tiles to see whether they are occupied or not, leading to 16 possible combinations.

a diagram with 16 hashtags numbered 0 to 15, each stores a unique placement of dots on the upper, lower, left and right quandrants.

Each uncoloured space indicates a unique tile on the tilemap and blue and green are each unique tiles. This led to the following tilemap:

11 tiles on a 5 by 3 grid. Some are corner pieces, others straight pieces and others hands.

Then I implemented a basic menu and autotiling system with the above tilemap.

menu leads to black and white early autotiling system

Next, I implemented a size setting screen along with the ability to pan the canvas and zoom in and out.

Same as the previous build, except that there is now a canvas that can be manipulated

My next goal was to add 3 special case tiles.

Leftmost shows boots, centre shows hands connecting to themselves in a completed loop and rightmost shows a hand resting on the side of its arm.

The first are boots, the second are hands connecting to themselves in a loop, and the final one is the hand resting to the side of an arm. In the end, that final one was never implemented, because I don’t think it looks particularly good, and it also would have been quite difficult.

The boots were quite easy to implement, the self-holding hands on the other hand proved a lot more tricky. I needed an algorithm that would go through a shape and check whether it formed a complete loop. This function was probably the trickiest algorithm to implement overall, and I kept returning to it to fix new errors I encountered.

A hand coming out of a boot

One interesting quirk about the way I implemented boots in this game, is that it means shapes are no longer either arms or legs. You can now have boots coming out of one end and hands coming out the other, whereas if you look across all previous art, this never happens. This means my program allows people to make monstrosities like that.

Anyway, once those two special case tiles were implemented, I got to work implementing 3 different colours to use and buttons to pick between them. After implementing that, I chose to implement one more special case tile, which is two different coloured shapes holding hands. I think this one adds a lot to the final game.

lots of different coloured limb-shapes holding hands together

At this point, the tilemap had become significantly larger.

A grid of 4 by 8, it starts with the same tiles as in the previous tilemap, but goes on to include tiles for boots, self-holding hands, and hands being held between different colours.

Now a simple settings menu had been implemented, along with colour buttons and different coloured tiles overlapping each other, the program was already working very well.

Three different colours available, showcasing the different ways that the limbs can interact, including the special case tiles.

Over the next stage, I implemented different palette options and a scrolling background for the main menu. Then, I redrew the tilemap at a higher resolution four different times with slight variations, so that each time a tile was placed, the program randomly picks between one of the four tilemaps. I think this adds some much-needed variety to the look of designs, and it allows the designs to be more faithful to the original.

Here are all the unique tiles across the 4 tilemaps, excluding rotations.

In the next stage, along with sound effects, I added the ability to import and export designs. In this version, you can export your design as a .PNG file, or you can export it as a .LIMBS file that can then be imported again and edited.

If you are curious, you can read about the specification of the .LIMBS file extension here. I am proud to have created a unique new file type for this project.

The final major addition I made to the game, was adding a “tessellation” option, this allows one design to connect to itself on the other side of the canvas. This is definitely my favourite addition, I think it elevates the art in a way that couldn’t easily be done as papercut artwork.

a tessellating design with the lavender theme a tessellating design with the default theme

Finally, using the software, I created a set of 7 inbuilt demo designs that can be imported for inspiration. Here are some of them.

Two limbs shapes intertwined and holding hands over a heart filled background A neon themed piece with limb-shapes interlocking A large piece (64 by 64) with blue limb-shapes filling the canvas over a yellow background A lavender themed piece that can be tessellated. Limb-shapes connect to each other through all sides of the artwork A vertically tessellating piece using the default theme.

Now the game was done. I found playtesters and then wrote an evaluation. The playtesters gave lots of useful feedback, and then I submitted it. In the end, I got full marks for the coursework!

Finally, after my A Levels had finished, I returned to this project during the summer to improve it and address problems raised by playtesters.

The changes I made include:

  1. Adding a “controls” screen,
  2. Allowing users to navigate the canvas without the mouse,
  3. Changing the title image,
  4. Adding a slider to the size setting screen, and
  5. Converting the graphics to vector format, meaning that designs now save as .SVG files instead of PNGs. Now designs export faster and are of much higher quality.

That is the version that you can play here right now!

Thank you for reading this far, and if you do use the software to make a design, I would love to see it! I am @leo9 on Discord if you want to send it to me.

Oct 2021 – Aug 2024
Leo9.

Continue to LIMBS on itch.io -> <- Return to Sculptures