Баг

Материал из Викитропов
Перейти к навигации Перейти к поиску

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

Отдельные несознательные личности путают баги и лаги. Скажем нет таким безобразиям! Лаги — это попросту тормоза или подвисания. А баги — ошибки в программе.

Если из бага можно извлечь пользу, то это багофича. Если багофича ломает баланс, то это эксплойт.

Виды багов

Баги движка

  • Overflow bug. Стараясь сэкономить оперативную память, программист отвёл на хранение переменной слишком мало байт памяти. В результате, переменная может принимать некое минимальное и максимальное значение, а если пытаться ее вывести за пределы минимума или максимума — начинает отсчет с противоположного конца. Исторически, в эпоху XT, AT и DOS, это был очень распространенный баг, который породил не один старый геймерский мем (к примеру, «Сумасшедший Ганди» из первой «Цивилизации»: хотя это и исключительно мем, основанный на чьем-то фейке, ссылается он именно на overflow bug). Сейчас, когда оперативку экономить не принято, оверфлоу баг почти не встречается, зато встречается…
  • Memory leak. Распространенный баг, когда игра начинает заполнять всю доступную оперативную память. Результатом становятся резкие тормоза или вовсе зависание игры.
  • Графический баг (глитч, он же артефакт). Некорректная работа отрисовки объектов или геометрии уровня. К примеру, может пропадать и появляться стена, объект приобретает ЛСДшные цвета, или вместо неба появляется текстура кирпичной стены или жопки медведя. Не всегда за появление глитчей ответственен криворукий программист, они могут появляться и тогда, когда разрабы игры не при делах, а причина артефакта на более низком уровне — баг в видеодрайвере, data error на диске, где лежит файл с текстурой, или вовсе собирающаяся сдохнуть видеокарта.
  • Баг физического движка. Похож на баг скрипта, но сидит на более низком уровне и приводит к непредусмотренному разработчиками поведению объектов при падении или столкновении. Например, убитый вражеский боец может не упасть на землю и лежать хладным трупом, а начать отплясывать адский брейкданс.

Баги объектов игры

  • Баг скрипта. Если большинство багов в коде движка игры просто приводят к вылетам, зависаниям или графическим артефактам, то баги в написании скриптов — вложенных «программ в программе», которые управляют поведением объектов игры — ведут к странному и непредсказуемому поведению этих объектов. Забаговавший персонаж может упереться в стенку и двигать ногами, как будто идёт. Забаговавшее оружие может стрелять, когда в магазине — отрицательное число патронов. Забаговавший монстр — использовать не те атаки.
  • Несдающийся квест и аналогичные проблемы с сюжетом. Где-то не прописана какая-то проверка, от которой зависит продвижение сюжета вперёд. Или она прописана так, что происходит не всегда. В результате квестовую линейку оказывается совершенно невозможно пройти. Бывает, что квестовый предмет легко безвозвратно продать/выкинуть/сломать.
  • Софтлок. Баг, при котором скрипт уходит в бесконечный цикл. И ладно бы, если в бесконечный цикл ушел какой-нибудь непись. Так нет же — это происходит с элементами игрового интерфейса, геометрией уровня или чем-то еще, от чего зависит возможность игрока влиять на мир игры. В результате игрок оказывается заперт — ни туда, ни сюда.
  • Отсутствие защиты от дурака. Обычно никакого бага в этом месте нет. Но если игрок сделает что-то очень неочевидное, чего разработчик даже предположить не мог — возникает баг. Хорошо, если какая-нибудь ерунда типа внезапной телепортации в начало уровня, или даже что-то полезное, вроде +3000 здоровья (чем обожают пользоваться разные спидраннеры). А если софтлок или несдающийся квест?
  • Непродуманная фича. Разработчики прикрутили какую-то крутую фичу, но прописали только ее взаимодействие с обычными объектами игры. Но что, если ее применить на необычные? Скажем, Заклятье Внезапной Смерти прекрасно убивает гоблинов, но что, если его применить на Друшлака Демона Огня — босса-загадку, которого надо проходить, разбивая три кристалла льда в пещере? И Друшлаку забыли прописать иммунитет к этому заклинанию, как должен сделать нормальный разработчик? Хорошо, если игра зарегистрирует смерть Друшлака как победу над боссом. А если скрипт запускается только после разбития третьего кристалла льда, и если убить Друшлака неправильным образом, он просто не запустится?

Баги дизайна

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

  • Забыли положить ключ. Левел-дизайнер сделал дверь, которая отпирается только применением особого предмета, но нигде на уровне этого предмета не положил.
  • Дыра в геометрии. Стенка на самом деле не стенка, а непрозрачное, но абсолютно проходимое окно на ту сторону геометрии уровня. Провалившись в это окно, персонаж падает. Или в пустоту (что обычно движок перехватывает и телепортирует в какую-то стабильную точку), или на другое место на уровне, проваливаясь через потолок.
  • Ошибка свойств объекта. Левел-дизайнер обычно прописывает всем объектам, выполняющим какие-то особые действия, их свойства. Например, пресс или гермодверь при сдавливании игрока наносит урон. Но что, если уставший под конец рабочего дня левел-дизайнер ошибется в знаке, и эта конкретная гермодверь, обрушившись на игрока, будет его лечить? Бывает и такое.

Баг входит в серию статей

Видеоигры

Посетите портал «Видеоигры», чтобы узнать больше.