History of This Request
The reason this request was often asked about stemmed from how data was —and still is— stored on Android.
The game’s achievements and high scores were all saved in a local database, which existed in a protected part of the Android Operating System in /data/data/com.farsight.AndroidPinball.javaproject/files/saved_data
.
This directory can only be accessed if the device is rooted. Some device manufacturers class rooting a device as a warranty breach: users did not want to void their warranty.
There are a few gotchas in how FarSight has implemented the feature: gotchas that will cause data loss if you are not aware of them.
Grouped Achievements in GPS
Achievements are grouped together in GPS because there is an upper limit of achievements a game can support. This means that for each group of five Standard and Wizard goals, there is one achievement for each category.
How TPA Detects Goals
The local, protected database remains in use. GPS achievements and leaderboard tracking watches the local database to track achievement status.
When the game code tells the database that an achievement is unlocked, it adds a flag to the database. When all flags for the Standard achievement group are set in the local database, the game triggers GPS to award the associated Achievement.
Understanding Saved Games in TPA
Cloud Save is something that a user expects to happen automatically when offered in a game. If a game has Cloud Save in the app listing, a user expects the app to back up scores and achievements to the cloud automatically.
If a user needs to restore or transfer progress to another device, this data is restored automatically once the game loads.
This is not the behaviour in TPA.
Online Progress vs Local Progress
What happens when you are playing on one device and have a great game? You want your goals to show locally on all devices you play TPA on. Without planning, this will never happen.
In this scenario, you must start your Wizard Goals again for that table. The local database on your device has no record of the other four earned goals.
GPS does not know about the goals because the local database has not triggered a goal update.
If you earned the Wizard goals and GPS backed up the status, your local goal status would not synchronise. The local database is separate to GPS, and is not updated by GPS status changes.
Layering GPS over the saved_games
local database is a single point of failure for user issues relating to lost data.