I noticed a lot of lag in the game after tasks that would load or unload data from the memory. In many cases this could be fixed by calling explicit GC at key points (many of which would not be noticed.) The first two points Explicit GC should be run is directly after unloading the last region (pulling to loading screen) and immediately after loading, but before the scene-change into a new region. These two points will likely save enough performance that they will be noticed as a performance improvement. I know that GC issues are largely upstream in Unity3D. I spent some time as a volunteer play-tester for Kerbal Space Program, that ran into the same issues a LOT. The second time is before starting or stopping a conversation with an NPC, and before loading transitioning to the buy/sell list. This is a time when the human mind expects a pause, and it is a time right before and after some specialized memory usage. It's a good time to clean up. Finally, the addition of a disk buffer heap (if possible) to store a lot of frequently used data objects might be useful. This will allow the data to be cleared completely when not in use, but able to be loaded very quickly, in the form it is used in memory. This is particularly useful for textures and models. As of other things to do to reduce memory usage, simplifying the collision maps would greatly help. Additionally, using Unity's newer UV map handler to create parallax mapped low-poly models instead of the current high poly ones would greatly improve performance.