• Please make sure you are familiar with the forum rules. You can find them here: https://forums.tripwireinteractive.com/index.php?threads/forum-rules.2334636/

Server Servers getting stuck on a bad gamemode / mismatch of difficulty

Some of our gameservers are getting these errors constantly, (this is with takeover enabled)

This started happening after the game got free on Epic Games

[27745.12] ScriptLog: Got bad game mode KFGameContent.KFGameInfo_Endless expected KFGameContent.KFGameInfo_VersusSurvival
[27745.12] DevNet: PreLogin failure: Server No longer available. Mismatch DesiredGameMode.

sometimes it spits out "Difficulty Mismatch"
- edit found one where it goes with that error.

[32746.88] ScriptLog: Got bad difficulty 1 expected 0.0000
[32746.88] DevNet: PreLogin failure: Server No longer available. Mismatch difficulty.

now this is pretty annoying since it basically gets a server stuck in a loop, and it will not let players connect to that specific server untill its rebooted, or "manually swapped to another map / gamemode"

anyone else with servers getting this problem?
 
Last edited:
  • Like
Reactions: CH1KN_Tenders
We run a bunch of servers, so its quite hard to catch this happening live, but when it happens the server gets stuck on versus survival, and when people try to join that specific server they get timed out atleast thats wat i’m reading off of the logs (direct connecting with open works fine), I’m kinda confused why nobody else with takeover servers is encountering this, it’s forcing us to put on a restart scheduler, i will try to update this topic if i find some more error logs regarding this
 
Last edited:
Upvote 0
Bump, still happening… Anyone else who runs takeover servers have this happen?? please help me get this resolved and get developers attention on this.. we would happily want to drop our systems restart scheduler as this is something players do not like and so do i, Thanks.
What exactly is still happening? The same errors you listed in the OP?
 
Upvote 0
I've checked through alot of container logs to see if i could find something regarding this, and wat i understand of these logs is that a client is somehow taking the server over with Versus Survival?

