Тестирование в Инди-Играх
Если ты начинающий инди-разработчик, или хочешь узнать о тестировании игр, то эта статья тебе понравится!
Привет, дружище!
Не так давно, я поймал себя на мысли, что тематика тестирования игр, в т.ч. и инди-игр практически нигде не затрагивается. А ведь это очень важный аспект разработки любого проекта, даже самого простого. Что же, присаживайся поудобнее, сейчас мы с тобой немного поговорим о теории тестирования, и о ее применении в инди-проекте, чтобы твои крутые игры были еще круче!
Для удобства, статья будет разделена на несколько частей. Сегодня мы посмотрим, кто такие тестироващики игр, и какие ошибки им предстоит искать. Поехали!
Существует популярный миф, что тестировщиками являются школьники, целыми днями играющие в различные игры. Это не так. Найти хорошего тестера довольно таки сложно, ведь этот человек должен не только уметь играть в игры, но и иметь хотя бы минимальный технический бэкграунд. Иначе большинство скрытых "Багов" так и останутся не пойманными.
Если у тебя нет ни игрового опыта, ни бэкграунда, не переживай! Просто скачай какую-нибудь игрульку на телефон и читай статью дальше!
Фантастические Баги и где они обитают
Сейчас мы рассмотрим популярные ошибки, которые встречаются при разработке игр, а также ареал их обитания. В общем то, на что стоит смотреть в первую очередь.
Ошибки пользовательского интерфейса. Где их можно встретить, понятно из названия, вот примеры характерные особенности:
* Имеются кнопки или игровые элементы (постройки, ресурсы, валюта), которые выполняют не те функции, которые от них требуются или же вообще не выполняют никаких функций (пустышки);
* Имеются кнопки или игровые элементы, которых вообще не должно быть;
* Синтаксические ошибки (Не все это любят, но писать нужно правильно);
* Плохое расположение кнопок, диалоговых окон, информационных панелей (К примеру, когда работаешь с Unity и накосячил с иерархией объектов в Канвосе);
* Пропущенные команды. Игрок должен иметь возможность отменить действие или вернуться к предыдущему (К примеру отменить выбор здания для постройки);
* Низкая производительность. Интерфейс и картинки долго прогружаются. (Конечно, можно обвинить во всем железо игрока, но сперва нужно проверить код и по возможности его оптимизировать).
Обработка ошибок. Как бы странно это не звучало, но при обработке ошибок, т.е. выводе о них информации или выводе предупреждающего сообщения, тоже бывают ошибки. Вот примеры:
* Ввод неверных данных (стандартная защита от дурака, которая должна выводить сообщение игроку, если тот, к примеру, пытается записать новый логин недопустимыми символами);
* Ввод невозможных значений (к примеру, когда при регистрации, игрок пытается ввести несуществующую дату рождения - 32 декабря)
* Приобретение внутриигровых предметов без выполнения требуемых условий (например игрок хочет купить крутой скин за 1000 алмазов, а у него в наличии их всего 100).
Ошибки, связанные с обработкой граничных условий. Граничные условия имеются там, где можно задать условие "больше или меньше", "раньше или позже", "короче или длиннее". И именного на границах этих диапазонов обитают "Баги". Как их проверить:
* Ввод логина длинной 51 символ, при допустимом количестве - 50 (в идеале, ничего не произойдет, а не в идеале, будет переполнение памяти, и возникновение новых "багов" в абсолютно разных местах);
* Откат способности происходит на 10 секунде. Что будет если активировать способность на 9, 10 и 11 секунде?
* 2D враг может двигаться по Y в диапозоне от -2 до 2, по X от -4 до 4. Что произойдет, если врага поместить в координату (Y:-2, X:-4) или за допустимый диапозон?
Уловили логику? Едем дальше!
Ошибки вычислений. Эти ошибки возникают там, где происходят расчеты, а именно - атака, лечение, таймеры / секундомеры, использование ресурсов:
* Выполнение умножения вместо деления;
* Неверные округления (например, когда при создании таймера использована неправильная формула округления);
* Возникновение отрицательных значений (например при получении урона, количество ОЖ получается отрицательным).
Ошибка управления потоком. Во сути это нарушение очередности выполнения функций.
* К примеру, главный герой получил урон и скопытился, а затем враг проиграл анимацию удара;
* Отображение изменений внутриигровой валюты при повторном заходе в игру или в меню магазина (частый баг, но не критичный. На Unity случается, когда забываешь воткнуть в функцию Update отображение валюты);
* Зависание игры, бесконечное получение или нанесение урона (случается, когда забываешь поставить условия выхода в бесконечных циклах. Например - получение урона при входе в огонь);
* Условия проверок пересекаются и противоречат друг другу.
Перегрузки. Название говорит само за себя:
* Перегрузка игровых серверов;
* Переполнение памяти (Явный признак - потеря выполненных действий);
Начальное и последующее состояние. Очень противные "Баги". За частую, они случаются только один раз, при запуске игры, и при последующих запусках выскакивать не будет. Особенность этой ошибки в том, что ее сложно воспроизвести, для этого требуется либо переустановка, либо регистрация нового пользователя. Таким страдают RTS и различные фермы. Вот пример "Бага", обнаруженного на одной из ферм:
* При активации нового производственного здания, появляется окно с обучением, после чего можно продолжать игру. Но если просто закрыть обучение не проходя его, и активировать это здание у друга, то получаешь ERROR'ом в лицо.
Ошибки тестирования. Не только разработка допускает ошибки, но и тестировщик. За частую, ошибки тестера указывают на несовершенство пользовательского интерфейса, но есть и такие, которые возникают из-за неверных тестовых данных.
А вот как их избежать, я расскажу в следующей статье. Которая будет посвящена тестовым артефактам и тест-дизайну!


Заходит однажды тестировщик в бар.
Забегает в бар.
Пролезает в бар.
Танцуя, проникает в бар.
Крадется в бар.
Врывается в бар.
Прыгает в бар
и заказывает:
кружку пива,
2 кружки пива,
0 кружек пива,
999999999 кружек пива,
ящерицу в стакане,
–1 кружку пива,
qwertyuip кружек пива,
заказывает одно пиво каждую милисекунду,
заказывает пиво но отменяет заказ,
сначала отменяет заказ потом заказывает пиво,
пытается заказать пиво с правами только просмотр,
заказывает пиво вместе с 10000 посетителями одновременно,
заказывает пиво не заходя в бар.