Page 1 of 1

Operating system mouse pointer

Posted: 01 Jan 2019 17:03
by Hezkore
There should really be an option to disable SDL from hiding the OS mouse pointer, and instead hide the in-game mouse pointer.
There are so many issues with the in-game mouse pointer that it's actually kept me and some of my friends from playing the game we enjoyed so many years ago.
Alternatively, OpenTTD should use something like `SDL_CreateCursor` to create a real hardware cursor.

Re: Operating system mouse pointer

Posted: 01 Jan 2019 18:33
by Expresso
What issues are you talking about?

Re: Operating system mouse pointer

Posted: 01 Jan 2019 19:03
by Hezkore
I was hoping we wouldn't have to go into this, but I'll name a few which all relate to the mouse being drawn by the game and not by the actual OS.

Playing on larger maps on an older computer (sometimes I play this on my 'retro' machine); the mouse will feel extremely sluggish.
This is due to the game not keeping a consistent frame rate and the in-game mouse cursor not being able to keep up with the actual mouse position.

Playing on smaller maps on a newer computer; the mouse renders so fast it becomes invisible when moving around.
No Vertical Sync or Triple buffering option in your GPU settings will solve this.

Playing on very high resolutions; the mouse will be very small, to the point where it's almost invisible.

Changing the interface size will also scale the mouse cursor.
I am very happy with the size of the interface when using a different font as well as double sized interface.
But the mouse looks atrocious.
Example:
Image

One of the key rules to making a game feel responsive is to never interfere with the controls in any way.
Which means that the mouse cursor should act exactly like the player is used to outside of the game.
Never change the speed of the mouse, never change the (double)/click speed, never add or change the acceleration of the mouse etc.
A Mac mouse cursor should act like it does on every Mac computer, a Windows mouse cursor should act like it does on Windows.
Any change -- big or small -- means the player has to adjust to the new changes, making things feel unfamiliar and also less responsive.
OpenTTD doesn't break all of these rules of course, but in general the mouse is a bit unpolished and doesn't act like you'd expect it to, which makes it feel "off".
A hardware/OS cursor is what we're used to, so a "simple" solution would be to just use that instead of trying to mimic the OS' mouse cursor.

Re: Operating system mouse pointer

Posted: 01 Jan 2019 19:35
by Eddi
there are two separate issues in here:
  1. the sluggishness of the interface on slow maps is a problem with the architecture of the game, where the interface is deeply interwoven with the game loop. to separate this is a difficult task and involves touching code that has existed nearly untouched for decades.
  2. using SDL cursor stuff needs porting the game to SDL2, which is also not easy
i know some people tried looking into either of these projects, but i don't know how far they have gotten.

Re: Operating system mouse pointer

Posted: 01 Jan 2019 19:39
by Hezkore
How to fix this would be:

1. Add option to options menu to "Use hardware cursor"
2. If "Use hardware cursor" is enabled; do NOT call SDL_ShowCursor( 0 ) and never render in-game cursor.

Re: Operating system mouse pointer

Posted: 09 Apr 2020 12:08
by gpmaster
Hello all,
Any ideas or prices in solving this issue? I'm struggling as well with built in pointer and mouse scroll zoom not functioning issue..

Re: Operating system mouse pointer

Posted: 20 Apr 2022 05:13
by njn
Hezkore wrote: 01 Jan 2019 19:39 How to fix this would be:

1. Add option to options menu to "Use hardware cursor"
2. If "Use hardware cursor" is enabled; do NOT call SDL_ShowCursor( 0 ) and never render in-game cursor.
Is this still an issue for you? If so, we could experiment with an option to turn off the custom cursor, like the SDL driver already does for Emscripten here:

https://github.com/OpenTTD/OpenTTD/blob ... v.cpp#L202

Re: Operating system mouse pointer

Posted: 01 Jul 2022 19:22
by leifbk
On a big 4K screen, it can be very hard to locate the mouse pointer.

An alternative to using the system mouse pointer could be to add a setting to make the game's own mouse pointer double size.

Re: Operating system mouse pointer

Posted: 02 Jul 2022 02:50
by Eddi
i'm fairly sure the mouse pointer uses the gui zoom setting.

and you could just make a NewGRF with a bigger mouse pointer. (can be made static to avoid multiplayer problems)

Re: Operating system mouse pointer

Posted: 02 Jul 2022 15:24
by jfs
The game mouse pointer is scaled by the "Interface size" setting in Options.

Re: Operating system mouse pointer

Posted: 02 Jul 2022 17:06
by leifbk
jfs wrote: 02 Jul 2022 15:24 The game mouse pointer is scaled by the "Interface size" setting in Options.
It would be nice to have a separate setting for the pointer, though. I like the default scaling of everything but the mouse pointer, which is vanishingly small. I don't want huge vehicle windows.

Re: Operating system mouse pointer

Posted: 02 Jul 2022 18:08
by Eddi
we can't have a setting for everything. you can use the options we already have.