It was my birthday yesterday (woo-hoo!) and I woke to the best gift in the form of an email. Sony have gone from closed to open beta on their PlayStation suite studio.
It looks like visual studio2010 with some re-branding, but what’s important is that it lets you write software (in c#) for certain PlayStation approved platforms. One of these platforms happens to be the PSVITA, one of which I’d just acquired.
I spent an hour or so installing the tools. Windows only so I got my crappy old vista laptop and used that. The install was fairly painless, it required constant attention as it installed a whole bunch of stuff but nothing went wrong (even on my messed up laptop).
I wrote some demo code to display some graphics using a quad. Trashed that as soon as I realised they had a more 2d suited suite of classes under the name of GameEngine2D. I build another demo using this and then set about doing something more substantial.
So I set to work porting my android (touch) version of meltdown moon to the platform to see what it was all about.
The IDE was very familiar and I was pleased to see even included support for Git (something the free version of visual studio doesn’t do) everything worked just fine apart from the installing of the software onto the vita.
To get your games onto the vita it’s required that you install a special app (a bit like the xna connect thing for the xbox) which was fine. The problems come when trying to get software installed using this. It’s kinda temperamental, works only some of the time and requires frequent restarts of the vita software.
I eventually got a process down that worked every time. This involved unplugging the vita and plugging it back in again for each run. Sounds clunky but it worked reliably after this. Once I had a process that worked it no longer bothered me. Although it would be nice to see this addressed at some point.
So with a cool optimised scene-graph approach to sprites some cludging was required to get meltdown moon’s own particle system to play nice without having to rewrite the whole thing. Once I worked out how to do this I set about porting the java to c#.
So with the bulk of the effort done, I was left with an upside down version of meltdown moon with some corrupted assets.
The origin for the graphics engine was bottom left. Oh. Simple fix and it was all the right way up.
The corruption I’m still not sure about as the cause was a single sprite, the backfade image (lots of alpha 300x200px), which was effecting every sprite below it. With the backfade removed everything was back to normal (sensa backfade).
With these fixes the game looked fine but with more than a few particles on the screen it was running like a dog.
I read the documents that came with the sdk and found more information on SpriteLists. By grouping similarly rendered sprites you can save mucho time in the render loop and it’s encouraged heavily in the documentation. It boiled down to a mechanism by which you can push multiple similarly textured quads to the graphics card in one push, saving on time. With each of my sprites grouped into their own lists and pushed in groups the game was running at speed with a full complement of asteroids on screen. However I was still suffering from slowdown when explosions were going off. I tried a few things but ended up shortening the time to live for most particles which did the trick but, I admit, was a bit of a cop out.
So here it is: My half ported version of meltdown moon without any text or menus:
I plan on finishing this and perhaps even adding a few VITA inspired features and trying to get it released once the time comes.
On the whole I’d say that Sony have done a good job here, the process has a lot in common with the XNA game development process for the XBOX 360 but with the simplified deployment process, powerful 2D games engine and lightweight input management I’d say this is slightly better. I hope you’ll be seeing more VITA from me in the future. 😀
Good, then. Well done.