Users Guide for The Pinball Arcade on Android

Written with passion by Jared Morgan at <jaredleonmorgan@gmail.com>

Version 1.2

Creative Commons License
Users Guide for The Pinball Arcade on Android by Jared Morgan is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Users Guide for The Pinball Arcade on Android

1. Why This Guide Exists

A User Interface is like a joke: if you have to explain it, it’s not that good.
— iconfinder.com

This guide exists because of limitations in the User Interface (UI) currently implemented in FarSight Studios' The Pinball Arcade (TPA) for Android. In its current form, the UI is limiting, it confuses customers, and offers an unsatisfactory User Experience (UX) for new and seasoned users alike.

The Pinball Arcade Fans community and I have been working around issues caused by the UI for close to two years now, and the number of cases I’ve personally encountered where customers are just plain confused about features is getting to the point where I have no choice but to take action.

The Users Guide contains information about features in TPA that can’t be adequately explained in-game because of a combination of UI limitations and/or the complexity of the feature.

A lot of things in this guide can be figured out by playing around with the UI: you might be comfortable doing this. If you aren’t comfortable doing this, you may be in for a rough ride: some features really aren’t intuitive, and some features may unpleasantly surprise you down the track if you don’t fully understand how they work.

This guide is not a tool created to disrespect FarSight and their product. Quite the opposite: it is a factual testimonial from a customer who happens to be a volunteer beta tester and Technical Writer.

TPA really is the only game in town if you want to play real pinball from the leading manufacturers. If the UI and UX can be fixed, then the game will continue to grow. I fear that if it doesn’t improve, the game will fall behind it’s competitors.

I hope this guide helps you get the most out of the app.

2. The Settings Menu Explained

User Interface limitations caused the Settings menu to evolve from a pretty terse list of items, to what is is now.

There are some options that use Developer speak and would be meaningless to many users, yet are very important for configuring optimum performance in Android for older devices.

Some Graphics menu items do not display depending on your device kernel flags and OpenGL capabilities (say what, now).

The menu items that make a difference to playing and enjoying TPA are:

  • Manage Tables

  • Sound

  • Mip Mapping

  • Detail

  • Textures

  • Restore HoF Pts

2.1. Manage Tables

This menu is pretty self-explanatory. It lets you do the following:

Update All and Download Owned do not run as background processes. You must have TPA open all the time for this process to complete successfully.
Update All

Update all downloaded tables present on the device that have received RES updates (a term used to indicate a table has received improvements to graphics assets, known as 'resources').

Download Owned

Bulk download all owned tables missing from the app, that are linked to your Google Play account used to purchase TPA Table Packs or Season Passes.

Delete

By tapping the button to the left of each table in the list, you can delete individual table files.

The table order in this list is well and truly out of alphabetical order. It is sorted based on the date the table packs were released. That’s why you see all the older tables from Season 1 and Season 2 appearing first.

If you are starting from a new device, and you wanted to download and update all owned tables, you would select Download Owned. This will download all tables you own in the order they were released, starting at Season 1.

If you already had all the tables on your device, and received an app update through Google Play, you would select Update All to pull down any updates table files.

2.1.1. Managing Tables Outside the Interface

There is another way to manage tables that allows you to do away with the somewhat awkward menu in TPA. All you need is your favourite Android file browser.

The game Downloadable Content (DLC) is stored in the /sdcard/Android/data/com.farsight.AndroidPinball.javaProject/files/ folder.

It is arguably easier to navigate to this directory and delete files manually. The method through the UI works, but is slow. Only use it if you are not comfortable deleting files through the file system.

2.1.2. Back Up Your DLC

Unless you have a very fast data connection and you live in the United States, I’d strongly recommend you back up your DLC to DropBox, Copy, or even just to a folder on your computer. Just get them off your device. Depending on what Content Delivery Network (CDN) node you connect to, it might take anywhere between 30 minutes to four hours to restore all DLC to your device. Having a local copy synchronised to your device will make restoring faster. Much faster.

