My intention this week (yes, I know it won’t happen) is to have a build of the game ready to give friends and family to play and report back any bugs / ideas / impossible to complete levels. I also hope to get access to a Mac to see if I can build a version to test on iPads and iPhones, though that’s less important given that I can’t see myself spending the £100 to buy an Apple developer’s license anytime in the near future. However, I’ve discovered that there’s a way for developers to send apps over the web to Apple devices, which will at least allow me to see how the game works in that alien environment.
Today I have two jobs. The first is to throw myself into writing the game text. I’ve (somewhat foolishly) created a game with plenty of places to insert funny stuff. The only point of the game is to make the player laugh and so there are dozens of arrays to fill with as many witty one-liners as I can fashion. They’ll get served dynamically as you play the game, hopefully meaning that it shouldn’t get too stale too quickly.
The second job is to get the app’s size down. Last night it stood at a whopping 47mb, which was worryingly close to the Google’s stores 50mb limit. It’s a problem of textures. Many of graphics are still the size they came of my Samsung tablet, which is where I’ve drawn everything for the game. A megabyte for a pair of underpants definitely seems like overkill. I’ve started to tinker with the texture settings within Unity, brining many of the textures that were 2048x2048 to 1024x1024, those that were 1024 down to 512, and taking icons down much further. I can barely see a quality difference on the screen and the app is already down to about 33mb.
My biggest breakthrough of the weekend was to get my game objects flipping across the x-axis. I’d read last week’s Unity changelog and noticed they had claimed to have fixed the bug which broke the physics engine when scaling negatively. However, when I sat down and tested this claim, scaling the objects by -1 on x, any physics attached to the objects immediately failed. I either had characters looking one way but their bodies acting as though they were facing the other or I had characters falling in a heap of body parts on the floor. Clearly, the Unity bug hasn’t been fixed.
After a little work, I realised that the problem seemed linked to having objects in a hierarchy. If, for example, I had a human figure with arms and legs and I created the usual hierarchy of hand attached to lower arm, lower arm to upper arm, upper arm to torso, etc, then the physics would fail when scaled by -1. However, removed from the hierarchy, they would work.
My solution was to recalculate the object’s physics settings and apply them on the fly as objects changed direction. Since the problem only occurs when objects moved out of the kinematic state (that is, went from being unaffected by the game’s physics engine to having all forced acting upon it) I would also only keep them in the hierarchy when the object is kinematic and then dynamically flatten the structure when I needed them to work under physics.
Christ, all of this must sound so very boring. Is there anything duller than tech talk to anybody other than a very smaller number of people who enjoying reading tech talk? Is it a sad confession to say that I actually visit the Unity forums just to read about this stuff?
Okay. I have writing to do including as many insulting put-downs as I can manage for my ‘failure’ screen.