I am really a great fan of the Rovio games from Angry Birds and on. One of these games is the tricky puzzler Bad Piggies, which I have spent a great deal of time playing to unlock new levels (and as an illustration of deterministic simulation). Playing on my Nexus 7 I have solved level after level… and then I got myself a new Xperia phone. Not that playing on the go is that big an attraction, but if I happened to want to do that, starting over just felt wrong.
I read a number of articles and blog posts discussing how to move Angry Birds save games, but nothing that was particular to Bad Piggies. However, the pattern that emerged was pretty clear. The save game state is just a bunch of files, and if you can simply get them from one device to another you should be fine. There were some indications that maybe with Android 4.0 or later you would need to root your device in order to get at the files, which was a bit worrying.
Turned it out it was really easy, even though I had to take a small detour.
First, I attached the Nexus 7 to my PC. It was no problem to navigate to Internal storage/Android/data/com.rovio.BadPiggiesHD/and just copy the whole files directory to to my PC’s disk. I then attached the Xperia to the same machine, and tries to locate the same directory. It was not there. Instead, I copied the files folder to another location (on an SD card, but I don’t think that matters). On the phone I then used a file manager program to copy the folder from the SD card to the internal memory. On the phone, I could see the target location and copy the files folder into it (image shrunk to 50% to fit the blog format):
And then it just worked.
Thanks to Rovio for making it that easy. And thanks to Android for being a mobile OS with a file system that is visible. Having used Apple iOS devices for quite a few years, I did not realize just how useful it was to have an exposed file system until I started using Android. Back on the old Symbian phones I used to use, there just was not that much to do with a file system, and they were never mountable as file systems to a PC anyway. Now, with high-resolution screens and the ability to watch movies and read PDFs in a way that makes sense, having a file system makes so much more sense.
There is probably some way to extract save games from the older Angry Birds games from my iPods to my Android devices, I need to look into that. It should just end up being the same types of files in the end, I assume.
I wonder why Rovio does not offer the service to sync games across devices. The only way I can think of that makes sense is running some kind of server that would sync user’s save games across devices. A hassle to maintain, and users would need to establish accounts just for this purpose. Not sure that I would. Considering the average cost per game sold of only a few dollars, the cost of running servers might well be quite high compared to the average income per user. On the other hand, they might even be able to charge a dollar or so for the service. It could also interact in strange ways with in-game purchases. For games that are guaranteed identical on all devices it is easy to sync progress. But what if I have purchased a set of levels on one device, but not on another, how would you deal with that in a robust way?
Offering a simple way to copy progress to a file would spoil the game a bit (users sharing saved games to avoid the effort to get three stars on all levels and similar thresholds). It is also something you cannot really do on an iOS device in a natural way, as there is no exposed file system.
You are such a pig for letting us know this.
Now do you know of an editor for the progress.dat saved file so the levels will be unlocked faster?
This method just worked for me 10 years on (!) to move from a Galaxy Tab S2 to a Galaxy Tab S8+ each with different Android versions via my Acer Windows 10 laptop. So happy I was able to save my progress to my new device, and I definitely appreciate you making your blog post Jakob. I also needed to take a small detour and hope a global copy-paste with slightly different folder naming conventions between the Android OS versions would work, and it did!