And use the new table release each month as a reminder to take a DLC back-up. You’ll thank yourself later when you need to restore them all.

2.2. Sound

There’s not a great deal to this menu: On or Off.

Note that this turns off all sound effects and music. There are no subtle settings to affect mechanical sounds, music, or sound effects. This is most likely to do with limitations of the Farsight Audio Mixer, described later in this guide.

2.3. Mip Mapping

This menu screams "Developer Speak" in an app specifically not targeted at Developers. Another issue is the menu item has been misnamed: it should be Anisotropic Filtering. But try fitting that word into the current UI and you’ll soon understand why Mip Mapping was chosen.

You’ll need to visit Wikipedia for a concise description, but what this setting does is affect performance on devices in the area of "depth of field" and the sharpness of the depth of field.

You would think that turning this setting on would be a good thing. But, you need to turn your thinking around when understanding how this works in TPA.

On

Activates the Mip Mapping function, which serves multiple mipmap images and lets the GPU pick the best sample resolution for your specific device hardware. This is better for devices with limited GPU capabilities.

Off

Deactivates the Mip Mapping function, which serves the highest resolution mipmap. This requires more GPU processing power, and as you can expect, this may add a performance impact for older devices.

The best advice for these two options is experiment with them on your device and see which setting delivers the best performance.

My suggestion for renaming this to something more user-friendly would be:

  • Sharpness = High

  • Sharpness = Normal

2.4. Detail

Detail — or High LOD as most regular TPA Andorid forum users refer to it as — was implemented mid February 2014.

Depending on the device you own, you might not even see this menu. Some Samsung devices featuring the Exynos System on a Chip (SoC) (MALI) architecture did not have a kernel flag set which caused this menu to be hidden. If you don’t see this menu, your device has a GPU that will probably struggle to run TPA in general.

High LOD affects what individual elements you see on the table. If you turn this setting to Standard from High, you will really notice the difference. Elements like screw heads, transparencies, plastics, bulbs, even some playfield elements like the curly wires on Bally’s The Party Zone disappear. All these elements put strain on the GPU to render them, so if your device has a weak GPU this setting will either need to be set to Standard, or may not even be visible to you.

High

All elements originally present on the table. This is the default for this menu now.

Normal

Less table detail means that certain high-pologon objects are disabled. A performance boost is gained for older devices.

2.5. Textures

Textures is actually to do with Polygon counts in the models on the Tables. If you set this to the Normal setting, close ups of stand-up targets in Williams' The Machine: Bride of Pinbot appear hexagonal. Set it to High, and they are far less hexagonal featuring about twice the polygon count.

High

The highest polygon count possible in the table models used in TPA. This is the default for this menu now.

Normal

Hexagonal shaped round targets, and other trade-offs that make some playfield elements appear jaggy at distance, and blocky when zoomed in upon.

2.6. Restore HoF Pts

This feature is available in conjunction with the Xenon table release.

If you have a mismatch between what you believe your Hall of Fame (HoF) points should be, and what is recorded in the app, you can trigger a manual rebuild of your HoF points. This makes the app access the online leaderboard scores, recalculate the HoF points from this data, then restore this data to your device.

To start rebuilding your HoF points
  1. Tap Settings → Restore HoF Pts.

  2. When prompted, select Yes.

  3. Wait while the restore function runs.
    NOTE: It may take a few minutes depending on your internet connection.

  4. Tap OK to complete the process.

3. Other Settings Menu Items

The rest of these options really belong in another menu. I’ve suggested this in this thread but at the time of writing the issue has not been publicly acknowledged.

Controls

Text instructions on how to use touchscreen controls. There isn’t room in this screen to go into detail about configuring touch regions, or using a Hardware Controller.

Videos

You can purchase two videos to stream.

Our Mission

What the game’s primary mission is.

FarSight Credits

The dedicated production team behind our favourite game.

Twilight Zone Credits

Included only to meet the requirements of the Kickstarter award tiers for this table.

Star Trek Credits

Included only to meet the requirements of the Kickstarter award tiers for this table.

Terminator 2 Credits

