Во многих случаях мнения пользователей не совпадают с мнением разработчиков. Таким образом, в первом случае происходит сбой: «приложение перестало работать». С другой стороны, кодировщики сталкиваются с головной болью, связанной с определением причины проблемы. В конце концов, программные ошибки могут возникать только на определенном оборудовании или в сочетании с другим программным обеспечением (часто антивирусным).
Баги в играх, которые стали культовыми фичами и изменили геймдев
Это одна из двух статей, посвященных Дню ошибок (Tester). В этом треке вы можете просмотреть основные ошибки в игре, которые изменили игровой режим, и вспомнить моменты из беззаботного прошлого. В ней также рассказывается об ошибках в программном обеспечении, которые вызвали панику у людей.
9 сентября 1945 года испытатели гарвардского компьютера Mark II обнаружили, что реле было забито молью, что не позволяло машине работать. Грейс Хоппер сделала запись в своем дневнике и придерживалась этой оценки. С тех пор разработчики стали называть ошибку «багом», а 9 сентября стало Днем багов или Днем тестера.
Баг в игре, спасший GTA
В 1995 году ребята из DMA Design потерли руки и начали разрабатывать игру под названием Race’n’Chase. Идея заключалась в том, чтобы ходить и выполнять свои обязанности в качестве полицейского или грабителя. Они планировали выпустить его через 18 месяцев. Однако идея оказалась настолько скучной, что испытатели зевали. Затем рост остановился. Сейчас разработчики вернулись к этому, а затем снова отказались от него. Работа так и не сошла с мертвой точки, и издатели уже подумывали о ее закрытии.
Ошибки в игре изменили все. Был нарушен расчет пути полицейских: когда их преследовали, они больше не обходили игрока, а пытались обойти его. Психопаты дополнили игровой процесс, и это очень понравилось тестировщикам. Разработчики переименовали игру, улучшили поведение полиции, и Grand Theft Auto была выпущена в октябре 1997 года; в начале 2002 года DMA Design Studios была приобретена и переименована в RockstarNorth.
Файтинги могли быть без комбо-ударов?
Согласен. Нет ничего лучше, чем играть в Mortal Kombat с друзьями и превращать треть своего здоровья в сочное комбо. Это связано с ошибкой в игре. На этот раз это Street Fighter 2.
Это было обнаружено во время тестирования бонусного уровня. В этом испытании вы должны разбить автомобиль за отведенное время. Продюсер проекта, Нориката Фунамидзу, понял, что при правильном выборе времени анимация атаки может быть остановлена и несколько ударов могут быть выполнены быстрее, чем обычно. Разработчики не спешили исправлять это, так как считали, что игроков не будет беспокоить сложность движений.
Игра была выпущена в 1991 году и стала популярной во всем мире. Конечно, участники Street Fighter 2 обнаружили уникальность анимации и активно использовали ее. Впоследствии разработчики создали специальную систему комбинированных ударов. Таким образом, игровые баги стали культовым элементом, определяющим тип файтингов и по сей день.
Блокирование и исправление крупных ошибок и серьезных угроз является приоритетом для команды. Незначительные ошибки часто остаются в релизной версии и исправляются в регулярных обновлениях.
Как выглядит баг
В большинстве случаев их можно обнаружить на ранних стадиях роста, например, при создании игры. При круглосуточной работе тестера, играя в условно-бесплатный Fallout 76, вы должны увидеть все ошибки, которые в конечном итоге не сломают игру. Хотя это правда, что в конечном итоге люди не могут увидеть все, и требуется больше времени и работы, все же некоторые ошибки невозможно исправить. Зачем исправлять такие ошибки, если они не важны и нет потерь? Ошибки исправляют не разработчики, их исправляют игроки, а не просто равнодушные люди. Это называется коррекцией. Перейдем к виновникам торжества в этой книге. Самый простой из них — отсутствие текстур. Это могут быть прозрачные области или цветные пиксели. Это происходит, когда текстура отсутствует в игре. Важнее то, что это ошибка в коде, прыжок куда-то не туда и игра уже залипает и выдает ошибки и сбои. Здесь дело в том, что существует сломанный кусок кода. Имеются ошибки в тексте и звуке. Например, вместо звука меча, которым играет курица, скажем, субтитр — это машина, здесь присутствует человеческий фактор. Цепочка событий в игре. Невозможно все исправить из-за того, что на этом уровне трудно наблюдать.
Творческие решения
Однако баги проходят только из-за отличной конкурентоспособности, speed run — гонки на скорость игры и наслаждения игрой, а вот ошибки — это совсем другая тема и сокращают игру в три раза из-за текстур. Не делать всего этого — все уже сделано за меня. Удивительно, как люди используют ошибки и недочеты, каждый пиксель просчитан, все основано на ошибках, недочетах и глюках.
Критические ситуации
В качестве примера, где далеко не уедешь, можно вспомнить лицо Assassin’s Creed unity, проблема была вызвана несовместимостью с некоторыми видеокартами, эта ошибка была исправлена в патче первого дня, но оставила отпечаток на и без того большом ненавистном матрасе с оптимизацией Об отсутствии ошибок говорит Жан Гесдон, главный креативный руководитель Ubisoft.
Если играть в нее сейчас и использовать все исправления, то это будет очень хорошая и качественная игра». Другими словами, мы, вероятно, упали близко к солнцу и потеряли самоконтроль. Именно поэтому синдикат сосредоточился на качестве, команда проделала отличную работу ЖанГесдон
В заключение хочу сказать, что ошибки и заблуждения характерны для различных культур и являются неотъемлемой частью игр и игровой индустрии. _Девлопер_.
В то время как некоторые ошибки безобидны и вызывают улыбку, другие приводят к разрушительным последствиям для имиджа разработчика. Кроме того, мы поговорим об ошибках, работе аудиторов и о том, почему ошибки доходят до конечного пользователя.
Употребление
Вам буквально необходимо понять распространенную фразу «это не ошибка, это особенность». Это не ошибка, это необходимая особенность программы. Ошибки в программе юридически являются мнением автора, поскольку на программное обеспечение распространяются те же законы об авторском праве, что и на текстовые материалы.
Разработчики программного обеспечения используют специальные жучки для поиска ошибок в программном обеспечении. Например, в операционных системах Windows можно использовать программу WindBG отладочных инструментов Microsoft для пакетов Windows. В операционных системах, таких как GNU/Linux и некоторых других UNIX, есть вычет под названием GDB (GNU Debugger).
Отчёты об ошибках
Большинство ошибок обычно исправляется на этапе компиляции и тестирования. Однако некоторые ошибки достигают версии и отображаются конечному пользователю при использовании программного обеспечения. Специальные программы используются для улучшения качества программного обеспечения с целью выявления целевых ошибок приложения, сбора всей необходимой информации об их симптомах и отправки интернет-отчетов разработчикам программного обеспечения.
Например, утилита Dr Watson интегрирована в операционную систему Windows и по умолчанию обнаруживает ошибки в пользовательских приложениях и отправляет ссылку на специальный сервер Microsoft. Другим примером являются соответствующие библиотеки BreakPad 2 и CrashRPT 3.
Давайте рассмотрим причины ошибок в конкретном примере. Часто в играх встречаются ошибки, когда главный герой и NPC одновременно используют одну и ту же лестницу и мешают друг другу двигаться. Кажется, это очень легко исправить. И как разработчики вообще могут совершить эту глупую ошибку?
Разновидности ошибок
Также важно, чтобы разработчики разделяли свои приложения на различные типы ошибок на основе стандартных условий эксплуатации. Например, при увеличении нагрузки на процессоры, интерфейсы и устройства обработки входящих данных. Незначительные ситуации, сбои в работе и несовместимость с архитектурой процессора (что часто встречается в мобильных устройствах).
Разработчики делят ошибки по степени сложности.
- Борбаг (Bohr Bug) – «стабильная» ошибка, легко выявляемая еще на этапе отладки или при бета-тестировании, когда речь еще не идет о выпуске стабильной версии.
- Гейзенбаг (Heisenbug) – периодически проявляющиеся, иногда надолго исчезающие баги с меняющимися свойствами, включая зависимость от программной среды, «железа».
- Мандельбаг (Mandelbug) – ошибка с энтропийным поведением, почти с непредсказуемым результатом.
- Шрединбаг (Schroedinbug) – критические баги, чаще приводящие к появлению возможности взлома, хотя внешне никак себя не проявляют.
Последняя категория ошибок является одной из основных причин, по которым операционные системы Windows регулярно обновляются. Пользователям кажется, что все в порядке, но разработчики из года в год выпускают новые пакеты исправления ошибок. Самая известная ошибка, которая подействовала на нервы многим разработчикам, — это ошибка Y2K. Это было забыто, но урок был усвоен.
Разработчики различают ошибки, которые мешают им редактировать программу, и ошибки voring. Вторая категория — это просто предупреждение о локальной «ошибке» в коде, но не влияет на конструкцию или дальнейшую работу программного обеспечения. Например, точка или точка, отсутствующая в пенсии, когда компилятор может сам решить эту проблему.
Логические
Наиболее серьезные ошибки. Такие ошибки нарушают спецификацию и приводят к изменению функциональности программы. Никто не знает, к чему это приведет — это может записать «неправильные данные» на диск, неправильно изменить важные документы или дать доступ к неверной информации о транзакциях. Единственный способ исправить их — знать логику, лежащую в их основе.
Синтаксические
Синтаксические ошибки существуют на уровне конкретных языков программирования (C, Java, Python, Perl и т.д.). То, что работает с предупреждением на одной платформе, станет серьезной проблемой на другой. Такие ошибки можно легко исправить во время компиляции. Это происходит потому, что инструмент не позволит неправильной части кода «пойти дальше».
Компиляционные
Это состояние возникает, когда код, написанный на языке высокого уровня, преобразуется в «простой», читаемый код. Это может быть вызвано либо серьезными ошибками редактирования, либо ошибками в самом компиляторе. Такие ошибки устраняются в программе разработки программы — ведь невозможно выпустить даже тестовую версию.
Среды выполнения
Ошибка времени выполнения SO -CALLED. Это проявляется в программах, составленных на начальном этапе. Например, из-за нехватки ресурсов на компьютере или в результате аварийной ситуации (обрыв памяти, разрушение носителя, устройства ввода/вывода). Это происходит, когда разработчик не учитывает реальные условия эксплуатации. Необходимо вернуться к фазе логического планирования.
Арифметические
Один из видов разумной ошибки. Она возникает, когда программа вычисляет множество переменных во время выполнения, но на одном из этапов происходит что-то неожиданное. Например, деление с нулем или применением дает «бесконечный» результат. Ситуацию можно изменить только на уровне кода — заложенного в него алгоритма.
Что такое исключение
Внедрение исключений в программу снижает риск непредсказуемых ошибок. Это события, которые вызывают «неправильное» поведение. Этот механизм позволяет систематически обрабатывать ошибки, независимо от типа приложения, платформы или других условий. Разработать единую систему реагирования, например, операционную систему.
Существуют исключения для программного и аппаратного обеспечения. Первый генерируется самим приложением и операционной системой, на которой оно работает. Аппаратные средства генерируются процессором. Например, деление на нули, переполнение буфера и ссылки на ненавязчивую память. Исключения касаются самых серьезных и критических ошибок.
Как избежать ошибок?
Есть два эффективных способа избежать проблем на этапе разработки. Первый — это специальная программируемая депривация. Они показывают результат выполнения в числах, которые объективно указывают разработчику, правильно ли был обработан следующий фрагмент кода или это ошибка, которая будет исправлена.
Второй способ — взять специальных людей, тестеров. Это помогает понять, как работает интерфейс в разных ситуациях на разных платформах. Это максимально приближено к реальной ситуации. Поэтому все серьезные продукты обязательно проходят через такие этапы.
Ошибка времени выполнения SO -CALLED. Это проявляется в программах, составленных на начальном этапе. Например, из-за нехватки ресурсов на компьютере или в результате аварийной ситуации (обрыв памяти, разрушение носителя, устройства ввода/вывода). Это происходит, когда разработчик не учитывает реальные условия эксплуатации. Необходимо вернуться к фазе логического планирования.
Кто виноват в багах? Изучаем, как разрабатываются игры и зачем нужен дизайн-документ
Все игроки ненавидят ошибки, но не все понимают, как именно они происходят и кто несет за них ответственность. Чтобы дойти до конца темы, рассмотрим процесс разработки игры более подробно.
Стадии разработки игры
Создание игры (и не только игры) состоит из двух этапов
- Подготовка. На этой стадии придумывается концепция, делаются прототипы и самое главное — составляется дизайн-документ. Дизайн-документ — это библия проекта, в которой описана вся игра (примерно как режиссерский сценарий для фильма). В этом документе должны быть описаны каждый диалог, задание, любая активность, характеристики, боевая система, рост и внешний вид персонажей, ролевая система и даже длина прыжка. Все должно быть описано максимально подробно, чтобы не оставалось никаких вопросов. Стадия подготовки игры в правильном проекте может занимать больше времени, чем непосредственно разработка.
- Реализация. Менеджеры, изучая дизайн-документ, ставят задачи исполнителям: дизайнерам, художникам уровней, аниматорам и программистам. Исполнители параллельно начинают выполнять свои задачи: одни строят локации, другие делают боевую механику. Затем из выполненных задач, как из кирпичиков LEGO, собирается игра. На этой стадии могут проводиться так называемые «вертикальные срезы»: создается один готовый уровень и проверяется, как работает игра, вживую. И если руководитель проекта поймет, что изначально игра недееспособна, то разработчики возвращаются к стадии подготовки. Также могут вноситься небольшие правки в баланс, но никаких кардинальных изменений (удалений или добавлений механик, которых нет в дизайн-документе) производиться не должно. Если прописан дизайн-документ, исполнители правильно сделают свою работу, а игра выйдет вовремя и без багов.
Производственный ад.
Постоянные изменения в игровой механике требуют большой терапии.
Если был написан хороший дизайн-документ, команда представляет игру в соответствии с описанием. Если проектная документация не составлена, или если руководитель проекта постоянно меняет утвержденные механизмы, вся команда начинает бесчисленное количество работы.
Ошибки возникают на этапе изменения чего-либо. Например, подумайте об игре Darksiders с множеством платформ и головоломок. Представьте, что на этапе, когда все уровни созданы, руководитель решает сделать прыжки меньше и выше. Изменение параметров прыжка занимает 10 минут. Но теперь герой не может прыгать по платформам, но может перепрыгивать через вертикальные препятствия. Вам предстоит пройти по каждой платформе и преодолеть все препятствия, созданные вручную. И не забывайте о человеческом факторе. Сделайте тысячу мелких изменений на каждом уровне, и исполнитель явно что-то теряет, забывает или мешает срабатыванию. Есть тысячи способов ошибиться при таком подходе.
И это только одна модификация, их может быть сотни. Каждое из этих исправлений создает серию связанных проектов. Каждая из этих задач неизбежно что-то нарушает и создает ошибку. В результате все исполнители работают как сумасшедшие, преувеличивают, но ничего не производят. Эта «работа труда» называется адом производства.