So far the game has had very little details like visual feedback on actions – meaning mostly small visual effects when you do something on the screen. In the prototyping or first testing phases you naturally don’t need such, but no game is finalized without. I’ve been putting in mockup art for both the iPad and iPhone/iPod resolutions so I could do better testing on the actual devices but after a while of testing I had a nagging feeling “duh, this is a bit boring and plain somehow”. The risk of making a bit of a minimalistic game, I suppose.
But most of it was actually due to these FX being missing. It’s hard to grasp what happens in an action game without all those small details – why, how, did that character just disappear? Wow, how come there is an Oggiput on the playfield now? So I’ve been playing around with this, getting in various effects, but as I started doing it without any real vision on how it should look, I am not particularly happy with the end result. Well, on the positive note I got really acquainted with the animations Cocos2D has to offer.
Now that I’ve let it simmer for a few days I am convinced I should stay minimalistic with the effects as well. No insane particle effects with blurs and lighting effects, but more in the style of the characters in the game. As a beginner it is easy to get carried away with a particle editor… If you’ve seen the screenshots you can tell the shape “round” is quite a generally occuring thing. This got me the idea for the burndown timer particle effect and when you happen to squash a Kisau Veela. Round sprites with some fading and blinking added, in that arcade game style, is what the game needs I think.
Also, there is a lot happening on the screen at the same time as the game progresses, hence a huge particle effect would not be kind to the eye – the main part of the game is about being able to keep your eyes on the Kisau Veelas’ colors and amounts on the screen.
The insertion of all the mockup art made it possible to get rid of the debug draw methods as well. Together with an optimization I made – actually more a must-do-refactoring due to a bug in my state machine – the game actually runs nicely at 60 fps on the iPhone 4. Whew! With debug mode on it was like 7-10 fps and I got worried there for a while…
Testing on the iPhone revealed at least one thing. The game is notoriously hard on the small screen. And if it is hard for me as the developer, it is probably impossible for you a a casual gamer. I knew from the beginning this game would be better on the iPad, but I really want to make this a Universal game for both device families. I’ve got some tuning to do to make the same as similar on both device families as possible, even though they will never be exactly the same due to the resolution differences as the game mechanics are tied to the shape of the playfield. For this reason I need to implement separate Game Center leaderboards for iPhone and iPad, but more on that later.
There’s also a technical issue special to this game while making it a Universal game. Due to the resolution difference and usage of Box2D I need some scaling to happen on iPhone compared to iPad. Otherwise the characters are way too fast and large on the iPhone (think of a ball being kicked with the same power on a small field and on a big field – on the small field it arrives faster to the other side). The Box2D bodies do not scale automatically according to the sprites when Cocos2D is loading the sprite sheet appropriate for the device. I had to hack the class which handles the Box2D fixture loading from the Physics Editor files but in the end this was a very simple thing to do.
Pietari has been doing backgrounds for the Game Over, Level Up, High Scores, and Start Menu scenes. Next up is the playfield background and HUD and finalization of the characters. On my side I need to adjust the game mechanics on the different devices, continue the FX implementation, and tune the scoring. There is one particular game mechanic “glitch” I need to fix somehow – that is, how to handle the scoring et al. in the case the player just whacks around the playfield like crazy. This sort of behavior should not yield a particularly good score and/or chance of leveling up.