Included only to meet the requirements of the Kickstarter award tiers for this table.

Addams Family Credits

Included only to meet the requirements of the Kickstarter award tiers for this table.

4. Table Menu

The Table Menu is one of four options presented when you have selected the table from the table carousel. This menu is full of settings and options: some of which are obvious, and some that aren’t as clear as they could be. UI limitations are somewhat to blame here.

The mobile platform developers suggest you experiment with these options so you can discover what they do. I don’t feel this is a great UX for new adopters. Lets learn more about the options, described in this chapter in sufficient detail.

4.1. Level One Menu Items

Pro Menu

Activates Pro Features (In-app Purchase)

Instructions

Teaches you how to play the game.

High Scores

Displays the device-stored high scores.

Extras

Shows the following options:

  • Table History, which re-displays the table history you see when you play the table for the first time

  • Flyer, which displays the official game promotional flyer issued to operators by the manufacturer.

  • Custom Ball, which displays the currently selected custom ball. Use the arrows to select other balls to use on the table.

  • Buy Custom Balls, which allows you to purchase different ball packs for use on all tables.

Options

Further game options described in the next section.

Standard|Wizard Goals

Shows what goals that remain in whatever level you are currently playing in. A link to directly view instructions is also available.

Legal Notice

Copyright information directly related to the selected table.

4.2. Options Sub-menu

You also see the same menu options when you have started the game and then tap Pause in the top right of the screen.
Controls

Same info as described in the Settings menu.

Sound

Same info as described in the Settings menu.

Nudge

Tap to change between three options:

  • Touchscreen, to use the Touch Scheme selected later in the menu.

  • Shake, to tilt using the accelerometer in the device (hardware dependent).

  • Off, to completely disable tilting in the game.

Multiball Camera

Tap to change between two options:

  • Off, which allows the table cameras to scroll up and down the table during multiball, if all balls are in a certain zone.

    This setting can cause camera bugs to appear on some tables that switch the view to the plunger cam during multiball.
  • On, which prevents the table cameras from scrolling and locks the camera view to a static view of the playfield.

Tilt

Initially this feature is locked until all Wizard goals are achieved. Tap to change between two options:

  • On, which leaves the tilt system activated, and lets you post to FarSight Leaderboards.

  • Off, which disables the tilt warning system, and prevents you from posting to FarSight Leaderboards.

Invert Nudge

Tap to change between two options:

  • On, which means when you tap the left touch zone, the table moves right to left.

  • Off, which means when you tap the left touch zone, the table moves left to right.

Event Camera

Tap to select one of two options:

  • On, which zooms in on pre-defined features in the game (like the THING hand in The Addams Family, or the Gumball Machine in The Twilight Zone)

  • Off, which keeps the view from scrolling up the table.

    This feature may cause issues with multiball cameras if turned On. Generally if you want a good in-game experience without camera bugs, select Off for the most bug-free experience.
Touch Scheme

Tap to select from one of six touch schemes that alter the areas where your fingers tilt and flip.

Show Touch Scheme

The Show Touch Scheme option is useful when configuring the Button Position. Tap to change between two options:

  • Off, to hide the touch scheme overlay on the screen.

  • On, to show the touch scheme overlay.

Button Position

For tables that feature a launched shooter lane (Attack From Mars, Monster Bash, and others) or features other special cabinet controls (Black Knight|Black Knight 2000 magnasave, Harley Davidson drain save) this option lets you move the position of the special buttons to a position that best suits your physical thumb reach.
Tap to move the button from the Top near the Pause Menu, in 5% increments down the screen. See Moving the Launch Button for more information about this feature.

Controller Mode

See the Controller Configuration section for more information about controller support.
Tap to select from two options:

  • A, to use the upper trigger buttons as flipper controls (MOGA Mode A)

  • B, to use the lower trigger buttons as flipper controls (MOGA Mode B)

5. Google Play Services

Coinciding with the Season 4 release of Earthshaker, a long-standing request was implemented: Google Play Services (GPS) support.

