[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Глюки, глитчи, исчезание текстур на картах
firsacho
Админы
Сообщений: 3813
Реп: 84 / Инв: 15
Описывал эту проблему в дискорде, параллельно делился домыслами и результатами попыток устранения.
Не буду описывать процесс всех этих тестов, опишу только полученные результаты и решения.

Суть проблемы: На пользовательских картах в WUM сильно перекручиваются вершины полигонов, либо местами исчезают текстуры. Иногда глюки могут появляться/изменяться/исчезать при разрушении конкретных объектов на карте.
Обычно возникает на больших картах. При этом в W4M все работает нормально.
Сопровождается записями в лог:

Код
"282395 | * XBase | ASSERT(uCurrentMaxIndex != 0 && "Uh-oh, we've run out of indices!") fail: 155 @ .\CombineLandscapeAction.cpp
282399 | * XBase | ASSERT(uNewVertexIndex < uNumCoords) fail: 213 @ .\CombineLandscapeAction.cpp"
*вторая строка повторяется множество раз. Если глюк проявляется только после взрыва объекта, соответственно ошибка в логе появляется только после этого.



Благодарность: Проведено очень много тестов, проверены разные версии возникновения. В конце концов, благодаря тестам Emishka_Roper по замене текстур, Alexbond похоже точно определил причину возникновения.

Причина: 
В WUM довольно специфично устроен рендер сцены. Похоже, что при рендере вначале собирается массив из полигонов с одной текстурой, после чего происходит их отрисовка. Проблема в том, что индекс массива, это переменная типа WORD, т.е. максимальное количество индексов это FFFF = 65535 вершин. Если их больше - индекс обрезается и получается путаница с координатами. 
Выходит, что если одна и та же текстура (именно текстура/банк, а не бокс с текстурой) встречается в сцене слишком часто (примерно более чем на 18к вокслей, цифра не фиксированная), будет данный глюк.

Как фиксить:
Соответственно вначале определить какая текстура вызывает глюк. Обычно именно эта текстура исчезает / растягивается или "тянется" к такой же текстуре. Либо через Map Editor посмотреть, какая текстура чаще встречается или методом исключения (удаления) определить объект, который глючит.
Затем выбираем похожую или другую подходящую текстуру и перекрашиваем часть карты с глючащей текстурой.
Удобно делать через реплейсер - правой кнопкой мыши по объекту в дереве объектов - replacer, заполняем, как на картинке ниже указывая, номер старого бокса >> номер нового бокса. 

Прикрепления: 2131369.jpg (85.3 Kb) · 5977855.jpg (358.9 Kb) · 7104405.jpg (21.1 Kb)




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

mod.worms.pro - мод Worms Renewation для Worms4
 
  • Страница 1 из 1
  • 1
Поиск: