[Release] ACE v1.0f

Re: [Release] ACE v1.0f

Postby UT Sniper (SJA94) » Mon Mar 25, 2019 4:40 pm

I set fps limit with Direct3D9 render, and also XC_Engine fps limiter(at different times). If I play with highperftoggle off and set fps limit with either to say 60 it will still force 167fps, it feels like highperftoggle is on because the fps is a rock solid 167fps, not like when you use a fps limiter with it off where it jumps around a few fps over the limit. My netspeed is normally on 20'000, or 25'000 on servers that support it. This happens with and without XC_Engine installed, with xc_engine installed it appears to be impossible to go over 200fps, which is nice when I'm playing offline to stop the engine going nuts.
Find the Latest player inis https://ooper.000webhostapp.com/ut/newinis/ (2019 version)
My latest UT themed game Spawn Killer 4 Game
User avatar
UT Sniper (SJA94)
Adept
 
Posts: 431
Joined: Thu Jun 24, 2010 10:35 pm
Location: England
Personal rank: noob programmer

Re: [Release] ACE v1.0f

Postby anth » Mon Mar 25, 2019 5:11 pm

UT Sniper (SJA94) wrote:I set fps limit with Direct3D9 render, and also XC_Engine fps limiter(at different times). If I play with highperftoggle off and set fps limit with either to say 60 it will still force 167fps, it feels like highperftoggle is on because the fps is a rock solid 167fps, not like when you use a fps limiter with it off where it jumps around a few fps over the limit. My netspeed is normally on 20'000, or 25'000 on servers that support it. This happens with and without XC_Engine installed, with xc_engine installed it appears to be impossible to go over 200fps, which is nice when I'm playing offline to stop the engine going nuts.


The highperftoggle option is only used to select the timing function ACE uses. Even when highperftoggle is off, ACE might still affect your framerate. The reason why ACE does this is to fix multi-core timing issues on the one hand and to block speedhacks on the other hand. That said, it is very much possible that ACE doesn't pick up your frameratelimit setting correctly. This is definitely the case for the XC_Engine frameratelimit because ACE doesn't know how to parse that one. The D3D9Drv one should be recognized, however. Could you paste your D3D9Drv settings so I can see what's going on?
anth
Skilled
 
Posts: 169
Joined: Thu May 13, 2010 2:23 am

Re: [Release] ACE v1.0f

Postby Higor » Mon Mar 25, 2019 5:54 pm

anth wrote:How did you configure the 195 limit? Did you use one of the UTGLR renderers and set the frameratelimit variable?


Code: Select all
FLOAT UXC_GameEngine::GetMaxTickRate()
{
   guard(UXC_GameEngine::GetMaxTickRate);
   ULevel* ALevel = Level();
   if (ALevel && ALevel->NetDriver && !GIsClient)
      return Clamp( (&ALevel->NetDriver->NetServerMaxTickRate)[LanPlay], 10, 120);
   else
   {
      FLOAT Limit = 200.f;
      if( ALevel && ALevel->NetDriver && ALevel->NetDriver->ServerConnection )
         Limit = ALevel->NetDriver->ServerConnection->CurrentNetSpeed/64;
      else if (ALevel && ALevel->DemoRecDriver && !ALevel->DemoRecDriver->ServerConnection)
         Limit = Clamp( (&ALevel->DemoRecDriver->NetServerMaxTickRate)[LanPlay], 10, 120);

      //Limit FPS!
      if ( ClientFrameRateLimit >= 4 )
         Limit = Min( (FLOAT)ClientFrameRateLimit, Limit);
      return Clamp( Limit, 4.0f, 200.0f);
   }
   unguard;
}


Code: Select all
   else if (ParseCommand(&Cmd, TEXT("FPS")) || ParseCommand(&Cmd, TEXT("FPSLimit")))
   {
      while (*Cmd == ' ')
         Cmd++;
      INT Limit = appAtoi(Cmd);
      if ( !Limit )
         Ar.Logf( NAME_XC_Engine, TEXT("Current frame rate limit is %i, use 'FPS [4-200]' to specify a framerate limit."), ClientFrameRateLimit);
      else
      {
         ClientFrameRateLimit = Clamp(appAtoi(Cmd), 0, 200);
         SaveConfig();
         Ar.Logf(NAME_XC_Engine, TEXT("Client frame rate limit set to %i"), ClientFrameRateLimit);
      }
   }