For the purposes of brevity, the way you use this feature is described first, with some background info presented after the main procedures. It’s worth reading on past the procedures if you are interested in the "why" this feature appears to be implemented the way it is.

If you do not create a Saved Games restore point manually, all local achievements (Standard/Wizard Goals, Local High Scores, and Hall of Fame (HOF) points) are lost if you remove TPA, or suffer a casastrophic device failure.

5.1. How Do I Create a Saved Game Profile in Pinball Arcade?

  1. Tap the Google Play button on the main screen.

  2. Tap Save/Load

  3. Tap Save New Game

You now have one restore point that you can use to revert to if something catastrophic happens.

5.2. How Do I Delete a Saved Game Profile in Pinball Arcade?

  1. Tap the Google Play button on the main screen.

  2. Tap Save/Load

  3. Tap Action Overflow (three vertical docs) to access the delete function. +

    Touching anywhere other than this will load the profile immediately, potentially causing local progress data loss by loading an older save point over the new data.
  4. Tap Delete Saved Game to delete the record.

Thanks to Xanija for this data-preserving tip.

5.3. Maintaining Your Local Game Progress

You need to keep manually creating backups using Saved Games in case you need to restore. Depending on how much you play TPA will determine how often you create a backup.

As a general guideline:

  • Back up after you achieve a Goal or a High Score in TPA.

  • Back up no less than weekly if you are a regular TPA player.

  • Back up no less than monthly if you are a casual player.

There is no way to schedule a Saved Games backup in the game, so you will need to rely on other systems to remind you. I use the DLC cycle as my memory jogger to create a new Saved Game restore point. It’s a workaround until a better way of managing this important data-retention activity is implemented.

5.4. Saved Games Hard Limit

FarSight have opted for a hard limit of three saved game points for each game. If you play regularly, you will quickly use those slots up and must delete some older saved games to maintain a current save profile.

TPA Android users have confirmed that other games with this feature have more than three slots available, and clearly-defined Save and Load buttons on the Saved Game tile itself. This is an area of improvement FarSight can fix now, to improve the customer experience.

There is a gotcha in the way you delete the Saved Game files with the current GPS Saved Games UI

5.5. History of This Request

The history behind this request being so important was because the game’s achievements and high scores were all saved in a local database residing in a protected part of the Android Operating System in /data/data/com.farsight.AndroidPinball.javaproject/files/saved_data. This directory could only be accessed by the user if they had unlocked the devices' bootloader and installed a superuser binary (also known as "rooting").

Because some device manufacturers classed rooting a device as a warranty breach, users were not inclined to do this just so they could back up their game achievements and data.

While GPS is fantastic, 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.

5.5.1. Grouped Achievements in GPS

Achievements are grouped together in GPS because of a limitation in the number 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.

To qualify for the GPS achievement, all goals must be achieved before the GPS Achievement is awarded.

5.5.2. How TPA Detects Goals

Remember that local database? It is still being used to service the GPS achievements and leaderboard tracking. When the game hooks tell the database that an achievement has been achieved, it adds a flag to the database. When all flags for the Standard achievement group are set, the game triggers GPS to award the associated Achievement.

5.5.3. Understanding Saved Games in TPA

Like most users who use games with GPS implemented, Cloud Save is something that happens automatically. The assumption is that if a game has Cloud Save in the app listing, a user is guaranteed that the app is backing up their scores and achievements to the cloud automatically.

And if they want to play the game on another device, or restore to a new device, the achievements earned to date are restored automatically for them.

This is not how it works in TPA.

5.5.4. Example: Online Progress vs Local Progress

If you have earned the GPS "Skilled" or "Wizard" goals online, failing to restore a current Saved Games profile to your device will mean that these goals are not reflected locally.

Consider the following scenario:

  • You have one goal remaining in the "Wizard" GPS achievement for a table (4 out of 5 goals complete),

  • You un-install TPA.

  • You have no Saved Game restore point.

  • You installed TPA fresh again.

In this scenario, you would have to start your Wizard Goals again for that table because the local database has no record of the other four goals being achieved. GPS does. TPA does not.

