ZeroK-RTS / Zero-K-Infrastructure

Website, lobby launcher and server, steam deployment, .NET based tools and other vital parts of Zero-K infrastructure
GNU General Public License v3.0
53 stars 52 forks source link

ZKI fails at maps which depend on Spring Features #682

Closed Anarchid closed 7 years ago

Anarchid commented 9 years ago

1) go to your nearest local Springie 2) issue !map xiv 3) this map is selected by the command: http://zero-k.info/Maps/Detail/45567 4) download proceeds to complete 5) issue !start or !forcestart as required to start the game 6) An error box appears claiming you don't have Spring Features 1.1, which is a dependency of this map

Anarchid commented 9 years ago

Previously, this also was the case for Eye of Horus (which was later re-released without dependency), and is presumably also the case for Fetid Marsh.

SpringLobby (when run on uberserver), SWL (both flavours) and flobby launch these maps without issue, by virtue of using pr-downloader.

Licho1 commented 9 years ago

This is by design. Springfeatures is in unitsync wrapper ignore list. It was planned to include this in ZK deployment directly instead of having gigantic dependency.

Anarchid commented 9 years ago

There can be new versions of Spring Features released, which new maps might depend on. Packaging is not a practical solution.

The filesize is 50mb. It is not gigantic; individual maps exists which are larger.

Where does the ignore setting reside? Checking the database, indeed, ZKI believes that Fetid Marsh does not have any dependencies, and no resource containing both 'spring' and 'features' in name at the same time exists.

Anarchid commented 9 years ago

I failed to find any ignore explicitly for spring features in ZKI codebase (there are other exceptions here), and there doesn't seem to be any mention of ignore file being respected by unitsync.dll.

Giving AutoRegistrator the spring features file to play with, results in this: unitsync

It seems very likely that, in fact, any map dependencies are just ignored?

Anarchid commented 9 years ago

Map.cs lacks a definition for "dependency".

also:

SELECT count(*)
  FROM [zero-k_ef].[dbo].[Resources]
  LEFT JOIN [zero-k_ef].[dbo].[ResourceDependencies]
  ON Resources.ResourceID = ResourceDependencies.ResourceID
  WHERE TypeID = 0
  AND NOT NeedsInternalName is NULL

-> zero

So, this is not an unitsync ignore of spring features exclusively, but map dependencies not being parsed at all.

Licho1 commented 9 years ago

You could create it by adding dependency manuall

2015-07-02 18:15 GMT+02:00 Анархид notifications@github.com:

There can be new versions of Spring Features released, which new maps might depend on. Packaging is not a practical solution.

The filesize is 50mb. It is not gigantic; individual maps exists which are larger.

Where does the ignore setting reside? Checking the database, indeed, ZKI believes that Fetid Marsh does not have any dependencies, and no resource containing both 'spring' and 'features' in name at the same time exists.

— Reply to this email directly or view it on GitHub https://github.com/ZeroK-RTS/Zero-K-Infrastructure/issues/682#issuecomment-118081840 .

Licho1 commented 9 years ago

You are right unitsync.cs does not know map dependencies exist. It's too ancient (for ancient unitsync.dll).
UnitSync.cs:462 has GetModDependencies, dunno if equvalent for map would work with modern unitsync. Needs to be tested first. If yes it can be changed.

Ignore list for dependencies is in UnitSync.cs:30 and is ok i guess.

Is spring features on rapid? What tag?

Licho1 commented 9 years ago

Someone should look at unitsync.cs and update it for modern unitsync (lets say 91.0 version). This is a first step which i suspect will also fix spring features not being "unitsyncable"

db81 commented 9 years ago

Modern unitsync is 96+, 91.0 is a bag of segfaults.

Anarchid commented 9 years ago

Interestingly, Akilon versions above 3 also seem to be autoregistrator proof: they're completely not listed rather than merely not have their dependencies parsed, despite being faithfully mirrored.

Anarchid commented 9 years ago

Some recent findings:

Licho1 commented 9 years ago

Plan is to stop relying on spring files completely. Upload to ZK site along with dependencies should solve it.

Anarchid commented 9 years ago

-> requires ZK to have own (duplicate) upload interface

abma commented 9 years ago

http://api.springfiles.com/?springname=Battle+for+Planet+XIV+-+v01

(imo only makes sense to use it, when you contribute to it, too)

Licho1 commented 9 years ago

Is there some "light" way to auto "register" some things? We could perhaps dump existing unitsync related stuff if this project is long-term maintained and working well.

abma commented 9 years ago

Is there some "light" way to auto "register" some things?

i don't understand this question, what do you want to do?

this project runs since ~5 years and a lot of stuff depends on it (pr-downloader / springlobby dl stuff / mirroring / springweblobby).

the existing code would need some love, but its mostly modular, so stuff can be adjusted when needed.

code, bugs, todo: https://github.com/springfiles/upq

imo upq should not be used to fix this specific issue as it should be a tiny code change in zkl code, but its more a question for the general direction of the zkl (depend again on external stuff vs have full control over it)

maybe just "translate" the code which fetches the depends to .net: https://github.com/springfiles/upq/blob/master/jobs/extract_metadata.py#L540

Orfelius commented 9 years ago

No longer a thing?

knorker commented 8 years ago

No longer a thing?

http://zero-k.info/Forum/Thread/21074 - although there it is " archive "spring features 1.0" not found"

Licho1 commented 8 years ago

It can happen for maps without deps set or processed long ago.. need to manually fix when found

Licho1 commented 8 years ago

Reopening, maps need to be checked for missing dependencies in system. If such map is found, delete it from ZK map list and let system re-register it.

Orfelius commented 8 years ago

Yes, I am experiencing this issue myself too now. I accidentally canceled downloading of Spring Features 1.0 and now I am not able to redownload it again.

Anarchid commented 7 years ago

I believe this is obsolete now that AR should be able to read map dependencies as well as game deps.