Code needs a series of consistency changes and cleanups, but that's pretty much what it does.
Sleeping is left to the launcher, or ACE's Engine hook.
Higor
Godlike
 
Posts: 1726
Joined: Sun Mar 04, 2012 6:47 pm

Re: [Release] ACE v1.0f

Postby anth » Mon Mar 25, 2019 6:09 pm

ack. What is the full type and context of the ClientFrameRateLimit variable? Is this variable exposed directly to UScript?
anth
Skilled
 
Posts: 169
Joined: Thu May 13, 2010 2:23 am

Re: [Release] ACE v1.0f

Postby Higor » Mon Mar 25, 2019 6:22 pm

Helper func
Code: Select all
XC_CORE_API UProperty* FindScriptVariable( UStruct* InStruct, const TCHAR* PropName, INT* Found)
{
   FName NAME_PropName = FName( PropName, FNAME_Find);
   if ( NAME_PropName != NAME_None )
   {
      for( TFieldIterator<UProperty> Prop( InStruct ); Prop; ++Prop )
         if( Prop->GetFName() == NAME_PropName )
         {
            if ( Found ) //Useful when finding many props and checking all were found on a single test.
               (*Found)++;
            return (UProperty*) *Prop;
         }
   }
   return NULL;   
}


This is how I'm doing it to inform servers of client tickrate (a netcode overhaul that's coming for XCGE 24)
Just call
Code: Select all
Engine->GetMaxTickRate();


Spoiler: show
Code: Select all
   guard(UpdateRender);
   if ( Engine->Client->Viewports(0)->RenDev != RenDev ) //RenDev is our cached pointer, we're doing this because the game may be able to switch it
   {
      RenDev = Engine->Client->Viewports(0)->RenDev;
      RenDevTickRate = NULL;
      UProperty* TickRateProp;
      if ( RenDev   
         && (TickRateProp=FindScriptVariable( RenDev->GetClass(), TEXT("FrameRateLimit")))
         && TickRateProp->IsA(UIntProperty::StaticClass()) )
      {
         RenDevTickRate = (INT*) ((BYTE*)RenDev + TickRateProp->Offset);
      }
   }
   unguard;

Code: Select all
   //** This is a net client **//
   // Update TICKRATE on XC_Engine server
   if ( XCGE_Server_Ver >= 24 )
   {
      INT NewTickRate = appRound(Engine->GetMaxTickRate());
      if ( RenDevTickRate && (*RenDevTickRate > 4) )
         NewTickRate = Min(NewTickRate, *RenDevTickRate);
      if ( (NewTickRate >= 4) && (NewTickRate <= 200) && (NewTickRate != TickRate) && ((TickRate == 0) || (NetDriver->Time - LastTickRateTime > 0.5)) )
      {
         TickRate = NewTickRate;
         LastTickRateTime = NetDriver->Time;
         NetDriver->ServerConnection->Logf( TEXT("TICKRATE %i"), TickRate);
      }
   }






But if you wanna do it the hard way :loool:
Code: Select all
   new( TheClass,TEXT("ClientFrameRateLimit"), RF_Public) UIntProperty(CPP_PROPERTY(ClientFrameRateLimit), TEXT("XC_GameEngine"), NativeEditConfig);


Code: Select all
   static INT* XCGE_CFRL_Ptr = NULL;
...
   UProperty* XCGE_CFRL_Prop = FindScriptVariable( Engine->GetClass(), TEXT("ClientFrameRateLimit"));
   if ( XCGE_CFRL_Prop )
      XCGE_CFRL_Ptr = (INT*) ((BYTE*)Engine + XCGE_CFRL_Prop->Offset);



