Сперва добейся (c)

топ 100 блогов war_tundra12.09.2015 2015-09-12 03-56-41 1.51.9.44 Як-9К дергаются рули высоты и направления - Летная модель и модель повреждений - War Thunder


1. Ошибка

Для начала докажем тезис о "самолеты и танки выдаются пользователю в неверном состоянии" в этом нам поможет следующее видео:

Видео снято на продакшен сервере, тест план выглядит следующим образом: выехать на Т26->Т26->БТ->Т26->БТ, в процессе произвести пару действий на каждом танке после чего самоуничтожиться и выбрать следующий, при просмотре наблюдаем за положением башни:



В результате теста обнаруживается очевидный косяк 1,3,4,5 танк выдаются нам в "нулевом" состоянии (орудие смотрит вперед, артудар готов к применению и т.д), вот 2-й явно "б/у" и наследует положение башни и таймер артудара от первого.

Эффект этот обладает 100% воспроизводимостью и заключается в том, что "возрождении" техника, которую дают игроку часть своего состояния сохраняет из "предыдущей жизни". В данном конкретном случае это происходит, когда мы берем ту же технику на которой только что были в этом бою, а вот если чередуем, то все происходит правильно.

Сохранившиеся после возрождения состояния, а это не только положение орудия, таймер арт удара, тип заряженного снаряда, но и скажем эффект пожара или дыма от пожара на только что выданном "новом" танке и еще куча состояний, которых мы скорее всего просто не видим т.к. они не бросаются в глаза и не отражаются в логах, по своей сути являются случайным мусором из "прежней жизни".

2. Серьезность проблемы.

На первый взгляд эта ошибка не кажется серьезной: "подумаешь башня не туда повернута", но на самом деле это серийно воспроизводимая ошибка, которую мы уже не раз встречали. Например после ввода в аркаду возможности возрождения на аэродроме самолеты начали случайным образом переворачиваться, дело оказалось в том, что самолет возрождался в том положении в котором разбился его предшественник, хоть вверх ногами!

К исправлению других косяков после возрождения типа отдельно летающего гака от корсара или шлейфов дыма за самолетами (была такая ошибка ЕМНИП при выходе мажора с посадками на брюхо) я не был причастен, но общая картина подозрительно похожа - косяки возникали исключительно после возрождения.

Да и сам текущий пост вызван очередным багрепортом о том, что самолет криво себя ведет после починки на аэродроме (тут собственно ситуация аналогична возрождению, мы должны получить новый самолет, но что-то пошло не так).

3. Что с этим делать?

Ну конечно, можно ничего с этим не делать и продолжать плодить ошибки подобного рода (именно так получается БагТандер), а можно отправить "четких профи" от улитки на курсы повышения квалификации или там книжки дать почитать на тему написания "надежного" кода.

Программисты они люди, а людям свойственно ошибаться и забывать сделать необходимое, потому и существуют всякие там правила, что любую заведенную переменную нужно сразу инициализировать начальным значением.

Если бы при возрождении или ремонте код улиток принудительно приводил все переменные состояния объекта в начальное состояние (как это собственно и так делается когда мы меняем один танк на другой), а не полагался на то, что там что-то полезное записано, то это дало бы мизерный оверхед, но зато избавило бы от кучи уже выявленных и еще только будущих ошибок, когда программисты где-то чего-то забыли и оно осталось в по сути случайном состоянии.

4. Эпилог.

Видео в посте было записано практически год назад. Записывалось оно для багрепорта, который нонче безвести сгинул в пучинах форума, предъявлялось оно и А.Юдинцеву:
Сперва добейся (c) anton1

А К. Юдинцев выписывал после этого автору сего опуса RO:
Сперва добейся (c) todace
За это время частично поменялась механика (возрождений стало меньше, арт удар дают по иным правилам), но этот косяк естественно живее всех живых. Можете прямо сейчас сгонять в полигон на резервах и проверить.

Косяк этот далеко не единственный, наши "профи от улиток" любят заниматься быдлокодингом вместо написания кода устойчивого к ошибкам.

Когда я узнал о причинах бага с мнимой смертью пилота, я сразу написал разработчику с ником SDK (он тогда занимался кодом ДМ), что при таких алгоритмах дальше будет еще куча багов, на что мне сказали в духе "гуляй мальчик, мы тут все умнее тебя".

Но как говориться "пи*деть, не мешки ворочать"(c) и мнимые повреждения встречаются регулярно:


24 секунда Do.217M нафиг сгорел, на иконке парашютик и отсутствует левый руль направления. А на 2.10 у него нормальная иконка и левый руль направления РЕГЕНЕРИРОВАЛ


Поэтому БАГТАНДЕР НАВСЕГДА!

Оставить комментарий

Архив записей в блогах:
В ролях: Антон Шагин, Александр Адабашьян, Сергей Газаров, Светлана Немоляева, Иван Охлобыстин, Сосо Павлиашвили, Павел Воля, Людмила Соловьева, Михаил Тарабукин, Карина Андоленко. Кодек: XviD. Качество: CAMRip ...
На следующий день в 8 утра Ребекка и Грейс погрузили не выспавшихся блогеров в несколько машин, и мы приехали в студию "Digital Domain". Визуальные эффекты для почти сотни популярнейших фильмов от "Титаника" до "Трансформеров" были сделаны именно ...
Организация экономического сотрудничества и развития (ОЭСР), ожидает усиления мирового экономического роста и практически полного восстановления мировой экономики в 2014 году, передает Интерфакс. Если в марте аналитики этой организации прогнозировали прирост ВВП Германии в I ...
Похоже, что в Беларуси скоро будет очень жарко. По заявлению Лукашенко - террористы были местные. Не исламские радикалы, а белорусские электрики. Я не знаю, кончено же - правда ли это или нет. Но из заявлений Лукашенко следует понимать, что могут ...
Изготовление детЁв - это, в принципе, сложно. Сначала надо тётю уломать, потом жениццо, докУмент шоб был, да. А тётя ещё ломается: "У мну сёдни день неподходящий, поэтому ты давай мимо!" Облом, чо. Приходится вытаскивать и всё на пузико ей. Или жоппу. Это уж как получится. А вот чтоб ...