Game Development Community

Q: Bug?: Client / Server asset allocation and load time impact

by Eric Clausing · in Torque Game Engine · 02/18/2007 (9:54 am) · 1 replies

We have a network environment with triggers between missions. Each mission contains more than 40 interiors plus another 20-30 shape objects, plus various lighting objects.

The load time in between missions right now can take upwards of 3-5 minutes on a 1.4 GHZ client machine. A trace reveals a huge amount of onDataBlockObject received is going on, which suggests that the server is transmitting the entire server side datablock for everything in the zone during load. This is less than ideal.

Further, upon investigation, we found that the client loads up all assets in its data directory even if the client doesn't need those assets. How we tested: Add a huge content pack then check ram usage in multiple missions. Then remove and check ram usage in multiple missions. Load times to the server also improved when we removed these files ... in some instances by a full minute!

The average load time improvement is 20 seconds by removing a 50 meg unused (in terms of missions) content pack. Does this seem odd to anyone else?

It just is mystifying!

So, here are my questions:

1. What can we do to reduce the quantity of material from the server? Is it possible to stream this content as the user plays in the background via some background agent?
2. Why is the client buffering all these unused assets into memory and not just what the datablock download from the server tells the client that it needs to have?
3. Why would files we're not using in any mission have an impact on load time to a network server?

We have tried:
1. Changing the datablock size
2. Experimenting with MTU settings
3. Tried the network pref resource out there

But, seriously, #2,3 shouldn't be impacted by the block size or network cleverness. Is this asset allocation a bug or feature by design? Thanks!