Operating system mouse pointer

Got an idea for OpenTTD? Post it here!

Moderator: OpenTTD Developers

Post Reply
Hezkore
Engineer
Engineer
Posts: 21
Joined: 02 Sep 2008 07:45

Operating system mouse pointer

Post by Hezkore » 01 Jan 2019 17:03

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.

User avatar
Expresso
Tycoon
Tycoon
Posts: 1696
Joined: 09 Aug 2004 00:14
Location: Gouda, the Netherlands

Re: Operating system mouse pointer

Post by Expresso » 01 Jan 2019 18:33

What issues are you talking about?

Hezkore
Engineer
Engineer
Posts: 21
Joined: 02 Sep 2008 07:45

Re: Operating system mouse pointer

Post by Hezkore » 01 Jan 2019 19:03

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.

Eddi
Tycoon
Tycoon
Posts: 7366
Joined: 17 Jan 2007 00:14

Re: Operating system mouse pointer

Post by Eddi » 01 Jan 2019 19:35

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.
You might not exactly be interested in Ferion, but if you are, have fun :)

Hezkore
Engineer
Engineer
Posts: 21
Joined: 02 Sep 2008 07:45

Re: Operating system mouse pointer

Post by Hezkore » 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.

Post Reply

Return to “OpenTTD Suggestions”

Who is online

Users browsing this forum: No registered users and 3 guests