Page 1 of 1

Wad causes Level Authentication Error to everybody but the host.

Posted: Tue Jan 29, 2013 8:28 pm
by TerminusEst13
Hi.

Let me start by getting the obvious answers out of the way. No, Doom2.wad is not edited. Yes, I got it legally and so my version is fine. Yes, everyone has the same wad. No, there's nothing in the skins/announcers folders. Yes, I am absolutely sure about all of this.
Right, cool? Cool.

I was trying to work on an expansion to Samsara adding more classes; The problem is that on loading it on a server, everyone gets kicked out with an authentication error--even if they're using the exact same version that the host is using.
The only time I haven't had this problem is when I host a Listen server via Doomseeker and join via the server console--and even then, everyone else but me gets kicked out whenever I invite them.

So I've been doing some digging through the wads, trying to find offending lumps, and it appears the offenders are TEAMINFO, SBARINFO, and the ACS. If I delete all of them, it runs fine. If I leave even one in, it's an authentication error.
I'm curious about what in the world it would be that is causing an authentication error, and what I could do to work around it.


In case you would like to personally verify this and/or just download shit for the sake of it, here's the builds I'm using.
https://www.dropbox.com/s/o8olyaopo5ubd ... -beta3.pk3 - The beta version of Samsara I'm working with.
https://www.dropbox.com/s/w1qabjf4ojtpd ... kha-v0.pk3 - This is the version of Dukkha that causes the authentication error.
https://www.dropbox.com/s/axlcbj4yti2cp ... -works.pk3 - This is the version of Dukkha with TEAMINFO, SBARINFO, and the ACS removed, and does not cause an authentication error.

In case you don't want to download shit just for the sake of it, here are the lumps in question, and the specific area of code SBARINFO modifies.
Spoiler: TEAMINFO (Open)

Code: Select all

ClearTeams

Team "Heroes"
{
	//Name "Heroes"
	PlayerColor "00 00 FF"
	TextColor "Blue"
	//WinnerPic "winerblu"
	//LoserPic "loserblu"

	PlayerStartThingNumber 5080
    AllowCustomPlayerColor
}

Team "Villains"
{
	//Name "Villains"
	PlayerColor "FF 00 00"
	TextColor "Red"
	//WinnerPic "winerred"
	//LoserPic "loserred"

	PlayerStartThingNumber 5081
    AllowCustomPlayerColor
}

