GTA Builder Форум

GTA Vice City => Общие вопросы => Тема начата: aleks926820 от Мая 14, 2025, 05:48:41 pm

Название: Многополигональные колы или ошибка 0x4df8fa
Отправлено: aleks926820 от Мая 14, 2025, 05:48:41 pm
Как показала многолетняя практика — большинство вылетов в игре из-за высокодетализированной коллизии (и не менее чаще — скрипты и плагины, кривые дфф, не в них суть).
Наверно еще лет 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 кбайт, но тут уже скорее всего уперлись в другой непонятный лимит).
Название: Re: Многополигональные колы или ошибка 0x4df8fa
Отправлено: Shagg_E от Мая 20, 2025, 02:50:11 pm
Мне кажется, там нужно будет полностью переписывать функции просчета. Думаю, там дело не только в лимитах, но и мб точности просчетов. У меня были подобные проблемы в некоторых моих задачах (не связанных с гта). Иногда просто пишешь код с расчетом на определенные габариты, хз.
Но это теоретический ответ, по факту я не знаю, что конкретно происходит с коллизиями в гта.