Работаю в известной геймдев-студии уже больше года. Когда я только устроился, народ в основном занимался 2D-проектами. Проработал я месяц-полтора, поднабрался знаний от местных мэтров и внезапно был переброшен на новую 3D-разработку — аркадный шутер. Под него купили движок Lithtech Jupiter (на нем в 2000 году делали NOLF 2). Движок, к слову, для своего времени был очень хорош — все тулзы на месте и пайплайн удобный. Поскольку препродакшн только стартовал, много народу на него не перекидывали, и по счастливому стечению обстоятельств именно меня с тремя старшими специалистами отрядили поковыряться в заморском звере. Пока старшие спецы копали исходники и расширяли функционал под наши нужды, я начал пробивать возможность создания минимальными усилиями конструктора города — строить все по-честному на таком старом движке было почти невозможно.
Поначалу всё шло нормально — я сделал первую тестовую комнату, раскопал референсную систему моделей, и вроде как всё начало вырисовываться. Тут я заметил, что на моделях начала слетать развертка, да и сами модели порой начинали «ломаться» в самых неожиданных местах после экспорта в движок. Покопавшись три-четыре дня в настройках экспортера и покурив мануалы я так и не понял, что к чему. Старшие товарищи были заняты более важными делами и только отмахивались от меня: «Проверь ещё разок настройки экспорта, покрути там, плюнь здесь». Рукава засучили только в пору масс-продакшна, когда проблема вылезла у моделлеров.
Месяц боев с экспортером, попытки расковыривания исходников, переустановка дистрибутивов — не помогло ничего. Время поджимает, пора уже игру контентом набивать, а модели в движок всё не лезут. Что интересно, на машине у одного из старших спецов все проходило как по маслу. Ну, думаем, пора писать в заокеанскую техподдержку. Разработчики только плечами пожимают. Подходит время «Ч» — надо срочно что-то решать, игры-то может и не быть...
Все нервно курят на балконе, я в миллионный раз тщетно пытаюсь что-то поправить. И тут происходит чудо: у нашего спеца, у которого все экспортировалось без проблем, появляется совершенно безумная мысль, от которой поначалу все опешили:
— А зайди-ка в панель управления.
— ???
— Зайди-зайди. Там, где региональные параметры. А теперь разделитель целой и дробной части смени с запятой на точку.
Вуаля! Как по мановению волшебной палочки, всё заработало. Оказалось, что заморские ребята написали движок таким образом, что экспортер использовал значение виндовского разделителя; файл модели же был простым текстовиком, в котором перечислены положения всех вершин. Когда движок читал файл с запятыми вместо точек, он округлял координаты точек, и модели искажались затейливым образом.