Someone who never ported Unity game to mobile (iOS / Android) can tell that it’s pretty easy. If you think so, you are very wrong. When running i.e. WebPlayer version of your game it allows you throwing exceptions that are not caught and sometimes the game runs without any crash, only in the log file you can read note about it. Mobile version is less forgiving. Unhandled exception will crash your app.
Reading iOS crash logs helps a lot while debugging, but if they are still mystery for you, you can read great article about them here: Demystifying iOS Application Crash Logs. The problem is, that sometimes Unity creates crash on your iOS device that will not tell you much:
... 6 mygame 0x002328f4 ___lldb_unnamed_function7016$$mygame + 268 7 mygame 0x0122597c ___lldb_unnamed_function93440$$mygame + 200 8 mygame 0x01964224 ___lldb_unnamed_function136404$$mygame + 2152 9 mygame 0x01a06274 ___lldb_unnamed_function138276$$mygame + 132 10 mygame 0x015a08cc MonoBehaviour::InvokeMethodOrCoroutineChecked(ScriptingMethod*, MonoObject*, MonoException**) (MonoUtility.h:452) 11 mygame 0x015a0918 MonoBehaviour::InvokeMethodOrCoroutineChecked(ScriptingMethod*, MonoObject*) (MonoBehaviour.cpp:975) ...
It will tell you nothing because of ___lldb_unnamed_function (sometimes there is only memory address if automatic symbolication went totally crazy). Instead of this unnamed function you would like to see name of your method in your C# scripts. The problem is wrong calculation of method address by default Xcode symbolication tool (more details about these calculations you can find here). To ease you life I created a script that will symbolicate crash log for you. All you need is the archive from which you created your binary, name of the application and crash log itself.
Usage is as follows:
symbolicate_crash.sh <archive> <app_name> <crash_log> [<output_file>]
Following couple of game developers on twitter lead me to fantastic game development initiative called One Game A Month (1GAM). Generally you create a game each month. It’s not for the community, not to be reach, it’s just for yourself and just for fun. By creating game I mean not creating proof of concept, but whole working game. It’s really hard, because I already have couple unfinished game projects and I know that the road between idea with couple lines of code to the final product is rough. This topic is great covered by @McFunkypants (the initiative founder) in his keynote below.
So, my plan is to create games! Currently, I’m motivated to create all 12 of them, but the time will show how it gonna end. I chose to make iOS games. My little game development experience told me, that one month is hell small amount of time when you have family and normal job, and 1GAM is only your hobby shared among other in spear time. Because of time and my will to learn new technologies, I plan to create games in Unity game engine. Some time ago I got free license for iOS platform, so it fits perfectly.
According to games, I will try to create as simple games as possible, but simple doesn’t mean boring. The game should bring lot of fun and joy, so in reality it’s damn hard to create simple and interesting game.
I’m pretty excited and curious how it’ll end up. All games I will create I will describe here on my blog. I hope to write 12 posts till end of 2013. I wish luck to all people taking part in 1GAM.