Тестирование и создание настолок: как я связал две этих сущности в своей жизни
Всем привет! Меня зовут Андрей, я — эксперт по обеспечению качества t2. Хочу рассказать свою историю, как изучая профессию QA-инженера в интернете и играя в настольные игры с друзьями, я устроился работать автотестировщиком и продал свою первую настольную игру.
Статья предназначена для всех людей, увлекающихся настольными играми (от новичков до опытных игроков и авторов) и сферой IT: от тестировщиков до геймдевелоперов.
Фотографии публикуются с разрешения и со ссылкой на правообладателя KONIK GAMES
Из SEO в QA и настольный геймдев
Долгое время я работал SEO-оптимизатором и в свободное от работы время изучал java и играл в настольные игры. Приобретённые навыки из java я применял в профессии SEO, в частности писал скрипты на селениуме, чтобы оперативно проводить регресс при изменениях на сайте. В дальнейшем я узнал, что есть отдельная профессия QA, а именно — автотестировщик. Язык я знал, а с теорией тестирования знаком не был. На сайте hh.ru я увидел объявление о наборе в школу автоматизированного тестирования от bellintegrator, прошёл техинтервью по java core и попал на ближайший поток. Проходя обучение, я параллельно придумывал с друзьями настольные игры, в которые мы часто играли, находили «баги» и пути улучшения геймплея, исправляли баланс — в общем пытались сделать интересные игры, чтобы собираться вместе было ещё веселее.
Изучая теорию тестирования, я смог посмотреть на разработку/тестирование настольных игр с профессиональной точки зрения. Подход к тестированию игр стал более осознанным и дисциплинированным; у нас уже были своеобразные роли, версионность продукта, фичи в виде механик и т.д. Более подробно процесс тестирования описан далее в статье. По завершении трёх месяцев теории и практики на курсах (с большим количеством ДЗ и финальным, выходным интервью по всему изученному материалу) я получил свой первый оффер.
Как-то утром я ехал на работу в трамвае, и мне в голову пришла идея создания простой игры — «Кошки-мышки». Думаю, название говорит само за себя: есть мыши, которые воруют сыр, и кот, который их ловит. Я представил, как это может выглядеть на столе, добавил элементов по типу комнат, где могут прятаться и ловиться мыши, набросал абстрактные правила, далее причесал их более детально по фазам, действиям игроков, продумал победные условия обеих сторон и предложил собраться друзьям поиграть. Игра оказалась лёгкой, но одновременно захватывающей, в неё хотелось играть снова и снова. У меня на тот момент уже были в разработке несколько игр, и я планировал поехать на «Граникон» (конвент разработчиков настолок) в Санкт-Петербург, когда доведу одну из них до ума. «Кошки-мышки» были почти готовым, опробованным продуктом, который мне нестыдно было презентовать. На сайте https:/grani.games/ я выложил короткое описание идеи игры и черновой вариант. Прототип требовал доработки, поэтому мы продолжали играть, упрощая правила, балансируя и докручивая детали.
В один прекрасный день мне на почту пришло уведомление от студии разработки детских настольных игр KONIK GAMES — нового подразделения крупной оптовой компании «Kоник». Они запустили разработку собственных настолок, включая девелопмент и производство, и искали интересные проекты. Со мной связался выпускающий редактор Полина Орешникова с предложением о сотрудничестве. В дальнейшем она курировала проект от идеи до печати. Скажу по личному опыту, процесс взаимодействия очень профессиональный, все друг друга слышат, и учитывается голос обеих сторон на всех этапах девелопмента. По итогу получился продукт, устраивающий всех. Итак, мой проект «Кошки-мышки» заинтересовал редактора KONIK GAMES, и мы начали совместную работу. Я подготовил концепт и отправил прототип с актуальными правилами и ходом игры.
Так как на рынке уже сотни игр про кота и мышей, редактор предложил новый сеттинг и лор (фон игры): американский дом 70-х годов, куда проникает шайка енотов в поисках еды, а хозяин их ловит и отправляет на задний двор. В этом случае замена сеттинга сыграла решающую роль, потому что тема и визуал являются важными составляющими успеха. Концепт обновлённой версии под названием «Банда енотов» презентовали руководству в числе других игр и отобрали для дальнейшей работы. После одобрения проекта я получил положительную обратную связь и предложение заключить договор купли-продажи с передачей авторских прав.
Мы регулярно были на связи с ребятами из KONIK GAMES. Они, как и мы с соавторами Иваном Азаровским и Алексеем Борисовым, которые помогали мне тестировать игру, вложили душу в этот проект. Над созданием игры трудилась целая креативная команда: гендиректор, руководитель студии, выпускающий редактор, художник, дизайнер, корректор, верстальщик и дети, для которых она создавалась. Редакторы тестировали прототип «Банды енотов» на продлёнке в начальной школе. Отдельным поводом для радости было то, что детям привозили несколько разных игр, и «еноты» пользовались особой популярностью. Больше всего им нравилось играть за хозяина и ловить енотов.
Ключевым моментом для меня было подключение к проекту опытного разработчика и эксперта в мире настольных игр — Юрия Ямщикова. Он был девелопером проекта, занимался механиками и балансом и внёс существенный вклад в развитие игры: его первые предложения по сокращению фаз оказались конструктивными и сделали игру намного проще.
Процесс девелопмента
Наша дальнейшая работа была в рамках некого SCRUM, проект разбивался на короткие циклы разработки: мы дополняли и обновляли существующую версию игры, заказчики вносили изменения в правила, докручивали механику, проводили внутренние и внешние тестирования и возвращались с обратной связью.
Работа разделилась на 3 этапа: разработка концепта, демоверсия и финальная версия игры.
ЭТАП #1
Разработка концепта включала в себя следующие составляющие:
● общая информация об игре: название, количество игроков и время партии
● аннотация игры (жанр, тематика и основные механики)
● игровые компоненты
● стартовая раскладка, рассказывающая о подготовительном этапе перед началом партии
● ход игры с информацией о фазах, игровом процессе, завершении раунда и действиях игроков
● особенности игры, описывающие ключевые моменты или компоненты
● дополнения от автора.
ЭТАП #2
Демоверсия — это черновой вариант продукта, а именно прототип игры, в который уже можно поиграть. Как правило, достаточно бумаги, ручки и каких-нибудь пуговиц в качестве игровых токенов (я использовал токены из других настолок).
ЭТАП #3
Финальная версия игры — это рабочая версия игры в плане движка и геймплея. Дальнейшие этапы проходили уже без нашего с соавторами участия. Это работа с художником по отрисовке иллюстраций для проекта, редактура, корректура, перевод на другие языки, вёрстка правил, производство и печать.
Когда со стороны заказчика появлялись замечания и идеи, мы вносили исправления, либо объясняли, почему предложения не могут быть реализованы. После доработки мы присылали обновлённую версию → и так до тех пор, пока результат не устроил все заинтересованные стороны. У нас были дейлики (daily scrum), на которых мы обсуждали насущные вопросы на тему баланса, интерактива, механик игры и т.д., у нас были ретро или sprint review с демонстрацией работ.
Применение теории тестирования в геймдеве
Забавно, что инструменты тестирования ПО и подходы в виде гибких методологий нашли применение в области тестирования настольных игр. Во время разработки игры я пользовался различными практиками тест-дизайна из области тестирования. На примере одной из комнат расскажу, как применялись граничные значения и классы эквивалентности.
Среди помещений, куда мог пойти игрок, была комната с ловушками (местное казино), где игроки за енотов бросают кубик, который решает их судьбу: вернутся ли они в свой лагерь с добычей или останутся пойманными ловушками хозяина и отправятся на задний двор.
«Ловушка» и должна ощущаться как что-то, чего не ждёшь, к чему невозможно подготовиться заранее, должен быть большой риск попасться. Простой математикой значение 6 было поделено на 3 в негативную сторону, а именно в шанс попасться (три к одному). Чтобы не попасться, на шестигранном кубике нужно получить одно из двух значений. Наигравшись в настольно-ролевые игры (D&D) и вспоминая, как приятно пробрасывать на кубике большие и максимальные значения, решили, что цифрами успеха будут 5 и 6.
Проверка определённой комнаты осуществлялась путём модульного тестирования. Игроки за енотов целенаправленно шли в комнату с ловушкой и бросали кубик. Важно было проверить все выпавшие значения. Классы эквивалентности были поделены на 2 подкласса: 1–4 и 5–6. Для каждого подкласса определяем конкретное значение в диапазоне тестовых данных класса, например, 2 и 5 или 3 и 6. Неотъемлемой частью проверки любого класса эквивалентности является другая техника тест-дизайна — граничные значения. Граничные значения — техника тест-дизайна, которая расширяет классы эквивалентности дополнительными проверками на границе изменения условий. Чтобы определить граничные значения, нужно определить, какие значения являются начальным и конечным для нашего выбранного класса. Получается, что для наших 2-х подклассов мы имеем граничные тестовые данные: от 1 до 4 и от 5 до 6. Отличие применения данных техник в области разработки настольных игр от области тестирования ПО в том, что проверяется не работоспособность фичи, а её баланс: как часто будет выпадать определённое значение, и как это отразится на геймплее. Взрослые осознают риск и идут в комнату с ловушками в очень редких случаях. Интересный факт, что у детей другое восприятие, они азартные и ходят в эту комнату по тестам гораздо чаще, чем взрослые.
Жизненный цикл настольной игры
Разработка настольной игры — очень увлекательный процесс, в рамках которого вполне можно и нужно применять знания из области тестирования ПО. Моя настольная игра прошла все этапы жизненного цикла ПО, а именно:
1. Исследование и анализ. Изучили ниши, отталкиваясь от геймплея и концепции игры; решили, что данная игра подходит под категорию детских игр. В связи с этим было вполне конкретное понимание продукта: в игре не должно быть нагромождения кучи механик, для объяснения правил лучше выделять не более 10 минут, сама она должна быть динамичной и весёлой.
2. Планирование. С чётким представлением целевого продукта и картины игры мы начинаем планировать все составляющие проекта, количество карточек, фишек, победных очков, стартовую руку, ход и возможности игроков. Чтобы придерживаться плана, организовывали еженедельные встречи для тестов и обсуждения игрового процесса.
3. Проектирование. На данном этапе уже известно всё, чтобы создать проект и перейти к следующему шагу. В нашем случае в качестве документа с правилами выступал обычный txt-шный файл, а карточки и прочие игровые компоненты собирали в figma.
4. Реализация. На предыдущем этапе мы определились, как должна выглядеть игра, и теперь самое время заняться печатью прототипа для возможности поиграть и протестировать игру. Мы печатали на обычном принтере карточки с текстом, а кубики и прочие жетоны для обозначения победных очков, миплов и т.д. заимствовали из других настолок.
5. Тестирование и интеграция. Здесь применяются различные виды тестирования, а именно:
● Функциональное тестирование
Тестирование механик игры, вариативности действий игроков, баланса, фаз игры и победных условий. В качестве документации и требований выступали правила игры, которые по ходу тестирования менялись и совершенствовались.
● Регрессионное тестирование
Те же самые тесты уже по согласованным, устоявшимся правилам с новыми внедрениями, которые по нашим соображениям должны были улучшить геймлпей. Если новые внедрения делали игру сложной, дисбалансной, нагруженной или неинтересной, новая фича не вводилась. Далее она либо дорабатывалась, либо просто-напросто убиралась.
● Тестирование производительности
Данный этап можно переименовать под тестирование реиграбельности. Суть заключается в том, сколько раз можно играть в одну и ту же игру, сохраняя при этом интерес и мотивацию сыграть в неё вновь, и сколько уникальных и интересных ситуаций происходит во время партий. Если у игрока много вариантов начала игры, что вследствие приводит к интересным, неповторяющимся событиям, отличающимся от предыдущих партий на протяжении десятков игр, то тестирование реиграбельности можно считать успешно пройденным.
● Интеграционное тестирование или тестирование целевой аудитории
Это ключевой этап, он определяет интеграцию взаимодействия детей и взрослых, взрослых со взрослыми и, самое главное, детей друг с другом. Мы играли в «Банду енотов» с младшими братьями, редакторы KONIK GAMES ездили в школы и играли с детьми, объясняли правила и наблюдали, как второклашки играют сами. Здесь можно добавить подэтап — «Тестирование пользовательского опыта» — наблюдать за действиями детей, что им делать легко или сложно, неудобно, всё ли им понятно.
6. Развёртывание и обслуживание
Наша совместная работа с заказчиком заканчивается, когда уже есть утверждённая финальная версия прототипа игры и правил + акт выполненных работ. Дальше издатель переходит к следующим этапам: отрисовке проекта с иллюстратором, переводу правил на другие языки, вёрстке макетов, дизайну и производству тиража настольной игры.
7 принципов тестирования в геймдеве
Разрабатывая игру, я придерживался 7 принципов тестирования, которые, на удивление, оказались абсолютно применимыми и к тестированию настольных игр. Итак:
Принцип #1: исчерпывающее тестирование невозможно. Хорошая настольная игра — это игра, которую вовремя прекратили тестировать. В тестировании настольных игр должен быть финиш. Огромное количество тестов и нововведений может привести к тому, что игра будет перенасыщенной деталями, лишними механиками, фазами игры и вариантами хода игрока, что в свою очередь сделает её сложной, непонятной и перегруженной.
Принцип #2: тестирование демонстрирует наличие дефектов, а не их отсутствие. Тестирование настольной игры может выявить ошибки, но не может доказать в полной мере, что дефектов нет. Желание протестировать ВСЁ приведёт к проблемам из предыдущего пункта.
Принцип #3: заблуждение об отсутствии ошибок. В ходе тестов можно сколько угодно находить ошибки: найти дисбаланс или определить сложный игровой процесс, что позволит оптимизировать игру. Невозможно определить все исходы событий и все варианты игровых действий и довести игру до идеала, понятие идеала растяжимое и у всех разное. По ходу тестов можно определить самые частые и возможные кейсы. Задача тестирования настольной игры — найти критические дефекты, которые ломают геймплей. Выявление и исправление нетривиальных дефектов могут затянуть процесс тестирования и разработки настольной игры.
Принцип #4: раннее тестирование сохраняет время и деньги. Тут всё просто, перед печатью настольной игры для магазинных полок в неё необходимо поиграть десятки раз и лучше выявить проблемы на этом, допечатном этапе. Исправление дефекта — это дорого, т.к. необходимо перепечатывать весь тираж, и ещё игра с дефектами несёт репутационные риски для компании, что негативно скажется на дальнейшем выпуске игр.
Принцип #5: принцип скопления или кластеризация дефектов, или Принцип Парето. Необходимо определить так называемого «наследника проблем» в игре. Если в игре есть дефекты, попробуйте определить основной модуль проблемы. Игра несбалансированная в подсчёте очков? Вместо менеджмента и определения, сколько очков для победы всё-таки нужно, попробуйте пересмотреть возможности их получения; может быть, какой-то игровой элемент приносит слишком много победных очков или наоборот — слишком мало? Правило гласит, что 80% дефектов локализируется в 20% модуля. Проще говоря, имеет смысл перепроверить самые основные элементы, на которых базируется игра.
Принцип #6: тестирование зависит от контекста. Тут достаточно определить целевую аудиторию. В детскую настольную игру будут играть дети, им не нужен рулбук с 20 страницами правил или огромная коробка с безумным количеством игровых элементов, детям не нужна 15-минутная раскладка игры перед партией. Детская настольная игра должна быть быстрой, простой и весёлой. Данный принцип тестирования применяется и в других жанрах настольных игр для аудитории любого другого возрастного сегмента. Игру тестировать проще, если ты знаешь, кто в неё будет играть.
Принцип #7: парадокс пестицида. Одни и те же тесты с одними и теми же людьми перестают выявлять ошибки. Необходимо меняться ролями; в примере енотов один и тот же человек должен играть как за енота, так и за хозяина. Необходимо также менять условия игры: играть с другими людьми, предоставлять возможность играть другим людям без вашего участия. То, что не замечаете вы, может заметить другой человек, да и взгляд со стороны всегда полезен. Я сам столкнулся с подобной проблемой, когда долгое время разрабатывал и тестировал другую настольную игру с одними и теми же людьми. Когда мне казалось, что игра протестирована, и её можно выводить в свет, я зарегистрировал проект на сайте https:/grani.games/, оформил концепт и подготовил прототип. После одобрения проекта модераторами, регистрации временного окна и стола для демонстрации в одну из дат конвента, я купил билет в Питер и приехал со своим прототипом демонстрировать игру на «Граникон». Наблюдая со стороны, как люди играют в мой прототип, параллельно комментируя процесс игры и объясняя правила, я заметил, что игру никто не понял, так как она была перегружена механиками, эргономикой планшетов, действиями игроков, количеством фаз и игровых элементов, хотя игра подразумевалась как филлер (быстрая игра на 10–15 мин, в которую как правило играют для разогрева перед серьёзной настольной игрой на 40+ минут). Мы определили целевую аудиторию, но игру делали не для неё, а для себя. Поэтому важно тестировать игру с разными людьми: ходить на игротеки, в антикафе, гильдейские ячейки ГРаНИ, высылать свою игру блогерам, обозревающим игры, играющим в них, и т.д.
Источники вдохновения
На создание детской игры меня вдохновила настольная игра «Чужая планета» (2016), а именно жанр «один против всех» и выкладка локаций на поле, где игроки могут ходить. В «Чужой планете» перемещение происходит по неизвестной земле глубокого космоса, игроки берут на себя роль космических путешественников, а один из игроков — роль хозяина планеты. В «Банде енотов» действия разворачиваются в доме, и всё перемещение происходит по его территории. Одних игроков, блуждающих по дому, показалось недостаточно, поэтому я добавил NPC (Non-player character), а именно рандом в виде кубика, тем самым сделав некое подобие искусственного интеллекта. Кубик отвечал за перемещение собаки, конкретная цифра — за определённую комнату в доме; в начале игры игрок за хозяина бросал кубик и перемещал собаку в соответствующее место, данное место блокировалось для игроков, тем самым сужая выбор комнат.
Ещё одним источником вдохновения для меня стала игра в сеттинге стимпанк «Mission: Red Planet» (2015), где игрокам необходимо колонизировать Марс, вступая на борт ракеты миплами. Заполнение космического корабля происходило за счёт карточек персонажей игроков, которые разыгрывались в закрытую, так как основная механика игры — это скрытые роли. Мне понравилась фаза розыгрыша карт персонажей тем, что никто не знал, кого именно разыграет каждый игрок, у каждого персонажа уникальные свойства, позволяющие заполнить корабли пассажирами, а самое интересное, что количество мест на ракетах было ограничено. Чтобы точно попасть на корабль, необходимо было грамотно прочитать действия других игроков, а именно понять, какого персонажа они разыграют. Как происходит геймплей в «Банде енотов»? Игрок за хозяина взакрытую выбирает для засады одну из карт локаций, а игрок за енотов ставит любое количество своих фигурок на карту налёта напротив той комнаты, куда он решил пойти. Хозяину нужно заранее угадать намерения енотов и спрятаться так, чтобы нарушить их грандиозные планы.
Подводя итоги
Опыт создания настольной игры позволил мне расширить кругозор, посмотреть на профессию QA-инженера с другой стороны и применить мои профессиональные навыки тестировщика ПО в области разработки настольных игр.
«Банда енотов» — карточная игра в жанре «один против всех» для детей от 8 лет. Время партии занимает 20 минут. Здесь есть блеф, закрытый драфт и угадывание. Каждый раунд хозяин разыгрывает одну из пяти карт локаций. Он должен устроить засаду, поймать енотов и отправить их на задний двор. Енотам нужно действовать осторожно, чтобы не попасться хозяину, раздобыть 8 жетонов еды и уйти непойманными. В любом месте может оказаться сторожевая собака и ловушка.
Эту настолку можно назвать семейной, в неё интересно играть и детям, и взрослым. Игра вышла на русском, азербайджанском, казахском, белорусском и армянском языках, и её уже можно приобрести в магазинах и на маркетплейсах.
Вот такая история от идеи до реализации :)