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.
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.
Each uncoloured space indicates a unique tile on the tilemap and blue and green are each unique tiles. This led to the following tilemap:
Then I implemented a basic menu and autotiling system with the above tilemap.
Next, I implemented a size setting screen along with the ability to pan the canvas and zoom in and out.
My next goal was to add 3 special case tiles.
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.
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.
At this point, the tilemap had become significantly larger.
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.
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.
Finally, using the software, I created a set of 7 inbuilt demo designs that can be imported for inspiration. Here are some of them.
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:
- Adding a “controls” screen,
- Allowing users to navigate the canvas without the mouse,
- Changing the title image,
- Adding a slider to the size setting screen, and
- 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.