Thankfully, there are loads of controllers out there that let you play Android games with real analog sticks, buttons, and triggers.
But, why bother with cheap peripherals from some no-name company when you could use the tried-and-tested joypad from your PS3 or Xbox 360?
With a little knowhow, plus a cheap adapter from Amazon, you could be playing Dead Trigger with your DualShock 3 faster than I can type 'yay'.
So, grab your favourite controller, dust off your Nexus 7 tablet, and gather round: this here tutorial will make virtual buttons a distant memory.
The first thing you'll need is a micro-USB OTG cable. This is a small adapter that turns the micro-USB connector on the bottom of your Nexus 7 into a full-sized USB port.
We used this super cheap one from Amazon, and it works perfectly.
Plug in your controller. On Xbox 360, you'll need a wired pad - and you can't use the play and charge kit to hook up a wireless one.
On PS3, use the USB mini-b cable you got in the box to hook up your Sixaxis or DualShock 3.
Press the controller's Xbox 360 or PS3 home button, and you should be good to go.
Fiddle with the analog stick while on the app menu and you should be able to move between apps, and open games with the Y (Xbox 360) or X (PS3) button.
Load up a compatible game like Dead Trigger, Asphalt 7, or OnLive, and you'll be sorted.
If your game or app is not optimised for controllers, have a look in the options menu.
Emulators, for example, let you manually assign different button taps and analog stick wiggles to in-game inputs.
Want to go one step further? If you've got a PS3 controller, you can go completely wireless - providing you've rooted your Android.
Download the £1.07 / $1.99 Sixaxis Controller app from Google Play, and follow the instructions to play wirelessly.
You can also use this to play games that don't have controller support. How? By setting touch areas that are automatically tapped when you press a button on your controller.