Overlay for touchscreen Doom

Since libretro-prboom added support for input with analog sticks I’ve been wanting to have an overlay for touchscreen controls that are more friendly for playing Doom.

It’s very hard to control an FPS with a touchscreen… but I’ve been experimenting, and so far this is the most usable layout I’ve been able to set up for libretro-prboom, currently.

It’s completelly based on the retropad.cfg overlay, it only changes the landscape-analog view. This means you have to press on the analog icon to change to this view, but I think that’s ok, because the menu screen to start/load the game is more manageable with the d-pad anyway.

The dpad-looking arrow buttons on the right side are actually using the right thumbstick, but in libretro-prboom it’s only rotating left and right. I haven’t seen the B and Y buttons being used in libretro-prboom so I removed them altogether… and made the X button bigger as I found I was sometimes missing it when I switch from rotating the camera to shooting.

The control is not perfect. Even though the inputs are analog, the core doesn’t do smooth movement and it always moves using the same speed. I’m hoping the prboom core will implement mouse support at some point (RetroArch nightly already supports touchscreen mouse emulation), then the camera movement might be smoother and it’ll probably be better than emulating the right stick.

I thought I might share my configuration here in case it’s useful for someone or maybe someone can see a way to improve it. Or if there’s already a better alternative, please point me to it.

Here’s the download for it

https://mega.nz/#!944ARKLK!vphblOL_lMFhP6KGdCf3X76N53JR2XyoYLeObSEpYiQ

The configuration file is in “myretropad/myretropad-doom.cfg” inside the zip

Nice effort man.

The dual and doom cfgs have a pretty good analog. But it still has the same issues most overlay controls have: deadzone and touch zone limits.

  1. the deadzone must be completely eliminated (or kept very very small).
  2. the actual touch area (not only the analog push area) must be a little bigger than the graphical outlines of the pad (this is obligatory for the buttons as well). You simply have to have a margin for error.
  3. the position of the pad and buttons must be as non-intrusive as possible. It is great for us that 99% of the games we emulate are 4/3 but we really need to use that unused space, and preserve the game image as clean as possible.

I used to play a lot in Fba4droid, but i got fed up with all the soun and image issues, but i tell you one thing: those touch controls are 10/10. Mame4droid is up there as well. I still hope womeone woul make someting similar for Retroarch.

Thanks for the feedback!

Sadly the only thing we can do with RetroArch overlays is just rearrange inputs and change their graphics. I’m trying to find the best placement/size for the inputs to try and get the most out of it, but I too, am not perfectly happy because there are limitations in both RetroArch and the core about what can be done.

  1. About the deadzone, I’m not completely sure I understand. By removing the deadzone you mean that there should be no center position in the sticks that you can press and register no movement? . Removing it, imho, will be worse, specially when there’s no linear progression in movement (which is the case for libretro-prboom) because it’ll be annoying if you aim for the center-right and you miss for a few millimeters and end up on center-left… or maybe forward-right (in the case of the left analog). Because the libretro-prboom movement speed is not linear it just goes from 0% movement to 100% even if it was just millimeters. And this is particularly bad for a touchscreen because you have less of an indication to know how close to the center you placed your finger. . In my experience the best analog stick emulation you can make in a touchscreen is not when there’s no deadzone, but when the deadzone (and the touch limits) changes position when you place your finger in the screen area of the analog stick. What I mean is: placing your finger in the analog should not cause a movement, but it should place the thumbstick center in the tip of your finger so that you can just slide it in the direction you want to move, and this direction can then be registered with precision, instead of having to aim with your finger into the screen every time you want to touch it . Sadly this cannot be done in current RetroArch overlays. But you can try to minimize finger-aiming problems by trying to leave your fingers always placed inside the deadzone. Instead of lifting them up when you don’t want to move.

  2. I agree that touch areas should be bigger. And this one thing that can be done in current overlays. In my version of the retropad included I actually fixed a problem (in my view) from the official retropad.cfg where the left analog stick touch area was actually smaller than the visible limits for it. The buttons touch area is also slightly bigger already (also because it’s actually square, even though the graphics are rounded). The problem with this is that then you have less space available and then you have to place the buttons further apart, because they shouldn’t overlap.

  3. I agree as well, though considering that the buttons still need to be comfortable and because of point “2” they need to be further apart so that the touch area doesn’t overlap, I think the current result is pretty unobtrusive. Also note that in the screenshot I intentionally reduced the transparency. Normally I have a very high transparency on my overlays so that they are only slightly noticeable… Imho, it should be more about muscle memory than about looking at graphical boundaries in the screen.

Yeah, i noticed you enlarged the touch area compared to retropad, ant it is a very welcomed tweak, that’s why i gave the dual and doom as examples :slight_smile:

I understand what you are saying regarding the deadzone and it’s true. But, while i can not speak specifically for Doom, in my experience though, i often find myself getting shot in a shmup, let’s say Dodonpachi, because even though i press the stick, the ship doesn’t move, as i am exactly in the deadzone with my thumb. I always play the games with small, fast and precise thumb movement, as effortlessly as possible, but when the deadzone is as big as my thumb, i find that the movement that i need to do is too ample to do it fast enough and with consistency. Leaving the finger in the deadzone is not an option in most arcade games that are designed to be fast and ultra precise.

Give Fba4Droid a try if you haven’t and tell me what you think.

I would like to mess with your cfgs and reduce/eliminate the deadzone and maybe furter expand the touchzone of the analog and buttons for testing purposes, but i can’t for the life of me do more than rearange the buttons placement :frowning: I’m such a complete noob.

If you’re using an analog stick for digital direction inputs, there’s another option that may be of interest:

It is possible to configure where saturation kicks in using overlay%u_desc%u_saturate_pct. E.g. a value of 0.75 means the 75% inner part contains the entire analog range. Outside the 75% it will be fully saturated.

This will work sort of like a deadzone in the case of digital controls. Setting it very low, say 20-30%, will make the digital directions kick in after slight movement.