Mouse Sensitivity / Speed in Full Screen Mode

I'm developing a Mouse based game - The user only has to position the mouse on the right place at the right time and click :-).

I'm using a 800x600 screen. While debugging, I'm running the game in a window, and mouse feel is fine. When I switch to full screen mode (uncomment graphics.ToggleFullScreen() in my Game's c'tor) the game looks the same but the mouse is way too fast. It's like setting the "Pointer Speed" in the Console Panel/Mouse a few notches up towards "Fast".

Is this intentional? Is there a way to control the mouse speed that's specific to full screen mode? Is there some settings I can use to change the sensitivity (and I'll have to revert it when leaving the game)?

[719 byte] By [BarakOri] at [2007-12-26]
# 1

If you are following mouse implementation from the docs (Mouse.WindowInstance = Window.Instance) then you will notice that the mouse X,Y is updated in the game loops Update() method.

I would think that calls to Update() happen much quicker in fullscreen.

This is just a hunch so I could be wrong.

regards

Fluxtah

Fluxtah at 2007-9-4 > top of Msdn Tech,Game Technologies: DirectX, XNA, XACT, etc.,XNA Game Studio Express...
# 2
Still, mouse position should be affected by the frame rate - I expect that if I [physically] move the mouse an inch to the right at a certain speed (because speed affects pointer acceleration), the pointer on the screen would consistently move a certain amount of pixels (Or even better - a certain percentage of the screen width, but I'll settle for pixels), regardless of the frame rate.

I think the Update method is simply the place for me to poll the mouse position.

BarakOri at 2007-9-4 > top of Msdn Tech,Game Technologies: DirectX, XNA, XACT, etc.,XNA Game Studio Express...
# 3

I believe this is because mouse sensitivity is based on your native Windows desktop resolution. When you switch to 800x600 fullscreen mode, the sensitivity is still based on whatever your desktop resolution was. It's a Windows thing, not an XNA/XInput thing. One inch = x pixels goes a lot farther on an 800x600 screen than it does on a 1024x768 or 1280x1024 desktop.

ProfEclipse at 2007-9-4 > top of Msdn Tech,Game Technologies: DirectX, XNA, XACT, etc.,XNA Game Studio Express...
# 4
Okay, so the question is still valid - is there a way to change the sensitivity while in the game (and restore it when leaving the game)?
BarakOri at 2007-9-4 > top of Msdn Tech,Game Technologies: DirectX, XNA, XACT, etc.,XNA Game Studio Express...
# 5

The simplest thing to do is hide the mouse cursor and draw your own. Then, track mouse deltas and scale the values any way you want. You can provide a settings screen that allows the user to set sensitivity and your code can interpret that however it needs to.

As to changing the actual Windows mouse sensitivity, there is a Win32 API function (SystemParameterInfo) to retrieve and set the information. It's probably not a good thing to do though. If something happens and your application crashes, you could leave the user with a turtle for a mouse.

ProfEclipse at 2007-9-4 > top of Msdn Tech,Game Technologies: DirectX, XNA, XACT, etc.,XNA Game Studio Express...