Layering GPS over the saved_games local database is surely the single point of failure for user issues relating to lost data.

6. Moving the Launch Button

The launch button on tables such as Star Trek: The Next Generation (ST: TNG) and Attack From Mars (AFM) is positioned by default directly under the in-game Pause menu. This is impractical for most users playing TPA using the touchscreen.

You can reposition this button to your liking, in increments of 5%. This setting caters for your individual preference of launch button position.

The addition of button positions was not well advertised at the time it was implemented, and still remains something that a user needs to stumble across. Particularly as the item is off-screen in the Portrait menu, and three scrolls down in the Landscape menu.

This UI issue was brought to light outside of the PAF ecosystm in Episode 48 of The Pinball Podcast. The hosts tried to work out why the button was where it was and were totally unaware how to change it based on the information presented to them through the in-game pause menu on Android.

6.1. How Do I Move the Launch Button Position in Pinball Arcade?

  1. From the main menu, tap a game you own that has a launch button present (Attack From Mars and Black Knight are perfect).

  2. Tap Table Menu.

  3. Tap Options.

  4. Use the navigation menu arrows to scroll down all the way to the bottom of the list until you see:

    • Touch Scheme

    • Show Touch Scheme

    • Button Position

  5. Tap Show Touch Scheme to display the touch zones for controls.

    The launch button has priority over all flipper touch zones and tilt touch zones. Configure the button position so it does not interfere with with a flip or tilt touch zone.
  6. Cycle through the Touch Schemes (A to F) until you find a touch scheme that works for your finger size and general play style.

  7. Tap Button Position until the position of the button suits your playing preference, bearing in mind the WARNING above.

  8. Tap Back to the main table menu once you are happy with the settings.

You may need to experiment with the different options until you find one that works for you.

6.2. Touch Tilting and Button Position

Touch Tilting also has its own set of positions, so if you use touch tilting (rather than accelerometer tilting) you need to take into account button position for both tilt and flip zones.

7. Controller Configuration

This content was originally rolled up into a thread in this thread on the Pinball Arcade Fans forum. The thread rolls-up conversation fragments in this thread, to make it easier for folks to work out what controllers work with The Pinball Arcade (TPA) on Android.

7.1. Supported Controllers

The current set of controllers known to work with TPA Android are:

  • Moga Pocket

  • Moga Pro (in Mode B)

  • Playstation 3 SixAxis (with SixAxis app in "Native Controller" mode. Must be rooted to use this app)

  • Samurai Bluetooth Controller (GameStop brand)

  • NVIDIA Shield Portable (in Mode A)

  • NVIDIA Shield Tablet WiFi-Direct Controller (with NVidia Shield Tablet)

7.2. Abbreviations Used in this Section

LS

Left Analog Stick

RS

Right Analog Stick

L1/R1

The top digital shoulder buttons on controllers.

L2/R2

The bottom analog triggers (often analog) on controllers.

Mode A/B

The Moga HID mode. Mode A (used by Moga Pocket and 3rd Party controllers) and Mode B (used by Moga Pro)

Type A/B

TPA controller scheme setting, available within the in-game table menu. Switch between modes to switch the assigned flipper and magnasave shoulder/trigger buttons)

7.3. Moga Pocket

Left Flipper

Left Shoulder Button

Right Flipper

Right Shoulder Button

MagnaSave/Autoplunge button

LS Up+Right

Launch Ball

RS Down

Analog Tilt

LS

View Lock

X

Enter Initials

Flipper Buttons, and Launch

On Black Knight both Magnasave magnets are activated when lit when the controller command is entered. You will also tilt the table in that direction as well so be wary of tilting if you have been too aggressive up until that point.

7.4. Moga Pro / Playstation 3 / Shield Portable / Shield Tablet

Left Flipper

L2, or L1 in Type A scheme

Right Flipper

R2, or R1 in Type A scheme.

Special Button Left

L1, or L2 in Type A scheme.

Special Button Right

R1, or R2 in Type A scheme.

Launch

RS Down

Analog Tilt

LS

