Note: If you have Sims Unleashed installed
then the long load times have been addressed so it does not take substantially
longer to load *.iff files when they are not in *.far files anymore. In my
opinion the difference is negligible and it is easier to work with *.iff files
that are not in *.fars anyway. Most of the information below will still apply to
some extent but not nearly as much as it does when Sims Vacation is installed
AND Sims Unleashed is NOT installed.This article is my attempt to pass along to you my various observations
regarding the cause of long game load times and the effect of various methods to
decrease load times. It is long and will probably bore you. If it does then skip
down and just read the conclusion. It is meant to give you a better
understanding of why it takes so much time to load the game.
To begin with I will go over observations of what others have reported in various
forums. This will take into account the majority and disregard the minority.
- When using the Vacation Expansion on Windows XP in almost all cases
it takes longer to load the game than Windows 9X based systems.
- It is unclear as to whether or not this is due to the file system used. (Most have not reported this)
- The more objects files there are the slower it loads. This is true with
all operating systems but is amplified on Windows XP with object iff
files.
- Minimizing the game during loading speeds up the load time.
- Using Far Files speeds up game load times when using the Vacation
Expansion. It is unclear as to whether this is true for Windows 9X based
systems or not. It is also unclear as to whether it speeds up the load
time for previous versions. (There is not enough data to determine this,
my observations indicate that this will speed up the load time for both
operating systems using any game version though)
- Changing IFF Files to Read Only speeds up game load times when using the Vacation
Expansion. It is unclear as to whether this is true for Windows 9X based
systems or not. It is also unclear as to whether it speeds up the load
time for previous versions. (There is not enough data to determine this.
Cause:
What causes the above listed items? I do not have all of the answers but I
think I have figured out most of it.
- For this I believe that the file system and extra file security in
Windows XP effects the ability of the game to lock the files it needs
during loading.
- In my testing using Fat32 instead of NTFS for the drive where the
game directory is has resulted in a decrease of load times. The decrease
is still not satisfactory in my opinion.
- This is pretty obvious. It stands to reason that the more files
there are the longer it will take to load them. It is however unclear to
me why all of the files are locked and opened when the game loads. Like
I said I do not have all the answers though. It seems to me that there
should be a way to open only the necessary files when needed.
- Minimizing the game during load frees up the extra draw on the
system resources required to play the music files. Presumably this is
because the music has a higher priority to help prevent stuttering.
- Once I realized what was happening this one became pretty obvious.
It was hard to comprehend initially that larger files would actually load faster
than small files. In reality the data itself probably loads at about the
same speed. This is due to the fact that the game is only using one
method for accessing both types of files. The game locks all files from
access by any other program and then reads the data. What is taking such a long time is
that the files need to be locked. For Windows XP users this takes longer
because it needs to check the security on the files before it will allow
them to be accessed. So this pretty much explains why iff files take
longer to load than far files. Iff files are opened in
read/write mode unless they have been set to read only though so that new data can be written back to them.
(New thumbnails for instance) Based on
this it seems logical that load times can be increased by using far
files on both Windows XP and Windows 9X based systems. The decrease in
load time may not justify doing so on Windows 9X systems though since it
makes object management more difficult. SimEnhancer Object Manager can
help with this.
- Changing the IFF files to Read Only helps speed up game load times
since the game will open them in Read Only mode rather than Read/Write
mode. The reason the game opens them in Read/Write mode is to enable it
to write changes back to the files. For instance it may need to generate
thumbnails. For Object IFF files this is usually not necessary.
Nevertheless apparently the game treats them the same as neighborhood
and character iff files which do need to be opened in read/write mode.
Note: Blindly changing all files to read only will actually slow down
the load time for the neighborhood and character files since the game
will need to change them back to read/write. There is no benefit to
changing skin files to read only since the game does not need to save
data back to them and does not open them in read/write mode. There also
is no adverse effect by doing so either. It may however make managing
them more difficult and until the CMX Validation Check and Duplicates
Check programs are updated it will effect them since it was not
anticipated that people would blindly change the attributes on these
files. They are currently being updated to deal with them internally.
Effect:
What can you do to speed up game load times? Here I am including several
suggestions. Some of these will work and some will not. A couple of them may
work but are foolish. I will explain my reasons for claiming one way or the
other as well. (Note: These are just my observations and they could be wrong, It
certainly would not be the first time)
All Far files created and used during testing were created using the
SE Object Manager. Also in all testing I minimized the game while it was loading. (I would
rather play a game of solitaire than watch the screen for 5 or 6 minutes waiting
for something to happen)
- Sort all of your objects to directories. I do not believe this will
help. (In my experience this has turned out to be just the opposite) It
may be true once you hit a certain point and have more files than the
operating system can handle but I do not think the game would handle
them either. Why? Because the game still needs to lock and read the data
of all of the object files. Moving them to directories will just
increase the length of the file name and add more data that needs to be
handled. (Longer file names) The files will still be scattered all over
the drive in different sectors. (And will still be in the same place
they were before) Are you really putting your files into directories?
No. You are just changing the file name. You are now going to ask how I
can say that. This is because directories are just part of a file name
used to help organize files when they are viewed in a list. Here is a
little test if you don't believe me. You will need two drives to do
this. Take a large file not needed for anything important. Maybe around
100 MB. Now "Move" this file to another drive in your system. Don't copy
it since that is faster when going between drives. (After it is copied
to the new location it does not need to go back and delete the original)
Get out the watch and time it. It will take at least a few seconds and
you can sit there watching it. Now take the same file and "Move" it to
another folder on the same drive. (Don't copy it because that takes
longer when going to another folder on the same drive since it needs to
create a new file) You probably will
not get to your watch in time. Why? Because the file did not move. The
only thing that happened was that the name changed to reflect the
directory change. This is documented elsewhere if you wish to look it
up. It just goes against our usual way of thinking because we are use to
seeing directories with files in them.
- Adjust your virtual memory. This is partially true and partially
false. By optimizing your memory for the game it could result in a
slight decrease in load times. This can effect other
applications in a negative manner though if not done right and the decrease is probably
not substantial enough to justify messing with these settings. If you
are sitting there ready to argue about it then you probably know enough
to safely make this adjustments. Otherwise I suggest you leave the
Operating System alone.
-
Set the game priority higher than normal. (Windows NT based systems)
This can make a difference but again can have negative effects
elsewhere. (Setting it to a higher priority than hardware drivers can
cause hardware crashes) Unless you know what you are doing I suggest
leaving it alone.
-
Use
3 or 4 disk drives (not partitions) to store separately SYSTEM Files, GAME Files and SWAP Files.
This can help. It really depends on your hardware setup though. Many
times a second or third hard drive are purchased because the original
has run out of room. Quite often the new drive will be capable of much
higher performance than the original one. If so then it can actually
slow down the performance if you use the slower drive for anything
other than file storage. If you are use to tweaking your system then
you are probably already doing this anyway. If not then I advise
leaving it alone since you need to know several things before you can
determine whether this will actually improve the performance or not.
- Turn off virus protection. Huh? It might speed up load times but I
haven't noticed. This is just plain stupid advice. Anyone that suggests
you do so is acting irresponsibly. Maxis are you listening? I guess I
have not noticed because I have not tried it. If any game I use ever
requires that I do so then I will uninstall the game.
- Turn off background applications. This will take some load off the
system. So will removing any background image on your desktop and
turning off web content on your desktop. There are limits to this as
well. If you are on a broadband connection you should never turn off
your firewall. Your using one right? (I've seen broadband companies tell
people to turn off firewalls because they will not provide support if
they are being used) Again I consider this irresponsible advice. It
ranks right up there with telling someone to turn off their anti virus
software. In effect it acts to protect against intrusive worms that can
cause just as much damage as a virus. (Worms are commonly known or
referred to as viruses even though they are not really the same thing.)
- Clean out some of the objects you do not need. This has merit but
you will probably be disappointed when you threw away that great
espresso maker and did not see much improvement. Unless you get rid of a
lot of files you will probably only find that it is easier to find
things in the game. I clear out objects for other reasons. Wrong angle,
poor image quality, bad image when zoomed out, etc. Basically I throw
them away if I do not consider the quality acceptable.
- Defragment your hard drive. This is definitely a good idea. If you
recall, above I mentioned the files being scattered around the drive in
different sectors. This is because the files are actually stored in
several small sectors. The actual number of sectors required will depend
on the size of the file. The size of the sectors varies depending on the
file system and partition size. These parts of the file do not need to
be next to each other since the file allocation tables keep track of
them. Defragmenting puts all the little pieces next to each other and
will result in less thrashing of the hard drive to get to all of the
data. The drive arm goes to one spot and then reads the whole file
instead of bouncing around to get to it. This is especially true since
the game reads the data directly from the file system. (As opposed to
other methods that utilize more ram) This is one area where performance
will also be increased in the game.
- Move your files to a Fat32 drive. In my experience this resulted in
a fairly noticeable decrease in load times. I believe this is due to the fact that
Fat32 has less security than NTFS to deal with. There are also some
issues related to writing last accessed and modified times to the files
because they are opened in Read/Write mode. The decrease is still
not acceptable to me though by itself. (Combining this with far files
resulted in the fastest load times I experienced during testing)
- Change your files to Read Only. This will help decrease load time
significantly if you are using Windows XP and the Vacation Expansion
Pack. It is unknown what effect doing this has with Win 9X based systems
or earlier expansions. SE Object Manager
now includes support for working with and saving Read Only files. In
testing the results were acceptable but still 10% to 20% slower than Far
files. Many of you will surely prefer to take the difference and use
this instead of Far files to make it easier to manage your IFF files.
- Place your objects into far files. I saved this for last because it
resulted in the fastest load times. Some of
the above items may help also but they did not result in as much of a
decrease in load times as this did.
An in depth discussion on this is below which pretty much contains
all of the results of my testing regarding FAR files.
Conclusion:
If you noticed above it takes longer to open several small files directly
from the file system than it does large ones. Having a lot of small far files
will still result in slower load times.
Fixing this is simply a matter of eliminating a few steps. If there are
several files in a big far file then the game only needs to lock one instead of
several. Since it reads directly from the file system the size of the file only
becomes an issue when the file is really huge. (More on this below) In testing I created two far
files using the SE Object Manager. (I do not suggest trying this) One that was 2.4 Gigabytes and one that was 1.75 Gigabytes. At 2.4
Gigabytes the game opened but none of the objects were available. At 1.75 Gigabytes the game loaded and the objects were
available. Note: I literally created three copies of all of my objects to get to
this size of a file. They also used three different paths in the far file to
insure the game would read all of the data even if it only used one of the three
copies.
Using paths in the far slowed down the game load time in the above test which
took about 10 Minutes. This brings me to another point. Adding path information
to the files in the far also slows down the load time. It is unclear as to why
but it does. I normally have about 1800 objects. I created two far
files with these objects using the SE
Object Manager. Both were pretty close to 600 MB. The only difference is that I included
path information in one and not the other. It took about 5 minutes to load
the one with path information. It took right at about a minute to load the one
without path information. I went back and tried it again. Same results.
One other thing I noticed was when I tried to find the optimum size for a far
file. I originally assumed this would be limited by the amount of ram. I started with
several far files with each one between 30 and 130 MB. This was a substantial
help by itself. My game was loading in 2 to 3 minutes. I wanted to see if I
could find a top limit though so I went all out putting every user created
object I had into one far. I was floored when it took less than half the time to
load and did not seem to effect game performance at all. I still do not know the
optimum size but the game appears to be able to load far files that are up to
about 2 Gigs. It seems to be somewhere between 1.75 gig and 2.4 gig and 2 Gig
could be a limitation depending on how the file access is coded. Theoretically
Fat drives should be able to handle a 4 Gig file.
At this point I got to wondering. Will using one far file have that much
effect on a NTFS volume? Almost all previous tests were using a Fat32 volume.
The results were not quite as good. It instead took about 1 minute and 45
seconds to load. Still well within an acceptable range for load times. This is
actually faster than the game ever loaded for me with Hot Date or House Party.
(I do not recall exactly how long the original game or Living Large took but I
think it was around 2 or 3 minutes) I did move my game back to the Fat32 drive
though since the decrease in load times is substantial.
I now have removed all object iff files from my game. I keep them in a
separate location and sort everything there. For iff files that are missing
thumbnails I put them into the game and run it to create new thumbnails but then
move them back to my sort directory. Each time I make changes I just create a
new Far file using the SE Object
Manager that contains all of my user created objects. Then I move it to the Gamedata\UserObjects directory and replace the one that is there. It usually
takes less than 90 seconds for me to create the far file and the time savings
when loading the game more than justifies doing it this way.