Как показала многолетняя практика — большинство вылетов в игре из-за высокодетализированной коллизии (и не менее чаще — скрипты и плагины, кривые дфф, не в них суть).
Наверно еще лет 9 тому назад выявил, что игра вылетит, если что-нибудь (авто или пед) воздействует на высокополигональный кол. Например вылет произойдет 100%, если игрок любым способом воздействует на плейн размером 1х1 с 1000 треугольниками (т.е. на любой высокополигональный, но маленький по размерам кол). И в основном вылет по адресу 0x4df8fa (CMatrix::UpdateRW) и еще реже — 0x4127a7 (CCollision::ProcessLineTriangle).
Напрашивается вопрос — почему происходит вылет? Игра не может понять куда переместить ту или иную сущность? Была мысль касаемо лимита на партиклы, но ошибка по адресу прямо ведет в CMatrix::UpdateRW.
Я не уверен, но (как мне кажется) ответ может быть в функциях CPhysical::PlacePhysicalRelativeToOtherPhysical, CMovingThing::Update.
Решив проблему с вылетом, мы сможем без проблем вставлять в игру многополигональные колы, без проблем сможем кататься по высокодетализированным картам без каких-либо последствий. Не спорю, можно либо оптимизировать колы в максе, либо вообще что-то убрать, но что делать если таких колов сотни и тысячи, причем сложной формы? Думаю, что не только мне интересно решение этой проблемы. Другой вопрос еще касаемо расширения лимита на размер кол файла, но это сейчас не так интересно. Лет 7 тому назад Ilufir на основе сорцов GTA SOL скомпилил плагин, расширяющий размер ColBufferLimit, тем самым подняв размер колов с 64 килобайта до 349 кбайт (хотя в теории ожидали, что игра будет кушать все колы до 512 кбайт, но тут уже скорее всего уперлись в другой непонятный лимит).