Maybe you’re like me. Maybe you’re not really an artist but you need to fulfill that role for the sake of your project. Or maybe you don’t know how to level design, or code really well but someone has to do it, and that someone is you. Reiteration is a valuable process, but it not only polishes the game, it improves your skill your learning the skill as is to the project being better.
Bunny to the Moon has been in development for over 4 months now. Aside from life and other obligations getting in the way (and a pinch of your all purpose procrastination); the reason it’s taking this long is the process of learning: failing and reiterating.
• Finding the visual style for Bunny to the Moon
I started the game with pixel graphics. I figured this should be the easiest approach even though I’m not a huge fan of the look. It took me several days and countless reference images to get to a decent looking bunny. And I completely messed up the ears flapping animation. It looked like two fat spaghetti twisting.
Pixel graphics quickly proved to be more trouble then they’re worth for me. I was looking for something I can produce easily and quickly, something that won’t highlight every mistake I make and something I can reuse a lot with a bit of tweaking in Unity.
However rotating and resizing sprites in Unity made them look messed up. That called for creating pre-rotated sprites, which in turn required me to draw them from scratch instead of just easily transforming them in Photoshop.
Besides I wasn’t really happy with a generic, ordinary looking bunny I created, even though I liked the little guy quite a bit.
Halfway through development I decided to change the style completely and went on to create new bunny, underground, forest and sky sprites.
Most of the graphics took three or more passes to get somewhere where I was satisfied with them. Sometimes I just didn’t like how they looked like, and other times I had to change and simplify the graphics to have them fit better into simpler colliders.
• Collider performance problems
As I mentioned in a previous blog post, I messed up the colliders a lot.
I used polygon colliders almost everywhere and the performance hit on phones was insane. I wasn’t paying much attention as everything ran smoothly on my mediocre laptop.
After the whole game scene was finished, all animations completed I had to go back and redo everything with new collisions. I also had to reduce a lot of the unnecessary fluff that was eating away plenty of resources but was barely noticeable. Like having branches wave gently on the wind.
This crunching took days, as I would always notice something else not quite right and would go about fixing it as well. But, you gotta do what you gotta do.
I ended up using compound colliders (made of several primitives: box 2D and circle) for most object, and I often had to remake the sprites to fit the colliders better. I didn’t want to have to place 10 circle colliders on a Cloud when I could have 5 and touch up the sprites a little bit (and still keep visual interest). I also had to keep reminding myself that following the graphic perfectly really isn’t that important or noticeable.
Performance boost has been great after all the changes and the game runs smoothly (for the most part) on 90% of the devices tested (before, it ran smoothly on about 50%).
Of course it wasn’t just the collider changes that improved the performance. Some thanks go to reducing draw calls and dynamic loading.
I recently changed the roots from polygon colliders to boxes. To do this I had to simplify the sprites a lot (or at least I thought I did, at the time). As a result they lost a bit of their visual interest and are now clunkier and less interesting.
Since then, however, I went back and reverted to old sprites (on the left) and just implemented box colliders on them. Wasn’t so hard 🙂