About Joana (twitter: @sorcerystory)


Ludum Dare 24

Joana's Trophies

Joana's Archive

Ludum Dare 24 Postmortem: Golden Eggs

Posted by (twitter: @sorcerystory)
Tuesday, September 11th, 2012 4:11 pm

It was a hetic weekend, but I managed to wrap something up for the Ludum Dare 24. And the result? Golden Eggs.

When the theme of Evolution was announced, I wasn’t exactly sure of what to do. Truth be told, Evolution was one of the themes I had voted down. I just didn’t have that many ideas to go along with it. But I was bent on carrying it through. Doing something you like while within a theme you aren’t especially lukewarm about is a challenge, but you can learn to like it all the same. At least I did!

At first, I didn’t know what to do. The only things that went trough my head were the immediate, overdone things: dinosaurs, DNA manipulation, all that jazz. But then, it hit me! The most prominent game I’ve played around the subject was the chocobo breeding mini game in Final Fantasy VII. Normal chocobo could breed and, using foods and other items, breed higher tiers of chocobos that could then be used in several tasks. I remember it being so complex that I looked up a guide online and was absolutely dismayed by how big and detailed it was back in the day.

With that little thought in place, I wanted to root the player in a more mundane setting (and also not incur in copyright infringement). Since the original mini game takes place in a farm, I decided to use it as a base for my game. And instead of chocobos, chickens and roosters took their place! And of course, everyone knows that the chicken who lays golden eggs is the best! After that, I needed to have a growth mechanism, some way to make them progressively better, and so the idea of feeding them better crops was born!

At the time I didn’t even realize how similar it could be to other games out there. People pointed out Farmville and Harvest Moon in the comments after I submitted the game, but since I never played any of them, I wouldn’t know. Thing is, I was so excited with the idea at the time I didn’t even look back and started creating the game!

Since I’ve been using Unity3D, I decided to try my hand at it in a different context than I’m used to: pixel art. The game took a while to make not because it was incredibly complex but, as I came to realize, it’s tricky to do pixel art in Unity. But when you know what to do and what to avoid, it gets simpler to do it, and that was the main reason for doing this blog post.

So, what went well?

1. I managed to nail a decent art style fairly quickly.

I never did pixel art for a game before, and wasn’t sure of how it would turn out. After two tries, I finally got a simple style I could create art quickly. Lowering the number of pixels from my initial try also helped in this regard. Considering the comments I got for the game, the art was the best thing about my entry (not that I had much else going for it, truth be told), and people really liked it.

 ->       -> 

2. The core of the game was done by the first day.

By the end of the first day, I already had the systems for animating the characters and other props already done. The animals wandered around and the player could be controlled. The second day was to be used to get the gameplay flowing.

And what didn’t go so well?

1. I used sprite sheets.

From the get go, I wanted to use sprite sheets to increase the game’s performance and to learn how to do it, since I’m making another game that could use the technology. I have never used sprite sheets in Unity3D before and, little did I know, turns out that they’re not the best things to use, according to its developers. Even worse, the slight errors in calculation during the texture mapping ended up being even more glaring due to the size of the textures (16 x 16 pixels). This wasn’t a big problem for full blocks, but became very visible in partially or almost completely transparent blocks, such as the fences and the grass:

But the change to single textures for every sprite and animation frame ended up being too complex to do in time, since the code was already done for sprite sheets. I’ve fixed the problem since then, but in the end, I ended up having to submit the game with the glitches because of this.

Even worse, I couldn’t get over this glitch and tried many things to fix it without changing the system I had coded to no avail. I lost precious time and ended up not finishing the core gameplay, which I might have finished if I had given up after the first or second try to fix it in the first place. Thing is, it was really hard to stop trying to fix it, even tough I knew I was loosing precious time. Human nature, I guess.

2. I didn’t prepare enough.

Despite the fact I thought of the game idea right at the beginning, I could have saved some time by thinking of some ideas for each theme and gameplay to go along with them. I had some ideas for the themes I liked, and didn’t think too hard on the ones I disliked, which ended up being a problem since it was one of the themes I disliked that ended up winning.

Also, I was very reluctant on choosing a tool to make the game. I knew I wanted it to be pixel friendly, but ultimately decided to use Unity3D over Gamemaker in order to test its capabilities. Also, according to the many tips on the Ludum Dare site, the web is a preferred platform and Unity3D, having web publishing available in the free version (unlike GameMaker), ended up pushing me towards it even more.

I also could have probably saved a lot of time by creating the animation system before hand, but I wanted to see what I could get done from scratch.

In the end

Being my first go at a gamejam, and a Ludum Dare, I really enjoyed the experience. Most importantly, I learned quite a lot of what to do and avoid when using pixel art in Unity3D. Despite everything, I liked my entry enough to continue working on it until I get it to the state I wanted it to have from the beginning. After that, I’ll continue with my usual game development woes. But, before that, time to reply to the comments on my game and rate some other games!

[cache: storing page]