For direct access use https://forums.oldunreal.com
It's been quite a while since oldunreal had an overhaul, but we are moving to another server which require some updates and changes. The biggest change is the migration of our old reliable YaBB forum to phpBB. This system expects you to login with your username and old password known from YaBB.
If you experience any problems there is also the usual "password forgotten" function. Don't forget to clear your browser cache!
If you have any further concerns feel free to contact me: Smirftsch@oldunreal.com

Mouse Inaccuracy Problem ... fixed...

To find and remove the bugs we needed every bug known in current 226. You can still review them here.
Post Reply
User avatar
TCP_Wolf
Administrator
Posts: 1078
Joined: Sun Mar 03, 2002 12:04 pm
Contact:

Mouse Inaccuracy Problem ... fixed...

Post by TCP_Wolf »

I've long had a problem with Unreal, especially when I got the higher resolution mice at my disposal. I very soon noticed that the mouse movement on the table you make physically is not 1 to 1 correspondent with the movement you make on the screen, and I'm not talking about simple sensitivity.

If it requies you X cm on your mousepad to turn Y degrees in the game, you would expect that you ALWAYS turn exactly Y degrees if you move X cm with your mouse, regardless how FAST you move it.

Not so... mouse acceleration in WinXP has already made a joke out of this assumption, but fortunately, a registry patch can take care of that. However, in Unreal itself, the input routine has hard coded "mouse smoothing" as they call it, which cannot be disabled. In every modern game it can, as it is one of the most useless functions ever imagined.

Anyway, if you simply comment out the whole mouse smoothing code in Unreal and replace it with 2 other lines of code, the mouse works perfectly and is also quite a bit more responsive. I cannot tell yet if this is also the reason why mouse movement becomes erratic at insanely high FPS rates, but I doubt it - and that again can be fixed by limiting the frame rate (VSYNCH on or OpenGL with the setting FrameRateLimit).

Now, since this is a scripting problem and I have used my own PlayerPawns overriding the input function in UTeamFix, I will make another patch and offer an "alternate mouse control" client side. By default, nothing will be different, so people who are used to the "old way" will never get to know anything has changed. You can disable the mouse smoothing in the future though, if you wish to!

I am posting this publicly because I expect the 227 fix to have a similar feature in the future. Of course servers running UTF won't need it then, but what about all the rest of the world :P

So here it is... my modified PlayerPawn Code exerpts, basically 2 variables were added and the input routine adjusted to use these. The changes are:
-client uses other sensitivity if chosen
-client uses either old unmodified mouse smoothing or simply does not

The client side menu is another issue, but since UTF uses its own menues, there is not much point posting that here.

Code: Select all

...
// 2 new variables for client side configuration
var() globalconfig bool bUTFnoMouseSmoothing;      // Epic screwup... again...
var() globalconfig float UTFMouseSensitivity;      // replacement sensitivity for UTF

...

event PlayerInput(float DeltaTime)
{
      ...
      // Smooth and amplify mouse movement
      SmoothTime = FMin(0.2, 3 * DeltaTime);

      FOVScale = DesiredFOV * 0.01111; 
      if (UTFMouseSensitivity > 0)
            MouseScale = UTFMouseSensitivity * FOVScale;
      else
            MouseScale = MouseSensitivity * FOVScale;
      aMouseX *= MouseScale;
      aMouseY *= MouseScale;

//************************************************************************

      if (!bUTFnoMouseSmoothing)
      {
            if ( bMaxMouseSmoothing )
            {
                  if ( !bMouseZeroed )
                  {
                        bMouseZeroed = ((aMouseX == 0) && (aMouseY == 0));
                        if ( aMouseX == 0 )
                        {
                              if ( SmoothMouseX > 0 )
                                    aMouseX = 1;
                              else if ( SmoothMouseX < 0 )
                                    aMouseX = -1;
                        }
                        if ( aMouseY == 0 )
                        {
                              if ( SmoothMouseY > 0 )
                                    aMouseY = 1;
                              else if ( SmoothMouseY < 0 )
                                    aMouseY = -1;
                        }
                  }
                  else
                        bMouseZeroed = ((aMouseX == 0) && (aMouseY == 0));
            }
      
            if ( (SmoothMouseX == 0) || (aMouseX == 0) 
                        || ((SmoothMouseX > 0) != (aMouseX > 0)) )
                  SmoothMouseX = aMouseX;
            else
            {
                  AbsSmooth = Abs(SmoothMouseX);
                  AbsInput = Abs(aMouseX);
                  if ( (AbsSmooth < 0.85 * AbsInput) || (AbsSmooth > 1.17 * AbsInput) )
                        SmoothMouseX = 5 * SmoothTime * aMouseX + (1 - 5 * SmoothTime) * SmoothMouseX;
                  else
                        SmoothMouseX = SmoothTime * aMouseX + (1 - SmoothTime) * SmoothMouseX;
            }
      
            if ( (SmoothMouseY == 0) || (aMouseY == 0) 
                        || ((SmoothMouseY > 0) != (aMouseY > 0)) )
                  SmoothMouseY = aMouseY;
            else
            {
                  AbsSmooth = Abs(SmoothMouseY);
                  AbsInput = Abs(aMouseY);
                  if ( (AbsSmooth < 0.85 * AbsInput) || (AbsSmooth > 1.17 * AbsInput) )
                        SmoothMouseY = 5 * SmoothTime * aMouseY + (1 - 5 * SmoothTime) * SmoothMouseY;
                  else
                        SmoothMouseY = SmoothTime * aMouseY + (1 - SmoothTime) * SmoothMouseY;
            }
      }
      else
      {
            SmoothMouseX = aMouseX;
            SmoothMouseY = aMouseY;
      }

      // adjust keyboard and joystick movements
      ...
}

...
defaultproperties
{
      ...
      bUTFnoMouseSmoothing=false
      UTFMouseSensitivity=0
}
Last edited by TCP_Wolf on Thu Jun 07, 2007 7:05 pm, edited 1 time in total.
-=]HONESTY PAYS[=-
Post Reply

Return to “Report Bugs in Unreal 226 versions”