Random Server Crashes..

General Comments, Questions about all things OmnipotentS that don't go in other topics/forums
User avatar
pooty
Posts: 4357
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Random Server Crashes..

Post by pooty »

So some weirdness.

I tried my scoring mutator on the server. Worked fine, other than time issue, until end of game then never ended. Worked fine locally (dedicated UT server with seperate client). But that's longer term.

We (Mclovin,Reshred, Sanka) tried playing without UTCompOmni to see if we got any funky end round core stuff. Nope. Three rounds perfect. I am going to leave UTCompOmni off for tonight and see. I'm more concerned with the End of round crap (which I think was related to the end of round crashing), than the custom scoring (which seems to have is own issues). So if tonight goes well then we can focus on what in UTCompOmni is messing with the end of round... but I don't think they have the issue at CEONSS do they? Might be worth looking at what's different between our current version and theirs.
So fixing UTComp is the priority there's too much goodness there (Netcode and Damage Points) so have to fix it.
User avatar
captainsnarf
Posts: 2632
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: Random Server Crashes..

Post by captainsnarf »

Yeah, I'm pretty sure there will not be any crashing with utcomp turned off.

Also I have to say your OmniONSScoring mutator is genius :) excellent job there :D
User avatar
pooty
Posts: 4357
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Random Server Crashes..

Post by pooty »

Yeah, I'm pretty sure there will not be any crashing with utcomp turned off.
Also I have to say your OmniONSScoring mutator is genius :) excellent job there :D
Thanks. Sweet to know we can replace a function. I just can't get the timer reset properly. Its like the 2pt win timer reset is hardcoded elsewhere. Makes no sense. Even tried this at the end of my MainCoreDestroyed
//reset timelimit
ONSGame.RemainingTime = 60 * ONSGame.TimeLimit;
ONSGame.GameReplicationInfo.RemainingMinute = ONSGame.RemainingTime;
if (bDebug) log("CustomMainCoreDestroyedOver..",'OmniONSScoring');

Had no effect. Calls it runs it no errors, and next round starts, timer still has the remaining time from last round -- it should have changed.

On the UTComp end round stuff...
I think its something in either the BS_xPlayer...
I noticed ONSPlus has its own GRI, but UTCompOmni merged those into SRI?
Damn that ONSPlus code is ugly.

I don't recall but was there a reason we put the ONSPlus stuff in UTComp vs its own package?
User avatar
pooty
Posts: 4357
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Random Server Crashes..

Post by pooty »

We (Mclovin,Reshred, Sanka) tried playing without UTCompOmni to see if we got any funky end round core stuff. Nope. Three rounds perfect.
Spoke too soon. Still weirdness with resets at end of round. UTCompOmni isn't running so its not that. Happened on Minus just a few minutes ago.
Hold on. Server Browser is showing UTCompOmni, but its not on the command line.... maybe it's listed as server package/actor.
User avatar
captainsnarf
Posts: 2632
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: Random Server Crashes..

Post by captainsnarf »

pooty wrote: Fri Mar 24, 2023 7:33 pm
Yeah, I'm pretty sure there will not be any crashing with utcomp turned off.
Also I have to say your OmniONSScoring mutator is genius :) excellent job there :D
Thanks. Sweet to know we can replace a function. I just can't get the timer reset properly. Its like the 2pt win timer reset is hardcoded elsewhere. Makes no sense. Even tried this at the end of my MainCoreDestroyed
//reset timelimit
ONSGame.RemainingTime = 60 * ONSGame.TimeLimit;
ONSGame.GameReplicationInfo.RemainingMinute = ONSGame.RemainingTime;
if (bDebug) log("CustomMainCoreDestroyedOver..",'OmniONSScoring');

Had no effect. Calls it runs it no errors, and next round starts, timer still has the remaining time from last round -- it should have changed.

On the UTComp end round stuff...
I think its something in either the BS_xPlayer...
I noticed ONSPlus has its own GRI, but UTCompOmni merged those into SRI?
Damn that ONSPlus code is ugly.

