NOT 100% GUARANTEED, BUT PRETTY GOOD NONETHELESS - MANY PEOPLE REPORTING SUCCESS.
*******************32BIT ONLY - SORRY TO 64BIT USERS***********************
I've been having the crash problem - games in MP crashing in ~5mins, and SP crashing every so often. Found the solution from another game actually where I was having a similar problem - Empire: Total War.
BE AWARE, THIS IS ONLY A WORKAROUND - THE ISSUE STILL NEEDS TO BE FIXED. THIS IS A FIX FOR THOSE RUNNING 32BIT WINDOWS 7 AND WINDOWS VISA WITH 4GB RAM OR MORE.
From here on, I'm copy-pasting the instructions. This works for both Vista and W7. Got me through 20mins of MP for the first time though - longest game I've had. Haven't tested for longer.
What does it do?
It has to do two things that both rely on each other to work. For 32 bit operating systems we have to tell the operating system it can use more than 2GB user address space, 2.5GB actually, while leaving 1.5Gb for the kernel. We also have to set the Empire.exe executable to be allowed to address beyond the 2GB ceiling. 64 bit OS users don't have to do anything.
What does it help with?
This is not the solution for all crashes. It deals primarily with the crash to desktop that is caused by lack of virtual address space.Due to the unique nature of how addresses are mapped differently on each machine this crash may happen at different places and times of the game, even loading a map, menu or waiting on an AI turn. If you try this fix, and you follow directions properly, and it doesn't help you then your crash is due to something else.
How do I do it?
Follow directions explicitly. I have seen people consistently skip steps or not read the directions properly so it doesn't work for them whne they don't do what it says. it's not as complicated as it sounds, I'm just being thorough.
APPLY THE WORKAROUND (juicy caramel center)
Only real requirements is that you have atleast 2GB RAM. You don't need beyond that even though we are allowing addressing up to 2.5 GB. Also following instructions and being somewhat familiar with working with files in windows is required. Make sure you are using Vista SP1. If not then you need this hotfix that fixes a major blunder with Vista address space - http://support.microsoft.com/kb/940105
That's all, follow the 3 steps.
1) Prepare the operating system to be able to use beyone 2GB address space with a userva of 2.5GB (only 32 bit OS's need to do this): I am purposely using only 2500 for userva for specific reasons and any more will likely not be needed, as a result the kernel will have plenty of space to play in.
All 64 bit OS's
Nothing to do on the OS. Proceed to step 2 on setting the executable. 64 bit OS's running 32 bit binaries are also limited to 2GB application space.
* Find your Boot.ini located usually on the C:.
If you cannot see it, you probably have system files hidden, then follow these instructions at microsoft (also uncheck "hide protected operating system files")
* Right click on the boot.ini and choose properties. Uncheck "read only"
* Open the boot.ini by double clicking it.
* Under the section called find the line that says "multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Professional...". Yours may look a bit different. We are going to make a duplicate, so that if you make a mistake you will not harm yourself from booting into your computer. Drag you're mouse across the entire line, right click and choose copy. Then right below the line you just copied right click your mouse and choose paste. You should now have two lines one after another that are exact duplicates.
* Change the bottom line that you just copied with the following addition on the end. Add a space at the end of the line and then this without the quotes "/3GB /USERVA=2500"
* In that lower boot entry you just made, find the name of the operating system in quotes and change it to something like "Windows XP 3GB", so you can differentiate at boot up.
* Close and save the boot.ini.
* Right click on the boot.ini, hit properties, check read only.
Windows 7/Windows Vista <~~~~~ Step 2
* In Windows 7/Vista go to Start menu. Go to Accessories. Locate the command prompt shortcut and hover mouse over it. Right Click on the shortcut then select Run as Administrator.
* In the command prompt type this exactly: bcdedit /set increaseuserva 2500. Then hit enter.
* Make sure you get a message back confirming the change was made. To verify the entry is there you can type just bcdedit, hit enter, and you should see the entry now listed.
* Then close the command prompt. You just told Vista to increase user virtual address (userva) space to 2500MB.
* Changes take effect on reboot but don't reboot yet.
We extended the user virtual address space in XP, Vista and 7 to 2500MB, so now applications can utilize up to that much if they are set to be Large Address Aware. While some 32 bit games/applications are set, Empire is not.
2) Now reboot the PC because Windows needs to set the userva at 2500 which only happens after startup.
If you skip any step it will not work. When you have rebooted you should be good to go. Run the game as normal with the original game shortcut.
TO UNDO THE CHANGES
For the XP 32 bit just delete the line from your boot.ini.
For Vista 32 Open command prompt as administrator and type: bcdedit /deletevalue increaseuserva. That deletes the entry.
Reboot and you are back to normal.
PLEASE PLEASE PLEASE IF THIS WORKS COME BACK AND BUMP TO HELP OTHERS