by loftar » Fri Apr 02, 2010 1:38 pm
The vast majority of the sprites are downloaded along with the client, so I can imagine two reasons why they would take so long to appear:
1) The protocol uses a kind of simple compression by assigning a simple numeric ID to each resource and only sending the ID-to-name mapping once each session. If the mapping messages would be delayed (for example, due to lag), that would prevent the client from loading the real sprites.
2) The resource loader is really slow on your computer for some reason. Even if the resources exist locally, the resource loader itself still operates asynchronously, so there is normally a very slight delay each time a sprite is used for the first time, during which e.g. inventory items which show up as question marks. Normally, however, that delay is not even noticeable.
Reason 1 (delayed ID-to-name mappings) doesn't seem congruent with your problem. In particular, you are not describing any particular lag apart from sprite loading, and you also describe similar delays at the character selection screen, which does not use such mappings at all. Therefore, I'd put my money on reason 2. I cannot, however, figure out any particular reason why the resource loader would be slower than is usually is. Not right now, at least.
In the vast majority of cases, however, the client does not "poll the server for each individual sprite to display". There are a few sprites that are not downloaded along with the client, but those are rather unusual, and once downloaded, the client will cache them anyway (so they only need to be downloaded once, ever). There is, in other words, no extra "installation procedure" which would help you at all. Rather, it is more proper to say that the normal method of starting the game (by clicking the play button) does install the client, since it downloads all its resources to your hard drive.
"Object-oriented design is the roman numerals of computing." -- Rob Pike