I don't recall but was there a reason we put the ONSPlus stuff in UTComp vs its own package?
They both replace the PlayerController class with their own class. To make ONSPlus and UTComp work together I merged all of the ONSPlus PlayerController stuff into UTComp's PlayerController (BS_xPlayer). They both had GameRulesModifiers also, but since those can work together we just load both of them (instead of merging them into one class).

Yeah, I hated working on ONSPlus :lol:
User avatar
pooty
Posts: 4357
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Random Server Crashes..

Post by pooty »

Server Browser is showing UTCompOmni, but its not on the command line.... maybe it's listed as server package/actor.
So yes UTCompOmni was still in serverpackages...so lets try it tonight, this time UTComp is truly off.
User avatar
pooty
Posts: 4357
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Random Server Crashes..

Post by pooty »

So I have some info on UTComp end game issue, I put some tracking code in my custom scoring mutator..

With UTComp

Code: Select all

ScriptLog: START MATCH
OmniONSScoring: Assigning Custom Points
OmniONSScoring: Begin Client Reset
OmniONSScoring: C.RoundHasEnded called
OmniONSScoring: PC.ClientRoundEnded called for p)o(Oty
OmniONSScoring: C.RoundHasEnded called
OmniONSScoring: C.RoundHasEnded called
Warning: MutOmniONSScoring ONS-AAA_FrostBite-ScoringTester.MutOmniONSScoring (Function OmniONSScoring.MutOmniONSScoring.MainCoreDestroyedOmniScoring:037C) Accessed None 'C'
OmniONSScoring: End Client Reset
OmniONSScoring: RemainingTIme=88
OmniONSScoring: RemainingTIme Setting=120
OmniONSScoring: CountDown Setting=4
OmniONSScoring: CustomMainCoreDestroyedOver..
ScriptLog: Reset Onslaught.
Log: Collecting garbage
Log: Purging garbage
Log: Garbage: objects: 71972->70353; refs: 982402
Warning: UTComp_ONSPlayerReplicationInfo ONS-AAA_FrostBite-ScoringTester.UTComp_ONSPlayerReplicationInfo (Function UTCompOmni.UTComp_ONSPlayerReplicationInfo.ONSPlusFindPlayerStart:04DA) Accessed None 'SelectedPC'
Warning: UTComp_ONSPlayerReplicationInfo ONS-AAA_FrostBite-ScoringTester.UTComp_ONSPlayerReplicationInfo (Function UTCompOmni.UTComp_ONSPlayerReplicationInfo.ONSPlusFindPlayerStart:04DA) Accessed None 'SelectedPC'
Warning: CSLinkNukeProjectile ONS-AAA_FrostBite-ScoringTester.CSLinkNukeProjectile (Function CSLinkNuke.CSLinkNukeProjectile.HealRadius:0021) Accessed None 'Owner'
OmniONSScoring: Assigning Custom Points
Warning: ONSOnslaughtGame ONS-AAA_FrostBite-ScoringTester.ONSOnslaughtGame (Function Onslaught.ONSOnslaughtGame.SetEndGameFocus:01B9) Accessed None 'P'
OmniONSScoring: Begin Client Reset
OmniONSScoring: End Client Reset
OmniONSScoring: RemainingTIme=0
OmniONSScoring: RemainingTIme Setting=120
OmniONSScoring: CountDown Setting=4
OmniONSScoring: CustomMainCoreDestroyedOver..
ScriptLog: ProcessServerTravel: ONS-DesertJunkYard-V13?Game=Onslaught.ONSOnslaughtGame
At the end of the game I can run around etc. Key is this line
Warning: ONSOnslaughtGame ONS-AAA_FrostBite-ScoringTester.ONSOnslaughtGame (Function Onslaught.ONSOnslaughtGame.SetEndGameFocus:01B9)
Without UTComp I don't get that warning and it works fine.
https://ericdives.com/UT2004-UnCodex/So ... e.html#788

Code: Select all

unction SetEndGameFocus(PlayerReplicationInfo Winner)
{
    local Controller P;
    local PlayerController player;

    if ( Winner != None )
    {
        if (Winner.Team.TeamIndex == 0)
            EndGameFocus = PowerCores[FinalCore[1]];
        else
            EndGameFocus = PowerCores[FinalCore[0]];
    }
    if ( EndGameFocus != None )
        EndGameFocus.bAlwaysRelevant = true;

    for ( P=Level.ControllerList; P!=None; P=P.nextController )
    {
        player = PlayerController(P);
        if ( Player != None )
        {
            if ( !Player.PlayerReplicationInfo.bOnlySpectator )
                PlayWinMessage(Player, (Player.PlayerReplicationInfo.Team == GameReplicationInfo.Winner));
            Player.ClientSetBehindView(true);
            Player.CameraDist = 10;
            if ( EndGameFocus != None )
            {
                Player.ClientSetViewTarget(EndGameFocus);
                Player.SetViewTarget(EndGameFocus);
            }
            Player.ClientGameEnded();
            if ( CurrentGameProfile != None )
                CurrentGameProfile.bWonMatch = (Player.PlayerReplicationInfo.Team == GameReplicationInfo.Winner);
        }
        P.GameHasEnded();
    }
}
So P is the loop variable. Likely failing on PlayerController(P), but what could UTComp be doing to cause that?
User avatar
pooty
Posts: 4357
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Random Server Crashes..

Post by pooty »

I've also found a timer bug in the game. In ONS, if you kill the core in regulation and that doesn't win the match, the timer doesn't get reset, it eventually syncs to the right time but initially its off and shows the remaining time from the previous round. I've verified it with no mutators running.

But Even when I try to set it in MainCoreDestroyed, to fix it....

Code: Select all

		    if (bDebug) log("RemainingTIme="$ONSGame.RemainingTime,'OmniONSScoring');
		    ONSGame.RemainingTime = 60 * ONSGame.TimeLimit;
		    ONSGame.GameReplicationInfo.RemainingMinute = ONSGame.RemainingTime;
		    if (bDebug) log("RemainingTIme Setting="$ONSGame.RemainingTime,'OmniONSScoring');
		    ONSGame.CountDown = ONSGame.Default.Countdown;
		    if (bDebug) log("CountDown Setting="$ONSGame.CountDown,'OmniONSScoring');
		    ONSGame.Timer();  // Need this to reset timer 
It just ignores and continues the bug. There's likely something in TeamGame that's messed up. But I don't think that's an issue for custom scoring..since the base game works like that. So I'll declare success on that.

I might try fixing end round stuff in the MainCoreDestoryed function.
User avatar
pooty
Posts: 4357
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Random Server Crashes..

Post by pooty »

Sort of works. I can stop the running around but all the stuff in SetEndGameFocus never runs, so you get to broadcast like "Red Team is the Winner" or pretty much anything else in that function. Once we figure out why UTComp tramples that, we'll be good.
User avatar
pooty
Posts: 4357
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Random Server Crashes..

Post by pooty »

Ok I think I fixed it mostly, its on the server (and in git)

I used my new Custom Scoring Mutator... but the real fix was in UTComp.

Code: Select all

function bool CheckEndGame(PlayerReplicationInfo Winner, string Reason)
{
	
	// pooty attempt fix end of round drama.
    /*if(ONSOnslaughtGame(Level.Game) != none)
    {    	 return true;         
    }*/

    if(UTCompMutator.bEnableTimedOvertime && Level.Game.bOverTime)
    {
        if(!OvertimeOver())
            return false;
    }
    if ( NextGameRules != None )
		return NextGameRules.CheckEndGame(Winner,Reason);
		
	return false;  // was true -- True end s the game.  We don't want to end it. - 03/2023 pooty
}
Now all that being said I tested it quickly... seems to work, although its kind of funny the bots still run around at the end... which I found amusing.

Can't say it won't crash, but I think this was the root: return true at the end.. any time UTComp.CheckEndGame got called it ended the game, without going throught the other rules. But UTComp isn't the decider of ending the game (return true), unless its UTCompMutator.bEnableTimedOvertime which for us doesn't matter since OT core drains determine winner.

Hopefully its fixed, but I won't be shocked if it crashes still... between UTComp and the ONSPlus stuff in there.. its a bit of a mess. I guess we will find out tonight
Post Reply