RPTools / maptool

Virtual Tabletop for playing roleplaying games with remote players or face to face.
http://rptools.net
GNU Affero General Public License v3.0
794 stars 260 forks source link

[Feature]: Touch support #3371

Open thelsing opened 2 years ago

thelsing commented 2 years ago

Feature Request

Moving the map around with on a touch screen is currently not possible. Same with zooming.

The Solution you'd like

I would like to use common touch gestures to control the map:

Alternatives that you've considered.

Keep it as it is.

Additional Context

No response

thelsing commented 2 years ago

I added TUIO support to my fork of the libgdx-jogl-backend. With this the gesture recognition of libgdx can be used. For tuio see https://www.tuio.org . There exists converters for native touch events to TUIO for mac, linux and windows, but you can also send TUIO events from an android phone with apps.

I have multitouch working at a fork, but I will test it a bit with real games before submitting a PR.

bubblobill commented 2 years ago

is possible, touch and hold becomes a right-click that then drags the map (on Windows)

thelsing commented 2 years ago

After a bit playtesting the following things came up:

FullBleed commented 2 years ago

What resolution were you using?

Have you had a chance to test using a touch pen?

I think being able to make our own overlays for touchscreen use would probably be a good idea. That would mean we'd need functions or hotkeys for every toolbar item and a "hotkey()" function to trigger them. That would help build touch friendly overlays for the menus, too.

cwisniew commented 2 years ago
  • it's nearly impossible to connect to a server via touch because the menü is to small, maybe an option to open the "connect to server" dialog on startup could help

This wont help with the other menu options (or reconnecting if you get disconnected)

  • a button so lock screen position and zoom would be nice. we often move the map accidentally when moving a token

Doesn't seem like a very "touchscreeny" solution, probably would be better to require two fingers for map movement or something similar. I know i would find this to be awkward if I tried to use it

thelsing commented 2 years ago

We use use MT as a battle map on a "magic mirror" lying flat on a table. We put minis on the mirror. A 42'' FHD TV is about 1-2 cm under the glas. so each player has a slightly different perspective so a pen doesn't help. That's why touches miss frequently when trying to move tokens. Scrolling with two fingers is not ideal IMO because it's hard to differentiate it from zooming with two fingers. We frequently touch the sceen with on more than one point (two or more player trying to move things or pointing at things, a finger and a cup of water or a metallic pen at the same time and similar stuff) This usually happens in combat. We have to stop the action and realign minis an map which takes some time. A lock button could help. I'll try it out with my group.

The workflow on the battle map is currently: 1) start MT 2) connect to server 3) switch to fullscreen 4) play 5) dm stops server 6) close MT

Currently I need a mouse for 2+3. So I guess I need an option for both. The "connect to server" dialog should probably pop up when server disconnects too.

FullBleed commented 2 years ago

You indicated that the full screen buttons were too small... I asked about the resolution you were using because if it's 1080p then increasing the size of the buttons in MT won't make them functional when using 4K (they'll be 1/4 the size of the 1080p buttons.) Any fix for 1080p might not even work well with 1440p or 2K when it comes to touch.

3 or 4 sizes for every button might do the trick along with some kind of selector... but that won't help with menu options (like "Start Server").

I think the only way to currently build a truly scalable UI in MT is using overlays (I've made my character sheets totally scalable using frame5) ... hence the suggestion that we get a hotkey() function (to be able to trigger menu item hotkeys with macrolinks) and more functions to activate current toolbar actions.