? Blog - Spiky Fish Games

Sketchcross Postmortem 2

Sprite Issues

  • Kendal Cormany
  • May 19,2015

One aspect of Sketchcross that has taken some criticism that I wanted to address is the menu system, why it is the way it is, what it used to be, and what could have been better.

First off the PS Vita actually has less video ram then people expect it to with only 128mb worth, 20 of which are taken by the system. This certainly surprised me when I started importing our prototype and got out memory exceptions the first time I ran it. Of course this was just a PC prototype nothing optimized at all, but I was curious why it would happen we weren't actually doing a lot on screen. Well as it turns out Sprites are the culprit and the issue is 2 fold, Unity and the Vita's gx processor. The processor does not like non power of 2 textures, and will expand them into a new texture file on load. Unfortunately unity does not do this for textures used in its Sprite system. The second is you cannot go to the normal route of compressing your textures under the normal process, you can however compress to 16bit, but the game needs full color so we were left with the only option of our textures being uncompressed.

What does that all mean? Well before we had these awesome transitions animations between scenes, so the player would see the scene there were in, then it would rip away revealing the menu they were going into. The problem? Well each animation spritesheet was 40mb. Trying to load that is not instant, so we had a lot of hang time loading assets in. We tried everything to get it to work, different assent loading procedures, different compression ratios. But alas nothing gave us the effect we wanted, in the end it just got cut. Also notice there is only 2 books on each page and you have to load 2 new ones when moving over? Yeah memory issues. Each book was about 12mb and that was after we cut frames from the animation. We wanted something snappy and quick but when we translated out game to Vita that just started to unravel. Our solution was having that loading screen, paper ripping in and out that is generic so it can be loaded once and stay throughout the game.

What we should have done was develop and design a look that would either be a small color pool, so we could use 16 bit, or smaller effects that we could combine to make the transitions. We tried to do full screen animations, so each animation cell was 960 X 544 the resolution of the vita. Again this didn't work most of the time as this forced sprites into 2k sheets which are not only big but slower to load. A nice thing though about unity is that it will instance out sprite when used. This means that when you have multiple sprites that are the same only one load is called to get that image.

Scene transitions are pretty important, a lot work has been done on mobile games for them to look good when transitioning scenes. We thought this paper rip would work nicely, and it did. But it didn't work on the Vita and we didn't know what to do. Unity is a great engine and for 3d it is the best out there. 2d however there is a lot to be desired and hoping people share code or sell something on the asset store is really not a reliable solution. It is getting a lot better, a lot of cool Unity 5 features are about getting their 2d tools up to snuff with the likes of GameMaker or Cocos2D.

Overall what was shipped was a compromise, and a pretty weak one. What should have happened was a total redesign, designed specifically to complement the low amount of Vram. Unfortunately as a small team that never happened. Like a lot of things about creative works we are happy about the outcome of the game, however we know it could be better and will make things better on new games we create.