[30289.73] DevNet: NotifyAcceptingConnection: Server TheWorld accept
Y H
stdoutÍ“Š Ÿ¾ŸŒ4[30289.73] NetComeGo: Open TheWorld 91.230.116.*
H o
stdout㙊 Ÿ¾ŸŒ[[30289.73] DevNet: NotifyAcceptingChannel Control 0 server World KF-RIG.TheWorld: Accepted
o >
stdoutÉ¥Š Ÿ¾ŸŒ*[30289.73] DevNet: Remote platform is 189
> e
stdoutÿ“— Ÿ¾ŸŒQ[30289.73] Log: NMT_ServerTakeover: bUsedForTakeover: 1 bAvailableForTakeover: 1
e 4
stdoutÌ¨Ö Ÿ¾ŸŒŸ[30289.73] DevNet: Browse: KF-BurningParis?Name=Player?Team=255?AdminName=admin?AdminPassword=*****?Difficulty=0.0000?MaxPlayers=6?Game=KFGameContent.KFGameInfo_VersusSurvival?GameLength=1?party1=0xFF6A9BACDA34D032?PlayfabPlayerId=F1BF243EA415EE19?gamepassword=12?password=12?Private=1
4 2
stdout—›²Ÿ¾ŸŒ[30289.77] Log: LoadMap: KF-BurningParis?Name=Player?Team=255?AdminName=admin?AdminPassword=*****?Difficulty=0.0000?MaxPlayers=6?Game=KFGameContent.KFGameInfo_VersusSurvival?GameLength=1?party1=0xFF6A9BACDA34D032?PlayfabPlayerId=F1BF243EA415EE19?gamepassword=12?password=12?Private=1
2 i
stdoutº²Ÿ¾ŸŒU[30289.77] NetComeGo: Close TcpNetDriver_55 TcpipConnection_32 91.230.116.*
i H
stdout󿲟¾ŸŒ4[30289.77] ScriptLog: StaticOnClientConnectionClose
H ?
stdoutßIJŸ¾ŸŒ+[30289.77] Exit: TcpNetDriver_55 shut down
? N
stdout‘˜—ߥ¾ŸŒ:[30291.47] Log: Game class is 'KFGameInfo_VersusSurvival'
N K
stdoutûûšß¥¾ŸŒ7[30291.47] Init: Sockets: Socket queue 262144 / 262144
K [
stdoutý‹£ß¥¾ŸŒG[30291.47] DevNet: TcpNetDriver_56 TcpNetDriver listening on port 6217
[ A
stdout…¿‚¦¾ŸŒ-[30291.54] DevNet: Spawning: IpDrv.WebServer
A 5
stdout䥿‚¦¾ŸŒ![30291.54] Log: NetMode is now 1
5 t
stdout´ºÍ›¦¾ŸŒ`[30291.60] Log: Bringing World KF-BURNINGPARIS.TheWorld up for play (30) at 2022.09.26-18.55.42
t :
stdouté¾ŸŒ&[30291.60] ScriptLog: GamePassword 12
: ®
stdoutžó‚¦¾ŸŒ™[30291.60] DevOnline: UKFOnlineLobbySteamworks::GetLobbyServerIP returned false lobbyid: 0
® A
stdout¸€ƒ¦¾ŸŒ-[30291.60] DevLobby: LobbyJoinGame ServerIP=
A P
stdoutÑ„‰¦¾ŸŒ<[30291.60] DevOnline: Refreshing published game settings...
P ã
stdoutº”¦¾ŸŒÎ[30291.60] DevOnline: Server data: Ver: 9189, Ded: 0, Region: 255, Slots: 12, Pass: 1, Server: *******, Map: KF-BURNINGPARIS, Players: 0 Bots: 0, Game: KFGameInfo_VersusSurvival
 
Upvote 0
My 2 cents.

The matches get started in this game through "URLs". Example: /kf2-server/Binaries/Win64/KFGameSteamServer.bin.x86_64 kf-burningparis?AllowSeasonalSkins=0

When the takeover happens, the match gets started with a URL parameters taken from those that are configured by a quickmatch "create server" player. And instead of taking as a base URL whatever was configured by the server owner to start the server, the game takes some default value for base URL after the takeover match is over.

There must be code for this and the fix for this would be to identify where it is and alter it such that it relies on the server owner's configured base URL.
 
Upvote 0
Base url is just the startup parameter, but this has never been a issue and I’ve been running the same setup for years, untill i made this post till now its still a issue, this is our startup parameter or base url you are talking about ./Binaries/Win64/KFGameSteamServer.bin.x86_64 kf-crash?AllowSeasonalSkins=0?AdminName=admin?AdminPassword=kek?Difficulty=1?MaxPlayers=6 -Port=8327 -WebAdminPort=2051 -QueryPort=8328… whenever i reboot the server non of our servers are on “Versus Survival” this happens after takeover has completed and doesn’t happen always..
 
Upvote 0
Here's what I've found in the sources based on the error message you shared initially:

DesiredGameMode = ParseOption( Options, "Game" );
if( DesiredGameMode != "" && !(DesiredGameMode ~= GetFullGameModePath()) )
{
`log("Got bad game mode"@DesiredGameMode@"expected"@GetFullGameModePath());
ErrorMessage = "Server No longer available. Mismatch DesiredGameMode.";
return;
}

"DesiredGameMode" hints that this happens only when a takeover is attempted. This error can't be logged in any other scenario.

Then it compares two variables, "DesiredGameMode" and the result of a function call of "GetFullGameModePath. The ~= operator does, per documentation, this:

If the two inputs are String values, this performs a case-insensitive comparison and returns TRUE if the two strings are the same and FALSE if not.

But in your case these two strings aren't the same.

Thus, I would start with checking what is the value of "DesiredGameMode" in the webconsole's management console if you can get it via "getall" command and follow this lead.

It's totally a bad approach to troubleshoot this, but given that TWI doesn't do much, I'm just trying to be somewhat helpful here.

Also, I think it would help, if you are sure that this didn't happen before a certain update, if you had the class source for kfgameinfo and kfgameengine classes from that period, I'm just shooting in the dark here, but it doesn't look like there's a better option.
 
Upvote 0