It seems 5.84b has 10k strings as well, so I guess that throws the size issue out the window. The only explanation left is the amount of fragmentation of the strings. For those who are having doubts, I can assure you that the strings file is the root of the load time. Without the strings, 6.01 can be loaded in 30 seconds for most people with 5 minute load time, 10 minutes = a minute max.
QUOTE
This is all pretty neat how you were able to find the (probable) cause of the problems, but how exactly did these files become fragmented in the first place?
It is actually quite easy to fragment the strings.
Make item A
write some fields of item A's description
Save
Make item B
write in all the fields of item B.
save
Go back to item A and finish writing description.
Save
Voila, string file fragmented. Now imagine this scenario with thousands of items/abilities/heroes, constantly being updated/changed/created over 50 versions.
Each ability/unit/item is assigned a unique 4 character 'code.' What WE does is separates the all the non triggered custom abilites into 2 files. The mechanic part (damage/duration/effect, etc) into a w3a file and the string base part into a wts file(which includes ALL string base data of the map).
My theory is that when it loads the map, the game engine tries to piece each description back into the ability. It linearly searches the entire string file for that four character 'code' and pieces it into each field of the respective ability/item. Note that despite fragmentation, the string files still follows the order of each abilities's field in the editor, this is probably how it is indexed in addition to the 4 character code.
QUOTE
even just loading the little picture when you enter a game (before the 5..4..3..2..1.. thing) takes a lot of time. Imagine with all those fragmented texts
That again is due to the string file. The map description is the 1863rd string, even though it should have been within the first 5 strings. By deleteing the string file, loading that lil picture takes no time at all. Basically the map linearly searchs the 4 character string code in the entire file, one string after another until it finds a match. So each time it initally loads the load screen picture, it goes through 1863 strings, same with each ability's description, though it can go up to 10k for Soul Assumption (since one of the descriptions for soul assumption is the 9999th string).
I've PM Neichus the the altered map and the string file, so hopefully the mapmakers and Guinsoo can decide what to do with this. One of the ways is to:
1. Delete the wts file
2. Open up the map editor
3. Copy and paste(not import) all the decriptions back in using the wts file
4. Save
This should generate a new wts file in the proper order.
One more note is there are currently descriptions for creeps, the descriptions probably isnt neccessary for these units, leave the name and leave the other fields blank. More strings just means more fields to search through.
Absolutely.
I have a 6.0 map with 0 description that loads in 20/30 seconds flat. Like I said, I'm 50/50 on whether the load time is due to the string file's sheer size or the fragmentation of the descriptions. I'm leaning toward the fragmentation aspect after looking at the file.
Right now I'm not sure whether it's the quanity of the strings that is slowing down the loading, or the fragmentation of the string file. I skimmed through string file, and the sequence of some of the strings is definitiely out of order, this is probably another huge aspect that contribute to the inefficiency that Guinsoo was talking about.