Ох уж эти коварные баги. Сколько геймерских игровых часов из-за них потрачено зря, сколько бессонных ночей у разработчиков... Баги, баги, баги... Иногда они очевидны и исправить их не составляет труда, а порой на их лечение можно затратить больше недели. В данной статье я постараюсь раскрыть вам некоторые известные мне методы по отлову и исправлению багов.
Избавляемся от багов 1. Что же такое баг? Определение
Баг
(англ. bug — жук; глюк) — жаргонное слово, обычно обозначающее ошибку в
программе или системе, которая выдает неожиданный или неправильный
результат.
Виды багов
Борбаг
(англ. Bohr bug) — термин, используемый в программировании для описания
программной ошибки, которая, в противоположность гейзенбагу, не
исчезает и не меняет своих свойств при попытке её обнаружения. Это
слово, в отличие от слова «баг», в русском языке практически не
используется. Близкий по значению русскоязычный аналог — «стабильный»
или «устойчивый» баг. Перейти к: навигация, поиск
Гейзенбаг
(англ. Heisenbug) — термин, используемый в программировании для
описания программной ошибки, которая исчезает или меняет свои свойства
при попытке её обнаружения. Это слово, в отличие от слова «баг», в
русском языке практически не используется. Не полностью идентичный, но
достаточно близкий по значению русскоязычный термин — «плавающая
ошибка».
Мандельбаг (англ. Mandelbug) — термин,
используемый в программировании для описания программной ошибки, чьё
поведение столь сложно, что выглядит хаотичным[1]. Это также
подразумевает, что говорящий полагает, что это скорее борбаг, чем
гейзенбаг.
Шрёдинбаг (англ. Schroedinbug) — термин,
используемый в программировании для описания программной ошибки, которая
никак не проявляет себя, однако внезапно возникает, если кто-то
наткнётся на неё в исходном коде или попытается использовать программу в
необычных условиях и осозна́ет, что система вообще не могла работать
при наличии такой ошибки. После этого программа перестаёт работать
вообще до тех пор, пока ошибка не будет исправлена. Хотя это звучит
невероятно, некоторые программы содержат в себе такие ошибки. Это слово,
в отличие от слова «баг», в русском языке практически не используется.
© wikipedia.org
2. Как облегчить себе жизнь?
Лучший способ исправить баг - избежать его.
Для этого следует придерживаться нескольких простых правил:
1. Будь внимателен при написании кода! 2. Не пиши кучу кода без проверки. Написал чуть-чуть кода, проверил - работает, пишем дальше.
3. Код следует содержать в чистоте. Если ты насуёшь в свой код или
триггеры кучу мусора и назовёшь переменные и триггеры как зря, то в этой
каше будет трудно разобраться в дальнейшем. 4. Для удобной проверки можно выводить в текстовом виде некоторые данные из триггера (в которых вы сомневаетесь).
Файл карты
Чтобы в дальнейшем при отлове и исправлении багов не возникало трудностей следует придерживаться следующих правил:
1. Не сохраняем карту всё время в один файл. Стараемся как можно чаще сохранять в новый файл.
2. В названии файла и описании карты всегда пишем версию и дату
разработки. При этом желательно записывать всё, что вы сделали нового в
данной версии хотя бы в общих чертах. 3. Всегда храним резервную копию карты на флешке или другом носителе не связанном с вашим PC.
Теперь мы знаем, как следует ухаживать за своей картой, дабы багов было
меньше и отлавливать их было легче. Перейдём к практике.
3. В поисках багов
Тестеры
Баги могут встретиться в самых неожиданных местах и порой найти их
очень трудно. Автор врядли сможет отыскать все баги в своей карте, ибо
он знает более выгодные и невыгодные варианты игры и старается следовать
по какой-то своей тактике. Поэтому следует обязательно искать тестеров.
Ведь у каждого человека своя логика. И то, что один игрок никогда не
заметит, другой увидит при первой же игре.
Несколько советов по поискам багов
1. Старайтесь сами почаще тестировать свою карту по принципу
сделал-протестировал, но и не забывайте про обычную игру не нацеленную
на поиск багов. Т.к. при длительной игре могут всплыть такие баги,
которые бы при направленном тестировании ни за что бы не показались.
2. Если вам необходимо быстро протестировать определённый момент
ставьте дополнительных юнитов, делайте специальные чит-команды, так вы
сохраните своё драгоценное время. 3. Играя, специально создавайте
редкие игровые ситуации, пробуйте множество различных сочетаний. Так
вероятность нахождения вами труднозаметных багов возрастёт.
4. Избавляемся от багов
Чтобы исправить баг в каждом случае своё решение. Чёткого метода здесь
выделить нельзя. А вот поиск причины бага - совсем другое дело. Именно
он доставляет разработчику больше всего сложностей. И в данной части
статьи я поведаю вам, как проще всего найти причину бага.
Итак, мы нашли баг, что делать?
1. Прежде всего проанализируйте ситуацию. Выясните за счёт чего мог бы возникнуть баг.
Если вам всё очевидно, немедленно исправляйте злостный баг, ломайте его полностью!
Если же вы не знаете точно в чём дело...
Метод 1
Выделите среди триггеров (а большинство багов возникает из-за ошибок в
триггерах) так сказать группу риска, т.е. те участки вашего кода,
которые вы подозреваете. 1) Делим этот участок на группы, допустим
по два триггера. Отключаем группу- тестируем. Отключаем другую -
тестируем. И так пока не наткнёмся на группу при отключение которой баг
пропадает. (Старайтесь объединять в группу триггеры тесно связанные
между собой). 2) Далее по аналогичному принципу отлючаем триггеры подозреваемой группы, пока не наткнёмся на причину бага. 3) В найденном триггере отключаем по очереди группы действий. 4) В найденной группе действий находим нужное нам действие и пытаемся исправить баг. * Естественно при отключении каждой группы триггеров, действий и т.п. нужно тестировать карту.
Если вам вообще не понятно, что могло вызвать баг, То прогоняем через метод представленный выше весь код.
* В методе необходимо использовать отключение по группам, ибо если
отключать по одному триггеру и т.п. это займёт неизвестно сколько
времени (если у вас допустим 1000 триггеров в карте).
Метод 2
Если вам нечего скрывать и ничего ценного ваш код не представляет.
Можете попробовать создать тему на любом форуме, где помогают
картостроителям. При этом нужно выложить открытую карту. Ибо, если
причина бага далеко не очевидна, то без исходника кто-либо врядли
поможет вам.
Метод 3
Повторное тестирование и выяснение условий возникновения бага.
Метод 4
Помните, что я советовал вам сохранять карту каждый раз в новый файл?
Это было неспроста. Данный метод предполагает поиск причины бага по
логам и версиям. Тестируем каждую версию по очереди и ищем так сказать
порог возникновения бага. Т.е. две версии, которые разрабатывались одна
за другой, но в одной баг есть, а в другой нет. Смотрим лог пороговой
версии с багом и прибегаем к методу 1.
Можно и даже нужно
совмещать данные методы или же использовать их по очереди, т.е. если
предыдущий не приносит результат используем следующий.
Надеюсь моя статья поможет неопытным картостроителям избежать багов или же исправить уже существующие. Удачи =) |