We’re a small team who are now making our first two games in Unity, after creating our last two in Adobe AIR. For 90% of what we’re doing in Unity, it really has been a definite improvement, specifically to do with game coding and creation, but when you go into platform specifics (which is my role / area of expertise), I honestly think there’s a dearth of documentation that should needs to be addressed.
The reason I feel this way is due to the last few weeks of bringing device specific features to our games, like Analytics, In-App Purchases, Push Notifications and Social Login. We’ve bought a few plugins (Analytics & Social Login), and we’ve brought in some open source (OpenIAB), but we also want to be able to develop in house, so that’s what’s happening with Notifications on Android.
One huge thing that I’ve struggled greatly with is purely and simply debugging. On Android, after a HTML callback, trying to evaluate the response in the bugger, force crash. On iOS, launching normally (via XCode), but then trying to connect with MonoDevelop, XCode crash, and app crash on the device. Connecting to the debugger on Android from MonoDevelop on iOS, do I choose iPhonePlayer (that I assume is over WiFi?), do I choose one of the two unityproxy options, or USB? On Android, it’s nearly just a wish and a prayer whether it connects, or not, and whether it crashes, or not. As a newcomer to this area, I really do feel the information for here is incredibly lacking, and if you ask over at MonoDevelop, they won’t help at all because of the changes made to MonoDevelop to run with Unity.
Then there’s the management and structure of a mobile project. Best practise to build Android from Unity, or from an exported Eclipse project? Best practise to replace or append for iOS? Best practise to have .m files in /Assets/Plugins/iOS or in the exported XCode project? Best practise for the C# layer to differentiate whether you’re on the emulator, iOS or Android?
What’s pushed me to make this post was basically I was reading through open source projects to try and figure out what they were doing, and then mimicking that, but realistically, this sort of information should be coming from Unity themselves. Even the very first part of the docs “Using Your Plugin from C” is, I feel, inadequate. Which file should this be? Where should it live? Where does “PluginName” come from?
As an example of what we had with AIR,
http://www.adobe.com/devnet/air/articles/building-ane-ios-android-pt1.html
(4-part devnet article, with accompanying GitHub - nweber/SystemVolumeNativeExtension: An AIR native extension to interact with the system volume for iOS and Android devices. project),
GoToAndLearn - Photography & Photo Editing
(2-part video tutorial, accompanied by GoToAndLearn - Photography & Photo Editing project files)
And a lot, lot, lot more.
What I’d love to come from Unity officially is something similar. A full tutorial, with video, and advice, and GitHub project, dealing with a multi platform plugin (both Android & iOS would be great) where all this is dealt with, along with things like the UnityPlayerProxyActivity on Android and sending messages from the native side, and receiving them on the Unity one.
I do think it’d help the community greatly.
