Tasclient + SpringLobby archivechecksum vs mapchecksum
Moderator: Moderators
Tasclient + SpringLobby archivechecksum vs mapchecksum
Atm lobby system uses mapchecksum/modchecksum when it advertises battles.
Because even mapchecksums depend on springcontent.sdz (which is changed often), spring releases often result in completely different hashes for every map and mod.
This breaks lots of things - tasclient genrates new minimaps, downloader cannot download any file etc..
Could we switch to archivehash instead for mods and maps (this does not depend on dependencies).
At least for "broadcasted" battle info messages.
When you join game, real mod hash/map hash could be used to test sync with dependencies included.
Because even mapchecksums depend on springcontent.sdz (which is changed often), spring releases often result in completely different hashes for every map and mod.
This breaks lots of things - tasclient genrates new minimaps, downloader cannot download any file etc..
Could we switch to archivehash instead for mods and maps (this does not depend on dependencies).
At least for "broadcasted" battle info messages.
When you join game, real mod hash/map hash could be used to test sync with dependencies included.
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
+1, if you can get aegis on board then your halfway there
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
We dont need aegis, its semantics change .. no need to change protocol?
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
I don't think this would work with current server. If you open a battle with mapHash1, then send mapHash2 to server, then the server will broadcast mapHash2 to all players, even those who are out of the battle lobby.Licho wrote:We dont need aegis, its semantics change .. no need to change protocol?
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
for now we would have to do with just 1 hash - archive hash
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
That would mean that sync problems due to springcontent.sdz for instance wouldn't be detected before game launch :/
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
Yes but thats non issue.
Tasclient checks for correct spring version. So only people who manually modified springcontent would "fail" after starting without desync indication.
Not a huge issue imo.
Tasclient checks for correct spring version. So only people who manually modified springcontent would "fail" after starting without desync indication.
Not a huge issue imo.
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
Agreed, I think we should switch as soon as possible.
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
What about mods and missing otacontent ? This happens quite a lot...
Actually, even springcontent.sdz is quite often mis-generated on Linux systems (bug in base file generator script that doesnt remove files from sdz files, it only adds new files). It's quite handy to be able to detect it from lobby.
Actually, even springcontent.sdz is quite often mis-generated on Linux systems (bug in base file generator script that doesnt remove files from sdz files, it only adds new files). It's quite handy to be able to detect it from lobby.
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
Aside from fixing the problem with the generator script, perhaps the script can be modified to check the files hash against a hash maintained by buildbot?
As I said aegis could sort this all out by forcing through the change and providing protocol ammendments to solve these issues.
As I said aegis could sort this all out by forcing through the change and providing protocol ammendments to solve these issues.
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
Just change the script to delete the .sdz files before updating them.
(And maybe add dev mode which doesn't do it, because it's a lot slower when compiling and it gets done everytime.)
(And maybe add dev mode which doesn't do it, because it's a lot slower when compiling and it gets done everytime.)
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
If you broadcast archive-hash instead of mod-hash, then missing otacontent wouldn't be detected in lobby anymore. And this happens much more than invalid springcontent.sdz...bibim wrote:What about mods and missing otacontent ? This happens quite a lot...
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
Shouldnt games needing otacontent have it in their modinfo.tdf/archiveinfo.tdf anyway? At which point it becomes an issue of unitsync not displaying errors for missing dependency, or not telling the lobby about it.
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
that information was (is) contained in the checksum.
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
All people who started springdownloader (default on windows) have otacontent..
It auto downloads it without asking..
Thats like 80+% of users..
It auto downloads it without asking..
Thats like 80+% of users..
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
I'm not sure we can afford to piss off the other 20%, of which most is likely to be new players.
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
we piss 100% if downloader system is broken, which is when you do it current way!!
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
Can you please do this for next release? Springdownloader has to follow what lobbies do..
Just use archive checksum..instead of mod/map checksum..
Just use archive checksum..instead of mod/map checksum..
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
This is lobby only issue right? I checked and unitsync has three functions which each do pretty much what they are supposed to do:
In other words; I think lobbies need to use GetModChecksum/GetMapChecksum for sync checking, and GetArchiveChecksum on first archive of mod/map for SpringDownloader.
- GetArchiveChecksum returns the archive checksum (not XORed with anything, just the special fast-CRC based on filenames and CRCs in archive zip/7z header)
- GetModChecksum returns cehcksum of mod including all dependencies, to be used for sync checking in battle.
- GetMapChecksum does same but for map.
In other words; I think lobbies need to use GetModChecksum/GetMapChecksum for sync checking, and GetArchiveChecksum on first archive of mod/map for SpringDownloader.
Re: Tasclient + SpringLobby archivechecksum vs mapchecksum
Yes thats the way it is, they also need to use archive checksum for hash advertised with battle on the tas server (which is the one used by downloader).
Since there is only support for one hash atm in tasserver protocol, mod/maphash check for syncing will be disabled anyway until we switch to new lobby server.
Thats why I think quickly fixing (renaming) functions in unitsync would be easiest solution atm.
Since there is only support for one hash atm in tasserver protocol, mod/maphash check for syncing will be disabled anyway until we switch to new lobby server.
Thats why I think quickly fixing (renaming) functions in unitsync would be easiest solution atm.