First experiences with Unity PSM publishing
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.
Some months ago, Unity published its first public beta version of PSM engine, and I had a PSVita that a client traded me for some work so I started porting the game Silver Zombie to it, the first experiences were a bit disappointing, the console crashes sometimes, shaders, touches and sounds were not working as expected...wow, that was horrible, then I realised step by step how to fix all the issues.
HOW TO DEBUG
This is great to know what is happening with your game, the engine prints out a lot of info you can analyze to detect problems and fix them.
BUGS AND FIXES
- Shaders were bugged and also incompatible with Lerp command, so you had to change every single shader using that kind of instructions (or use another shader). Here is the post, this was fixed in the full public version.
- Vita crashes happens in some weird situations, like when you are using gpu skinning acceleration and the user quickly powers the console off and then on while game is running, you have to deactivate this option in the export preferences. Here is the post, this issue is going to be fixed in the next public version.
- Touches and accelerometer are not working as well as it works with mobile devices, imo they need to make some adjustments to these inputs, because the values are not normalized in a proper scale, so you have movements too fast or too slow.
- Once your game is approved and published you may see a warning like "THIS CONTENT IS NOT COMPATIBLE WITH Android™ DEVICES" in the online shop, this is a new issue with PSM SDK 1.21 that will be fixed in new versions.
UNITY PSVITA PERFORMANCE
The engine works very good beside those bugs, (almost native performance) running a game at +150FPS when in a Nexus7 runs at 30-40FPS is nice. But when you have more than 20k polys in screen and more than 120 draw calls, optimizations are needed like I do with Bomber Farm 3D: reducing Camera FOV and clipping planes for example, optimizing memory, polycount, draw calls from GUI and 3d objects mats,etc.
PREPARING THE GAME FOR THE STORE
Once you have your game up and running you will need to prepare the meta data. The first step is to change the Build Type to Master in Unity and hit the Build button, it will contact Sony servers and upload the signed game. But first, open your /Assets/Plugins/PSM/app.xml with the Publishing Utility for Unity. Fill the extra meta-data with this tool, get PEGI and ESRB certifications (numbers), check options, and so on.
Get ready a description translated to all the markets you are selling your game in, if you are wanting to sell your game in Japan (which you may want to) you will need to have a proper translation of your game desc to japanese.
Make screenshots with different languages, zones of your game, select carefully because the publishing process can take up to 2 weeks.
- Game Icon : 240x240px
- Screenshots made with PSVita capture
- Banner 282x108 (like these)
Do you want to start development with PSVita and publish using Unity PSM?, these are some points they will ask you to follow to be approved:
- Start button must start the game from start screen (use it for pause)
- Does your game use joypads and buttons or touchscreens?: Show instructions whenever controls change
- Avoid crashes when user power-on-off console or other cases, same as I mentioned before
- Screenshots must be made from within the game running in PSVita
- If you are selling in all the countries you will need to fill up all the descriptions in each language.
- Data filled with Publishing Utiliy must be correct, for example, you can get a rejection if the xml has a Rating with Online Features On but your game has not online features.
- Dont make game to exit (it will not XD) like in other devices
If you follow these steps and get your game approved, then it will take 2 weeks approx to see it in the store, like the lucky guy who is writting this post (with 2 games actually) or this other.
Congratulations, you made it!
Thanks Dave Young for his invaluable help with the translation of this article.