Lock Camera View

X

Change Camera View

Y

Select Menu Item/Launch Ball/Trigger Launch

A

Back

B

Enter Initials

Flipper Buttons, and Launch (or A).

8. Known Issues about SFX and Music

Up until late in Season Four, mechanical effects in all Android tables were playing back up to a quarter second behind the action on the table.

Additionally, when game soundtrack music looped, there was a noticeable playback gap in the music stream.

There are some long-standing issues with sound emulation on platforms. Some worse than others.

8.1. How is Audio Emulated in the Game

The truth is, audio is not purely emulated from the game ROM.

FarSight had to make a call back in 2012 regarding performance, and the ability to "hook into" the sound stream to detect goals based on audio calls.

Mobile platforms of that era were not capable of natively emulating the audio from the game ROM, along with locking the Frames Per Second (FPS) at the required 60fps for correct physics.
Physics, and the way a table plays, is more important than purely emulating sound. Sound was given second-billing.

8.2. Current State of Audio

When Android allowed developers to increase the package file size to over 50MB, FarSight was able to change the way sound effects were managed.

FarSight now includes all mechanical sound effects in the Android Sound Pool. Including sound assets in the Sound Pool allows Android to play back the sound directly, and not pass the sound file through the Android audio engine.

FarSight still encodes audio for android at 11,000 Khz, which is low-quality mono. On other platforms, audio is encoded at 44,100 Khz, which is CD quality audio.

When audio loops, there is still a noticeable pause. This is down to limitations of the audio system FarSight uses.

As the platform progresses, FarSight will look at ways to boost the audio encoding rate to reduce sound artifacts like popping and crackling.

8.3. Historical Record

8.3.1. What is the Root Cause of Latency?

The Farsight Audio Mixer (FAM), and issues with audio latency on Android are the basic causes for this issue.

Background

Ryan Routon, the former Android developer for TPA, confirmed back in October 2013 in this post that TPA uses a custom made in-house audio mixer—​lets call it FarSight Audio Mixer (FAM)--that has some latency issues. It mixes the game SFX and BGM into a single channel, which is then sent as a stream to the Java side of the app to be submitted in chunks to the OS.

This latency was present well before October 2013 but the reasons causing the issue were not revealed until this date. Advances in device specifications since this date have not resulted in a performance boost to how the FAM operates.

Workarounds
Farsight Audio Mixer

Frustratingly, there is no workaround to this issue, unless the mixer is completely rewritten. Lets just say a complete rewrite of the FAM is highly unlikely because it is definitely a non-trivial task to re-engineer how the FAM operates across all platforms.

Android Audio Latency

Since Android Kit Kat (4.4) was introduced, small improvements to how audio is passed-through have been made. The upcoming Android Marshmallow (6.x) is rumored to be including pro-audio functionality which would certainly improve the situation with gapless playback.

8.4. Audio Questions Answered

All information provided by responses from Ryan Routon here.

  1. What about the flipper sounds: why aren’t they affected?

    The flippers don’t have this problem because these effects are played from a sound pool (using .ogg files directly). Unpack the apk (it’s basically another name for a zip archive) and you’ll see them towards the top of the tree.

  2. Why not provide all mechanical sounds through the sound pool?

    Due to the game framework it would be impossible to provide all sounds in a sound pool. All sounds are included in a big byte chunk for each table. Flippers are universal so those are fine to sound pool.

  3. What have you tried to fix the issue?

    Decrease the audio block size: every time I make the block size smaller to pass to the Stream it breaks some devices and you hear blips in between. Bugs me to no end but not sure what to do.

  4. Why not make the block size tunable by the user?

    The block size is device dependent, and is queried automatically by the Android OS for the most optimal block size. Anything smaller than optimal and the audio stream just does not work, which would likely result in force closes because the buffer is trying to read bytes that aren’t there.

  5. So what is the underlying issue that is causing the headaches?

    It is actually the streaming aspect that is causing the delay. Even Google admits that the latency issues have been a long-standing issue on Android. They have been improving since ICS, but are still not really quite right.