// Both of these are for compatibility purposes only. Please do not actually use them.
Team "Raktah"
{
}
Team "Nilah"
{
}
Spoiler: LOADACS (lol sure that's causing it) (Open)

Code: Select all

DUKKHA
Spoiler: ACS (Open)

Code: Select all

#library "DUKKHA"
#include "zcommon.acs"

script 465 (void)
{
	MorphActor(0, "DSparilOnFootPlayer", "", 0x7FFFFFFF, 0, "emptytelefog", "emptytelefog");
	GiveInventory("Megasphere",1);
}

script 466 (void)
{
	SetPlayerProperty(0,1,4);
}

script 467 (void)
{
	SetPlayerProperty(0,0,4);
}

script 468 (void)
{
    if (CheckInventory("GhostsphereCooldown") > 0)
    {
        delay(35);
        TakeInventory("GhostsphereCooldown",1);
        restart;
    }
}

script 469 (void)
{
    if (CheckInventory("DSparilSummonCooldown") > 0)
    {
        delay(35);
        TakeInventory("DSparilSummonCooldown",1);
        restart;
    }
}
Spoiler: SBARINFO (Only differences from Samsara listed here because goddamn that's a lot of shit to sort through) (Open)

Code: Select all

StatusBar Fullscreen
{
[...]
    GameMode OneFlagCTF, CTF, Skulltag, TeamPossession, TeamLMS
    {
        DrawNumber 3, INDEXFON, White, Frags, 70, 170;
        Drawnumber 2, INDEXFON, brick, teamscore "Villains", 45, 170;
        Drawnumber 2, INDEXFON, lightblue, teamscore "Heroes", 55, 170;
    }
[...]
}

StatusBar normal, forcescaled
{
[...]

Playerclass Cyberdemon
{
	drawimage "EVILHUD", 0, 168;
	DrawString CONFONT, White, "Health", 58, 170;
	DrawNumber 3, BIGFONT, Red, Health, drawshadow, 51, 180;
	DrawString CONFONT, White, "Keys", 110, 170;
	DrawKeyBar 32, horizontal, auto, 72, 180;
	DrawString CONFONT, White, "Kills", 250,170;
    DrawNumber 3, BIGFONT, White, Frags, drawshadow, 235, 180;
	DrawString CONFONT, White, "Armor", 310, 170;
	DrawNumber 3, BIGFONT, Red, Armor, drawshadow, 308, 180;
    drawselectedinventory alwaysshowcounter, DOOMHUDF, 290, 22, 293, 30, untranslated;

	UsesAmmo
	{
	DrawString CONFONT, White, "Ammo", 177, 170;
	UsesSecondaryAmmo not
	{
	DrawNumber 3, BIGFONT, Red, Ammo1, drawshadow, 174, 180;
	}
	UsesSecondaryAmmo
	{
	DrawNumber 3, BIGFONT, Red, Ammo1, drawshadow, 152, 180;
	DrawNumber 3, BIGFONT, Red, Ammo2, drawshadow, 190, 180;
	}
}
}

//Playerclass DSparil
InInventory DSparilClass, 1 // Unbelievably hacky.
{
	drawimage "EVILHUD", 0, 168;
	DrawString CONFONT, White, "Health", 58, 170;
	DrawNumber 3, BIGFONT, Red, Health, drawshadow, 51, 180;
	DrawString CONFONT, White, "Keys", 110, 170;
	DrawKeyBar 32, horizontal, auto, 72, 180;
	DrawString CONFONT, White, "Kills", 250,170;
    DrawNumber 3, BIGFONT, White, Frags, drawshadow, 235, 180;
	DrawString CONFONT, White, "Armor", 310, 170;
	DrawNumber 3, BIGFONT, Red, Armor, drawshadow, 308, 180;
    drawselectedinventory alwaysshowcounter, DOOMHUDF, 290, 22, 293, 30, untranslated;
	InInventory TomeOfPowerCooldown, 1 {DrawNumber 3, BIGFONT, Red, TomeOfPowerCooldown, drawshadow, 152, 180;}
	InInventory GhostsphereCooldown, 1 {DrawNumber 3, BIGFONT, Red, GhostsphereCooldown, drawshadow, 190, 180;}
}
[...]
}

RE: Wad causes Level Authentication Error to everybody but the host.

Posted: Thu Jan 31, 2013 1:57 am
by TerminusEst13
So I had a hunch Samsara wasn't causing this issue, and I was right. Either this is a Zandronum problem, or my ACS is really goddamn bad.

Created a standalone version that doesn't require Samsara to run (this mandated SBARINFO and TEAMINFO being deleted)--the first causes authentication errors on joining a non-listen server hosting it, the other does not.
The only difference between them is the LoadACS and ACS files are deleted.

https://www.dropbox.com/s/x77o297j8ehl3 ... dalone.pk3 - Causes authentication error.
https://www.dropbox.com/s/u9uboq6hm3v3k7y/test15.pk3 - Does not cause an authentication error.

RE: Wad causes Level Authentication Error to everybody but the host.

Posted: Thu Jan 31, 2013 6:25 am
by Torr Samaho
TerminusEst13 wrote: https://www.dropbox.com/s/x77o297j8ehl3 ... dalone.pk3 - Causes authentication error.
So are you saying that it's impossible to pass the authentication if the server uses the wad?

RE: Wad causes Level Authentication Error to everybody but the host.

Posted: Thu Jan 31, 2013 7:57 am
by TerminusEst13
Image
Yes. Other players joining a server hosting that gives a Level Authentication Failed message, even if they download the exact wad being used. The host himself does not get the message on joining. This would imply a standard "doh ho, host has something different" problem in skins/doom2.wad/announcers/etc, except that the test8 and test15 builds have no problem in others connecting.

Admittedly, I've only checked with A: other people joining my listen server or B: hosting on BE and attempting to join that.

RE: Wad causes Level Authentication Error to everybody but the host.

Posted: Thu Jan 31, 2013 8:21 pm
by Torr Samaho
TerminusEst13 wrote: Yes. Other players joining a server hosting that gives a Level Authentication Failed message, even if they download the exact wad being used. The host himself does not get the message on joining.
Well, technically there shouldn't be any difference from the host joining and anybody else joining as long as the same files are used and they are loaded in the same order.

How exactly did you join the host as host?

RE: Wad causes Level Authentication Error to everybody but the host.

Posted: Thu Jan 31, 2013 8:41 pm
by TerminusEst13
Torr Samaho wrote: Well, technically there shouldn't be any difference from the host joining and anybody else joining as long as the same files are used and they are loaded in the same order.

How exactly did you join the host as host?
There shouldn't be, no, which makes the whole thing even weirder.
I'm even talking about to levels like A: Saving a new file, B: Uploading new file to BE, C: Starting server on BE, D: Deleting file off harddrive, E: downloading file from BE, and still failing authentication anyway.

As for how I joined as host, I tried two different methods.
1: In Doomseeker's server console, I hit the console and selected "Join Server".
2: I put my router's address in Custom Servers in Doomseeker, and double-clicked it from the list of servers.

RE: Wad causes Level Authentication Error to everybody but the host.

Posted: Thu Jan 31, 2013 8:49 pm
by Torr Samaho
Did you make any tests that don't involve you? Like somebody else joining the BE server?

RE: Wad causes Level Authentication Error to everybody but the host.

Posted: Thu Jan 31, 2013 9:33 pm
by TerminusEst13
Correct. I've asked two other people and they've had the exact same experiences as me.

Let me ask another, to make sure.

EDIT:
Spoiler: Asked a third party, he had the same error. (Open)
[4:28:04 PM] terminusest13: Hey, do you have a few moments free?
[4:28:13 PM] REMOVED: maybe
[4:28:15 PM] REMOVED: whats up?
[4:28:45 PM] terminusest13: Torr wants me to run a test regarding the builds of Dukkha. I'll set up two servers and send you two test builds, I'd like to see what ones you can or can't join.
[4:28:52 PM] REMOVED: yeah ok
[4:29:35 PM] terminusest13: http://static.[bad site]/wads/test14-standalone.pk3
[4:29:38 PM] terminusest13: http://static.[bad site]/wads/test15.pk3
[4:29:40 PM] terminusest13: Please download those.
[4:30:03 PM] REMOVED: gottam
[4:31:02 PM] terminusest13: Cool. Now both servers are up, under Samsara: Work Damn You.
[4:31:10 PM] terminusest13: If I'm right, v14 will not let you come in, v15 will.
[4:31:19 PM] REMOVED: lets find out
[4:31:43 PM] REMOVED: 14 says
[4:31:53 PM] REMOVED: Please make sure you are using the exact same WAD(s) as the server, and try again.
[4:31:54 PM] terminusest13: Level authentication failed?
[4:32:00 PM] terminusest13: Aye. Thought so.
[4:32:16 PM] REMOVED: and i joined 15
[4:32:34 PM] terminusest13: All right. So v14 doesn't work and v15 does?
[4:32:38 PM] REMOVED: correct
[4:32:43 PM] terminusest13: Awesome. Thank you.

RE: Wad causes Level Authentication Error to everybody but the host.

Posted: Thu Jan 31, 2013 10:08 pm
by Torr Samaho
I had a look at your file: The pk3 contains three files that are all called DECORATE. I'm surprised that this is even possible. How did you create this zip? It would be impossible to fully unzip the pk3 since file names need to be unique and unzipping would make the files overwrite each other.

Make sure that the files have unique names and see if this fixes your problem. For this create one DECORATE file that includes the other renamed DECORATE files (like decorate.txt in zandronum.pk3).

RE: Wad causes Level Authentication Error to everybody but the host.

Posted: Thu Jan 31, 2013 10:48 pm
by TerminusEst13
I created it via Slade 3.

More interestingly, that does fix the problem.
I don't understand why, since the differences between v14 and v15 aren't Decorate at all but are ACS changes instead, but it's fixed now.

Thanks very much for the help.

RE: Wad causes Level Authentication Error to everybody but the host.

Posted: Fri Feb 01, 2013 7:14 am
by Torr Samaho
TerminusEst13 wrote: More interestingly, that does fix the problem.
I don't understand why, since the differences between v14 and v15 aren't Decorate at all but are ACS changes instead, but it's fixed now.
To pass the authentication the clients need to parse all decorate lumps in the same order. I'd guess what happens here is the following: If there are multiple files with the same name inside a pk3, the order in which they are parsed may be dependent on the local system.
TerminusEst13 wrote: I created it via Slade 3.
Somebody report this behavior to their devs. If this causes problems with Zandronum authentication, this may also cause problems with ZDoom in the sense that the DECORATE code can behave differently in case the DECORATE files contain conflicting information.