Всем привет! Меня зовут Андрей, я – эксперт по обеспечению качества t2. Хочу рассказать свою историю, как изучая профессию QA-инженера в интернете и играя в настольные игры с друзьями, я устроился работать автотестировщиком и продал свою первую настольную игру.

Статья предназначена для всех людей, увлекающихся настольными играми (от новичков до опытных игроков и авторов) и сферой IT: от тестировщиков до геймдевелоперов.

Фотографии публикуются с разрешения и со ссылкой на правообладателя KONIK GAMES
Фотографии публикуются с разрешения и со ссылкой на правообладателя 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 жетонов еды и уйти непойманными. В любом месте может оказаться сторожевая собака и ловушка.  

Эту настолку можно назвать семейной, в неё интересно играть и детям, и взрослым. Игра вышла на русском, азербайджанском, казахском, белорусском и армянском языках, и её уже можно приобрести в магазинах и на маркетплейсах.

Вот такая история от идеи до реализации :)

Комментарии (4)


  1. formax
    05.09.2024 19:02
    +1

    Отличная статья!


  1. dskonev
    05.09.2024 19:02
    +1

    Использовались ли во время разработки настолки инструменты автоматизации? Кажется, что тестирование исключительно руками требует огромного количества времени, по сравнению с тем, чтобы запрограммировать модель и погонять с разными настройки баланса.


    1. chunkychunk Автор
      05.09.2024 19:02

      Мысль интересная! Автоматизация не использовалась при разработке данной настолки, так как было с кем тестировать из людей, да и время позволяло. И здесь все же огромную роль играет человеческий фактор при выборе действий игроков (майндгейм думаю тяжело закодить) и рандом в игре сведен к минимуму. Плюс игра быстрая, поэтому за вечер отыграть 10-15 партий не составляло труда. Тесты проводились в разных компаниях, и практически у всех процент победы хозяина был чуть выше, чем у енотов, что приемлемо для жанра игры один против всех. Так что, если есть свободное время и люди, с кем можно тестировать игру, автоматизация не потребуется. Наверное автомазиция необходима при разработке каких-то одиночных игр по типу Оскверненного Грааля или игры с большой вариативностью действий, где действительно тяжело воспроизвести все возможные сценарии вручную. Если автоматизация будет участвовать при тестировании настольных игр в дальнейшем, обязательно напишу вторую часть этой статьи :)


      1. dskonev
        05.09.2024 19:02
        +1

        Благодарю за развернутый ответ!

        Люблю настолки, в которых рандом мало решает исход. С удовольствием потестировал бы ваших "Енотов" вручную со своими детьми :)