Добрый день и с праздником всех нас ) Извините что так долго не писал - меня тут наверное помнят непосредственно только участники проекта (наше общение проходит по большей части вне форума). Итак, вкратце напомню - я так же состою в проекте локализации ТР3 и в последнее время фактически занимаюсь техническими деталями игры (отладкой программного кода). То есть исправление багов, улучшение игры и т.д. и т.п. Сколько всего наисправлено уже и сам не припомню, надо доставать черновики и все составленные мной за эти годы тома документации ))) Впрочем не это важно. Во-первых, еще раз с юбилеем и спасибо всем, кто не потерял в нас веру. Во-вторых, хотелось бы дать ответ на вопрос, который буквально рвется наружу из многих-многих форумчан, кто ходит в эту тему каждый день, как на работу - ответ на вопрос "Почему так долго!?". В-некотором смысле растянутые сроки - это моя вина. Дело в том что последний год у меня было очень мало свободного времени в связи с 5-м курсом университета и как следствие дипломирования (кстати, защитился я на "отлично") и соответственно проектом занимался мало и, что самое неприятное, с низкой периодичностью - когда садишься за голые машинные коды раз в неделю, очень сложно успеть сосредоточиться на логике, структурах данных и механике системы, которую за неделю уже успел подзабыть, и более того пока сосредоточишься, войдешь-таки в нужную колею, не остается нормального запаса времени на продуктивную работу непосредестенно над сутью того, зачем собственно садился за эти машинные коды (кто профессионально программирует, тот меня поймет).
Также отказаться от намеченных планов мы не могли, были четкие задачи, что в игре нужно исправить, что доделать - и компромисс в виде дальнейших патчей нам не подходил. Выпускать, так выпускать. Итак к вопросу "Почему так долго!?" вечно привязан вопрос "Ну когда же!?". На него я могу ответить только пожалуй "скоро", поскольку давать конкретные сроки сложно, хотя бы потому что многие задачи отладки которые мне приходилось решать, решались-решались намеченным способом, а в конце всего этого долгого решения выяснялось, что оно не работает в принципе, и необходимо другое решение, не менее затратное по времени. Еще раз уточню что исходного кода, с которым работали товарищи из "Core Interactive" у меня к сожалению нет, иначе бы все было бы намного проще. Тем не менее, скоро... Потому что на подходе решение самой сложной головоломки, которую мне приходилось решать за все время локализации/доработки ТР3. О ней ниже...
Проблема с которой столькнулись многие обладатели видеоадаптеров "nVidia" и некоторых других - это проблема полоски в нижнем правом углу картинки. Как минимум половина из таких наблюдателей задавалась вопросами "Как она туда попала?" и "Как разрабы такой ляп упустили?". Или такой вопрос "Странно, а у соседа на компе все нормально работает...". Итак как же так произошло (см. рис. прикрепленный ниже). Разработчики в 98-м году настолько пытались привить ТР3 для компьютеров с любыми характеристиками, что чуть ли не в на каждом месте программного кода экономили все до последнего байта оперативной памяти и видеопамяти. Вывод картинки они тоже как ни странно очень экономно организовали - только вот экономия боком вышла. "Кореане" орагнизовали посегментный вывод картинки на экран в виде отдельных текстур натянутых на отдельные квадратные плоскости, стык в стык поставленные рядом. Работает это так: изображение в BMP-формате размерами 640x480 пикселей разрезается на 6 фрагментов размерами по 256x256 пикселей. Далее каждый из фрагментов, кроме 3 и 6 (внимание на иллюстрации) переносится каждый в свою отдельную текстуру 256x256, а фрагменты 3 и 6, обратите внимание, содержат каждый только 128x256 пикселей полезной информации, то есть ровно половину площади, так вот разаработчики, не долго думая, объединили фрагменты 3 и 6 и запихнули их в одну текстуру 256x256. Далее все банально просто - текстуры были натянуты на плоскости, а плоскости размещены на экране. Нижняя же правая плоскость получила ТУ ЖЕ САМУЮ текстуру что и верхняя правая, но с горизонтальным сдвигом на 1/2 текстуры. Итак момент истины, некоторые видеокарты несколько иначе подходят к вопросу интерполяции текстур и... правая половинка нижней правой текстуры на 1 пиксел смещается вправо, тем самым наезжая слева на левую половинку текстуры, образуя злополучную полосу.
Решение проблемы (проверено - работает, довожу сейчас до ума) заключается в выводе всего изображения целиком в виде одной большой текстуры на одну большую плоскость во весь экран. Более того это не только избавляет нас от полосы, но также позволяет использовать изображения любых разрешений, в т.ч. широкоформатные. Пожалуй это все, спасибо за внимание )))
P.S.Понимаю, что мое объяснение может быть не до конца понятно, так что если возникнут вопросы задавайте - отвечу с удовольствием.
Сообщение изменено: Arsunt (08 August 2010 - 10:25)
To seek. To learn. To do. ©