In the Beginning
Going into the competition I didn’t really have any direction. After hearing the theme and looking at the kitten meme and the Zelda text I figured I would start off with an elf kid going into a cave and receiving a kitten rather than a weapon, but other that that I had no idea for gameplay or anything. I knew for tools I would use CoffeeScript and the PixieEngine (I have been creating PixieEngine for exactly these kinds of competitions and wanted to put it to the test). If you’re looking to try out a new development environment for easy publication to the web I recommend checking it out. It’s free! It’s still a bit rough around the edges but with your feedback we can make it better.
It was quick to get the initial level and cave in but I wasn’t sure what direction to take the game. I spent several hours on animating the sprites, drawing the kitten from reference of the meme. Art isn’t my strongest suit but spending time on it gave me time to think and I definitely could feel myself improving. After sleeping on the theme the first night I knew that I didn’t want to just have the cat act as a weapon, because that would be pretty plain and boring. I decided that it would be cool if you had to take the cat around to different dungeons and work together to solve puzzles. I had the idea to make the water impassible for the kitten around this time so that the player and kitten would need to work together to access different areas. I also spent some time getting the mew to sound right in SFXR.
I really wanted to focus on the emotional attachment to the kitten and to make it feel like you were helping each other. It is for this reason that the initial cave the kitten goes into narrows symbolizing a feeling of cramped/claustrophobic danger. This culminates when the kitten becomes trapped in a waterfall and the player is required to submit to entering the water and becoming helpless. Then when the kitten floats back out down the stream the player is given control of the elf character and must rescue the helpless kitten. The relevant psychology is that we develop good feelings towards those who we do favors for (similar to Portal’s Weighted Companion Cube). These locations, actions, and even the sound of the mew, were all designed towards the goal of creating an emotional bond.
The bombs were an ok addition, but didn’t have very much depth. It seemed like near the end of the game (especially at the ending) there was plenty of room to create a wide variety of levels and puzzles, but I had just solidified the core mechanic and core emotional experiences and the clock was still ticking down.
My brother was in town and late Saturday or early Sunday, in the course of viewing the game he came up with the idea for the ending. I spent several hours Sunday grossly copy/pasting and hacking the functionality in. This cost me a bit in terms of level design. An additional cost of adding screens was due to some excessive manual steps (like hand coding doors). In the end there were maybe 1.5 dungeons and 1.5 puzzles, but people really enjoyed the ending so I think it was a decent trade-off. As the level editor and game object tools improve it should become easier to add more levels with fewer manual steps.
All in all it went pretty well. I didn’t stay up too late or stress out much, but the time limitations were significant. Next time I should make a stronger effort to discover a fun core mechanic sooner to leave more time for level design. The risk of this is that I may lock down the mechanic too soon, before it is actually fun, but I think that’s the main conflict throughout game design.
The pixel editor, level editor, and sound editor integration in PixieEngine really helped me get a playable prototype up quickly. I was able to get a guy on the screen and moving around in minutes.
The API for many of the core components was simple to use. If I wanted to play a sound I would create it in the embedded SFXR, then call it by adding
Sound.play("mew") at the appropriate place in the code. Similarly for loading sprites.
The engine Object Query Language was great for hacking together quick functionality
engine.find "Cat" all came in handy.
Experience with CoffeeScript and the PixieEngine system was also a big plus. I knew what the strengths and weaknesses of the system were and was familiar with the workarounds (like using git integration to copy files to get around the missing “Save As” feature).
Publishing to the web was immediate and 100% hassle free because the entire engine is online to begin with. I didn’t have to spend anytime thinking about packaging or distribution.
I actually got to make a serious attempt at sprite animation, and some of the two-frame walk cycles actually look decent. Also the things I was drawing basically looked like the things they were supposed to. Still room to improve immensely but so far a personal best.
As a home grown engine there were many parts that were still rough around the edges. The tilemaps and game engine had no built in concept of rooms, persistent entities, and transferring state from one room to another, so I had to just hack it in.
The file management was similarly rough: there was no “Save As” (though there is now because it was my #1 issue)
Our animation/model system isn’t as integrated as the sounds/images/tilemaps so I had to hack together my two-frame walk animations by hand.
Still don’t have an integrated music editor. I was able to do all the art and (most) sound effects from within the editor suite, but had no option for music. I really want to make some sort of online Mario Paint Composer style editor, but realize that it would be a pretty big project in its own right.
The lack of a shared “object toolbox” of all the classes of objects was a pretty big negative. This meant that for each screen I had to recreate the tiles by dragging them in, and manually setting their class and data properties. This especially sucked for doors where I needed to hand type the
destinationPosition. The good news is that this is the next feature on our list and once it is fixed things are looking great!
Because I coded in PixieEngine, everyone is free to view the source, fork the game, make alternate levels, and more. (Though the engine is not quite “easy to use”. Your feedback is greatly appreciated!).
Though I wasn’t able to get in all the levels and puzzles I had hoped for this was still a personal best LD for me. I have had a great experience this LD and am looking forward to the ones to come. Additionally, all the feedback was helpful and it was nice to see that people enjoyed the game. If you haven’t yet, please play through and let me know what you think!