
The theme for Ludum Dare 35 was "shapeshift", and I made Miss Turner's Magical Pet Swap Shop, a game about transforming animals into other animals! I'm happy with the game and the feedback I've gotten about it so far. Here's my summary of what went well - and what I could have done better.
What did I do right?
Choosing the right idea
There are a few important criteria I try to keep in mind when deciding which idea to pursue for a Ludum Dare game:
There are a few important criteria I try to keep in mind when deciding which idea to pursue for a Ludum Dare game:
- Cute and fun: I want to make a game that I would like to play.
- Interesting and unique: LD is my chance to try out new ideas, and innovation is the best way to make a game stand out (other than amazing art, at least.)
- Feasible: I have to be able to get something done and reasonably polished in time, which means no overly complex systems or high asset count.
Careful planning & architecture
Once I decided to make a game about transforming animals, I set out to do some research. I brainstormed animals that I could include and sketched out what they might look like in my game. That allowed me to pinpoint which features would have to change, and how they would morph. Finally, I put together a sketch of how all the animal parts would connect. I went to bed on Friday without having written any code or created any art, but feeling good about my plan for the rest of the event.
Once I decided to make a game about transforming animals, I set out to do some research. I brainstormed animals that I could include and sketched out what they might look like in my game. That allowed me to pinpoint which features would have to change, and how they would morph. Finally, I put together a sketch of how all the animal parts would connect. I went to bed on Friday without having written any code or created any art, but feeling good about my plan for the rest of the event.
Resizing animal’s body parts is the core of the game, so I took time to set up the code carefully so that setting up the parts would be as easy and bug-free as possible. I defined a BodyPart superclass so that subclasses only had to implement a few functions:
- createAnchors() // sets up the anchors that other body parts attach to, so that (for example) the head stays on top of the neck as it is resized
- createProperties() // sets up the properties for the player to control that affect this body part. For example, here are the properties for the legs: { legWidth: {min: 20, max: 60, control: "x", describe: ["legs", "thin", "thick"]}, legHeight: {min: 50, max: 150, control: "-y", factor: 0.75, describe: ["legs", "short", "long"]} }
- redraw() // redraws this body part based on the current value of the relevant properties
What did I do wrong?
Getting stuck on one problem for too long
My original plan included two more ways that the player could transform the animal: patterns (tiger stripes, giraffe spots, etc) and features (horns, manes, etc). I had an idea about how to apply patterns by using canvas blend modes, but when I started working on it, I was stumped on how to make it work with Phaser’s graphics system. I stubbornly worked on the problem for hours, making only slight progress, until I was finally forced to give up. At that point, I was low on time and couldn't implement the animal features either. I should have gone for the more straightforward task first, and I should have abandoned the problem when I wasn't making progress quickly enough. I've found that the compo's 48 hours (or the jam's 72) is enough to get a lot done - but not when you work on the wrong things!
My original plan included two more ways that the player could transform the animal: patterns (tiger stripes, giraffe spots, etc) and features (horns, manes, etc). I had an idea about how to apply patterns by using canvas blend modes, but when I started working on it, I was stumped on how to make it work with Phaser’s graphics system. I stubbornly worked on the problem for hours, making only slight progress, until I was finally forced to give up. At that point, I was low on time and couldn't implement the animal features either. I should have gone for the more straightforward task first, and I should have abandoned the problem when I wasn't making progress quickly enough. I've found that the compo's 48 hours (or the jam's 72) is enough to get a lot done - but not when you work on the wrong things!
Careless mistakes
With such a short amount of time to work, it's hard to avoid bugs and other issues. But, I was in such a rush to finish that I made two obvious mistakes. A friend brought the first one to my attention...
With such a short amount of time to work, it's hard to avoid bugs and other issues. But, I was in such a rush to finish that I made two obvious mistakes. A friend brought the first one to my attention...
I had accidentally uploaded a version which I made for taking screenshots, which had only 2 animals instead of 15! Luckily I was able to upload the correct version quickly. The second mistake took me a while to find out about. Commenters were complaining that they couldn't make the legs thick enough to satisfy the customer - it turned out that I had written "thin" where I meant "thick" in the parameters for the customer's dialogue. Another easy fix - but I feel bad for the players who got stuck in the game because of my typo. I definitely should have played through the game more before submitting it so that I could catch all these silly mistakes!
There are plenty of things I'd like to improve about Miss Turner's Magical Pet Swap Shop, but I'm happy with with how it turned out! If you participated in Ludum Dare, you can play and rate the game here.