Баг

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

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

Виды багов[править]

Баги движка[править]

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

Баги объектов игры[править]

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

Баги дизайна[править]

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

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