=====================
Oh yeah, did i tell you that when I switched to a Glide wrapper, ACE would kick me when going windowed due to Glide <-> Software change?
That was on v08h tho.
Higor
Godlike
 
Posts: 1726
Joined: Sun Mar 04, 2012 6:47 pm

Re: [Release] ACE v1.0f

Postby UT Sniper (SJA94) » Mon Mar 25, 2019 7:17 pm

anth wrote:Could you paste your D3D9Drv settings so I can see what's going on?



This is the current settings I use, I did try a fresh render install(included removing the 3d9 settings so ut made afresh copy) a while ago the problem still persisted:
Code: Select all
[D3D9Drv.D3D9RenderDevice]
FrameRateLimit=146
Translucency=False
VolumetricLighting=False
ShinySurfaces=False
Coronas=False
HighDetailActors=False
DetailTextures=False
UseBGRATextures=True
UseAA=False
UseSSE=False
UseTexIdPool=False
DynamicTexIdRecycleLevel=100
UseTexPool=False
SwapInterval=0
OneXBlending=False
TruFormMinVertices=0
TruFormTessellation=3
UseTruForm=False
NumAASamples=0
RequestHighResolutionZ=False
MaskedTextureHack=False
UseVertexProgram=False
UseCVA=False
UseMultiDrawArrays=False
AAFilterHint=0
TexDXT1ToDXT3=False
BufferClippedActorTris=False
SinglePassDetail=False
ColorizeDetailTextures=False
DetailClipping=False
UseDetailAlpha=False
RefreshRate=144
MaxTMUnits=0
NoFiltering=False
UseFilterSGIS=False
MaxAnisotropy=0
UseTNT=False
Use4444Textures=false
UseS3TC=False
UseAlphaPalette=False
AutoGenerateMipmaps=False
UseTrilinear=False
UsePrecache=False
AlwaysMipmap=True
ShareLists=False
UsePalette=False
UseMultiTexture=False
UseZTrick=False
MaxLogTextureSize=8
MinLogTextureSize=0
MaxLogVOverU=8
MaxLogUOverV=8
GammaCorrectScreenshots=True
GammaOffset=0.090000
LODBias=-5.000000
DescFlags=0
GammaOffsetBlue=0.000000
GammaOffsetGreen=0.000000
GammaOffsetRed=0.000000
Description=GTX 750 TI
CacheStaticMaps=False
Use16BitTextures=false
ZRangeHack=False
NoAATiles=False
UseSoftwareVertexProcessing=False
UsePureDevice=False
UseTripleBuffering=False
SmoothMaskedTextures=False
UseSSE2=False
BufferTileQuads=False
SinglePassFog=False
DetailMax=0
Use565Textures=False
SceneNodeHack=True
UseFragmentProgram=False
Find the Latest player inis https://ooper.000webhostapp.com/ut/newinis/ (2019 version)
My latest UT themed game Spawn Killer 4 Game
User avatar
UT Sniper (SJA94)
Adept
 
Posts: 431
Joined: Thu Jun 24, 2010 10:35 pm
Location: England
Personal rank: noob programmer

Re: [Release] ACE v1.0f

Postby BaTHuK » Tue May 28, 2019 5:55 pm

Hello

People are getting troubles with ACE after getting the last win 10 update (1903 build)
On the previous ace versions (ace 08) it says this: you have been kicked from the server because ace has found a corrupted file DDraw.dll
Image
On the newest ones (1.0) it says that any render file (.dll) is corrupted
Image
I guess after the update DDraw.dll was changed and it needs to be whitelisted in the ACE.
Can anyone help with that?

Thanks
BaTHuK
Novice
 
Posts: 13
Joined: Sat May 27, 2017 11:34 am

Re: [Release] ACE v1.0f

Postby anth » Sun Jun 02, 2019 9:47 pm

I should have a fix for this ready very soon...
anth
Skilled
 
Posts: 169
Joined: Thu May 13, 2010 2:23 am

Previous

Return to Anti-Cheat Releases

Who is online

Users browsing this forum: No registered users and 1 guest