Привет, Хабр! Меня зовут Мария, работаю в ISPmanager QA-инженером и сегодня хочу рассказать, как мы замутили эпический ДНД-квест. По сути, история о том, как мы заморочились с подарком мужской половине коллектива на соответствующий праздник. В итоге вместо носков мы продумали собственный игровой мир и организовали мегасессию в дискорде. Что из этого вышло — читайте под катом.

Вопросом, что же подарить нашим мальчикам, мы озадачились в начале февраля. Наши коллеги сейчас работают в самых разных уголках полушария, и простым обедом в офисе тут уже не отделаться. Решили, что подарок должен быть, во-первых, нескучным, во-вторых — электронным. Мы же всё-таки IT-компания, как тут иначе!

В ходе жарких обсуждений развилась идея целой игры Dungeons & Dragons (DnD). «Подземелья и драконы» — изначально настольная игра, ныне имя нарицательное для ролевых игр в жанре фэнтези! Конечно, в полноценную партию из готовых версий DnD играть было бы интересно. Но пришлось бы потратить немало времени на разъяснение для новичков. Поэтому я кастомизировала и упростила правила, чтобы каждый мог быстро погрузиться и партия длилась два-три часа. 

Знаете ли вы, что самую длинную партию в Dungeons & Dragons («Подземелья и драконы») начал Роберт Уордхо в 1982 году и она идёт до сих пор! 

Итак, работа закипела! Надо было придумать сценарий, бегло описать мир и правила, какими бы короткими они ни были, объяснить механику игры (потому что некоторые не знали, что «кубики» бывают не только шестигранными, но и двадцатигранными), найти гейм-мастера, определить команды, подготовить материалы, настроить площадку для игры… уУ! Тут нас настигла самая большая проблема, которую нельзя было предугадать заранее. Само предложение о DnD прозвучало меньше чем за две недели до праздника. Но, собрав всю волю и бессонные ночи в кулак, мы начали работу.

Мир игры

Механика игры

Основные правила

Организация

Результаты игры

Для тех, кто хочет повторить

Мир игры

В основу мира легли четыре крупных города: 

  • Д’асий — северный город из высоких стел металла.

  • Вай-Мэй — восточный город магов, открывающих проходы в другие миры, место для создания лучших визуализаций.

  • Билаль — южный торговый город, полный золота, что расположился в песках, надежно скрывающих казну.

  • И, наконец, Исбург — западный портовый город из камня на берегу моря. 

Драконы, как и прочие обитатели мира, уже вышли более классическими для фэнтези: тут и эльфы с гномами, и тролли с гоблинами. Знакомые образы сразу решают две проблемы: не нужно придумывать бестиарий с нуля и не нужно тратить время на описание монстров во время игры. 

Экранизации «Властелина колец» и «Хоббита» — одни из самых известных образчиков популярной культуры, познакомивших массу людей с фэнтезийными расами
Экранизации «Властелина колец» и «Хоббита» — одни из самых известных образчиков популярной культуры, познакомивших массу людей с фэнтезийными расами

В классическом DnD количество монстров может быть невероятно велико. Чтобы участникам не приходилось постоянно обращаться к какому-нибудь громоздкому туториалу, мы составили свой. В нём были самые необходимые монстры, которые заполняли путешествие на главного босса интерактивом (подробнее — в разделе «Механика»). А финальная цель описана уже подробно и красочно — вот где фантазия смогла развернуться . История городов была плотно связана  с последним драконом.

История города Исбурга и его водяного дракона

Раньше здесь были лишь редкие низёхонькие дома, покрытые мхом и разделённые бесчисленными ручьями самой разной ширины. Иной можно было измерить пальцами одной руки, а другой и вброд перейти тяжко. Земля, которую удавалось сохранить от поднимающейся воды, тут же покрывалась семенами. Но людям так и не удалось обуздать силу, то размывающую берега, то поднимающую подземные воды настолько, что земля будто выплёвывала хлипкие ростки из себя, оставляя небольшой гейзер после. 

Тогда люди начали искать другую заботу для города. Так, год за годом, земля покрывалась камнем, привезённым со всей страны, мелкие ручейки спешно сливались в реку, созданную человеком и огороженную великим металлом дварфов. Город, посвятивший себя строительству, уже не мог остановиться. Каждый маленький домик очищался от травы и вырастал на четыре, на восемь, на шестнадцать этажей ввысь! Даже ветхие лавочки сменялись каменными, а деревья — металлом. Каменщики уже не могли остановиться, всё больше забивая хрупкий берег, оттесняя воду в море.

Несмолкаемый шум строительства не мог остаться неуслышанным, и в один день море, вспенившись, явило народу его погибель. Люди видели, как за круглым горизонтом появился силуэт и устремился к берегу, но ничего не смогли сделать: бежать было некуда. Чем ближе был этот монстр, тем выше становилась волна. Она начала закрывать облака, солнце, само небо почернело, и лишь лазурные глаза шли на город. Сначала город накрыла волна, сбив самые тонкие верхушки домов, земля вздрогнула и через трещины в камне начала пробиваться вода, заполняя улицы. Потом выжившие слышали рёв, проносящийся грохотом по стенам домов, разбивая их. А дальше явился он — синий, покрытой тиной морской и разорванными сетями рыбаков. Смрад пришёл с ним, волочась над водой. Лазурные огни теперь казались невероятно огромными, больше солнца, больше шхун, вывалившихся на берег и застрявших меж железных деревьев. Водоросли с него падали сплетенным камнем, сдирая черепицу с крыш. Дракон шёл по городу, а город не был готов его принять.

Наши дизайнеры подготовили и визуальные материалы для самой игры: карту мира с обозначением ключевых локаций и изображения лута — амуниции и оружия, которые можно было собрать по ходу игры. 

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

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

Механика игры

Механику и правила планировалось упростить. Никаких лишних бросков, изменений статов, очков силы или другой физики для персонажа или экипировки на плечах игроков. Всё должно было работать из коробки, чтобы играть могли участники без опыта. С учётом этого поменялись и правила. Всё, что нужно было теперь знать игроку, умещалось в короткой презентации.

В презентации мы описали сюжет и правила, кратко введя игроков в курс дела
В презентации мы описали сюжет и правила, кратко введя игроков в курс дела

Основные правила

Ход игры сменяется партиями приключения или боя. Во время приключения игроки кидают кубики, только если гейм-мастер сильно сомневается в предлагаемом варианте. Гейм-мастер (здесь и далее «ГМ») — рассказчик и ведущий игры. О его роли в разделе «Организация».

Например, бросить камень в прохожего — выполнимое действие, кубик можно не доставать. Летающий гном — маловероятное событие, можно потребовать бросок кубика.

В остальное время это общение ГМ и команды, где необязательно каждый из команды должен что-то делать. Но ГМ каждый круг сообщает последствия предыдущего круга. Или же последствия сообщают после каждого действия игроков в отдельности — это зависит от темпа приключений. 

Во время боя игроки всегда кидают кубики. Иногда на маловероятные события может потребоваться дополнительный бросок. Или же ГМ даёт дополнительные броски и выбирает среди них максимальный результат, если хочет дать команде больше шансов. ГМ ходит в конце каждого круга, после того как все игроки что-то сделают. Умершего игрока можно исцелить. Если у него есть шанс излечиться при малом здоровье — он может это сделать вне ходов. 

Статы игроков определены пятью характеристиками:

  • здоровье уменьшается по ходу боя от атак врага, увеличивается зельем;

  • ловкость может дать дополнительный бросок на максимальный результат, или наоборот; 

  • сила — 100% удара определяется очками силы;

  • скорость определяется аналогично ловкости;

  • харизма позволяет разрешить проблемы мирным путём. Чем больше харизмы, тем невероятнее может быть сила убеждения.

Из них на бой влияют все, кроме харизмы. Харизма, ловкость, скорость — характеристики, полезные вне боёв. Харизма нужна для общения с окружающими, ловкость — для исследований и краж, а скорость — для рискованных действий.

Для игроков доступны четыре расы на выбор и по два типа для каждой из них. Такое малое количество вариантов выбрано для того, чтобы легче было контролировать ход игры.

Всего вышло 8 юнитов. Сумма очков статов для всех юнитов одинаковая. Также у каждого была уникальная способность, которой можно было воспользоваться в сложный момент
Всего вышло 8 юнитов. Сумма очков статов для всех юнитов одинаковая. Также у каждого была уникальная способность, которой можно было воспользоваться в сложный момент

Интересный факт: чаще всего парни выбирали роль хоббита или дварфа, а вот пронырливых и боевых юнитов — почти поровну. 

Если требуется бросок кубика. Стандартный бросок кубика идёт на d20:

1 – 4: Удар не прошёл.

5 – 10: Удар в полсилы.

11 – 16: Удар на 80% силы.

17 – 20: Удар во всю силу.

ГМ может выбрать любые другие грани или количества кубиков. Однако принцип останется тем же: 

  • до 20% включительно — мимо, 

  • до 50% — пол-атаки, 

  • до 80% — 80%,

  • от 80% и больше — все удары в полную силу. 

Если выброшена максимальная грань, ГМ может описать действие гораздо красочнее, чем оно задумано было игроком. 

Лучшие броски кубиков обычно приносят самые абсурдные, но весёлые ситуации
Лучшие броски кубиков обычно приносят самые абсурдные, но весёлые ситуации

Мастера и игроки

Ещё одно важное обновление коснулось и ведения игры. Обычно игру ведёт один человек на небольшую компанию. Этот человек — гейм-мастер — и ведущий игры, и творец, и «игрец». Он определяет, куда будет развиваться сюжет, направляет команду, отыгрывает всех встречных монстров и жителей. Этот подход вынуждает ГМ готовиться к игре тщательно, много знать и учитывать в голове, контролировать все ключевые точки и настроение команды. 

Главным отличием от классических DnD-партий у нас стало наличие ролей. Да, у каждой команды всё ещё был ГМ, который её направлял. Но на каждой локации появился ведущий, который играл роль NPC. 

NPC — термин, относящийся к играм, который означает неигрового персонажа. Обычно именно такие персонажи делают игровой мир чуть живее, выдавая мелкие побочные квесты в своей локации. Таким образом, ГМ мог направить часть команды или даже всю её на квест, который ему не надо было готовить, продумывать и запоминать. А у ведущих локаций было достаточно времени обставить свой квест по собственной задумке, придумать персонажа и выбрать для себя любой вид и темп игры. 

Так, где-то ведущие локаций давали задание на логику и умение собирать пазлы, кто-то подкидывал бои, а чтобы получить заветное зелье, надо было пройти испытание мелодией. Если бы ГМ был один на всю игру, он не смог бы за такое короткое время партии организовать столько активностей для команды. Даже в таверне, с которой всё начиналось (любое отличное приключение начинается с «той истории в баре»), была хозяйка, которая могла подкинуть полезных вещиц в обмен на интересную байку.

В итоге ГМ иногда мог оставаться один. У него появлялось время обдумать, что делать дальше, а игроки, вернувшиеся из разных локаций, делились своими невероятными приключениями. Этим они привлекали своих собратьев тоже заглянуть на интересную точку. Сарафанное радио — лучший пиар даже в фэнтезийном Средневековье! 

Организация

Итак, мир готов, правила описаны. Оставалось всё подбить и организовать, чтобы игра заработала. Началось всё, конечно, с людей, и у нас было одно преимущество: нас было много. Конечно же, дорогих мужчин, которых надо было поздравить, хватало. Однако и дам было достаточно, чтобы каждый мог как-то помочь в этом грандиозном подарке. Плохую шутку с нами сыграло лишь время: не было возможности тщательно подготовиться и задействовать всех. Но даже с учётом всего этого, у нас набралось достаточно желающих поучаствовать. Полный набор на задуманные локации у нас не набрался, но всё равно хватило на семь прекрасных ведущих локаций для шести дополнительных квестов и трёх ГМ — как оказалось в дальнейшем, это идеальное количество для записавшихся игроков. 

Запись на игру

В этом деле важно подогреть интерес. Особенно если у вас горят дедлайны. Итак, универсальный рецепт, как не ударить в грязь лицом: сделайте загадочный вид, что так и задумано — проводить игру не в праздник, а в пятницу после него. Затем загадочно подогревайте интерес с понедельника. Профит — у вас есть пара дней в запасе, чтобы отшлифовать шероховатости. Заполнив чат мистическими призывами, собираем ту самую презентацию, где кратко описываем, как играть в «ультратонкое» DnD, и даём ссылку на запись в игроки. Записывались через Google Формы, и так мы сразу получали таблицы с игроками.

Площадка для игры

С Zoom у нас были знакомы все, но для игры он точно был не лучшим вариантом. Если бы это была одна партия с одним ГМ и без разброса между локациями, Zoom мог бы подойти. Но для нашей задумки требовалось больше функциональности. Для этого отлично подошёл Discord. В нём вся необходимая функциональность есть бесплатно. В первую очередь это многокомнатные серверы с настройками доступов и боты.  

Многокомнатные серверы понадобились, чтобы управлять локациями. Всего таких локаций было четыре вида: братства, общие локации, дополнительные квесты и обители, административные.

1. Братства — party place, или «место партии», — локация для команды. У каждой команды был раздел, который могли видеть только участники: категория закрыта под роль команды и админов или модераторов. В этом разделе было всего два чата: голосовой и текстовый. Здесь и проходила работа ГМ: он постоянно присутствует в своём голосовом чате, даже если его команда ушла целиком. Или же он контролирует свой чат, если хочет отлучиться в другую комнату. Для этого в Discord всегда подсвечивается, сколько человек в голосовом чате, а значит, это будет перед глазами, даже если ГМ отошел. 

Знаете ли вы, что с недавним обновлением от 6 июня Discord, в каждом голосовом канале (комнате) появился текстовый чат? Больше можно не думать о том, что каждому голосовому чату нужен текстовый дубль! Ура!

2. Общие локации. Такими стали таверна, с которой всё начиналось, и «Порт» — условное место, чат по умолчанию на сервере. Именно в него попадает пользователь, когда только подключается к серверу. Для удобства вопросы до игры принимались в этих двух чатах, потому что только они были открыты для всех пользователей. С таверны также начинали все команды: здесь в назначенный час были зачитаны ещё раз правила, заданы вопросы (и получены ответы на них). Тут же было некое «лобби» пока участникам выдавались роли их братств, чтобы они могли разойтись по своим личным комнатам. Тут стоит отметить одну заминку, которая обнаружилась уже во время игры. Чтобы навешать роль на пользователя, надо открыть контекстное меню. Discord сбрасывал его, когда сменяется говорящий в активном голосовом канале. По крайней мере так было в феврале в версии для Windows. В результате приходилось выходить из голосового канала, чтобы разобраться с ролями. 

У одного пользователя может быть несколько ролей. Высшая по доступам роль будет определять, открыт ли канал или категория для пользователя или нет. Настраивать доступы можно как для целой категории, так и для отдельного канала. Настройки канала, если они были изменены, будут приоритетными
У одного пользователя может быть несколько ролей. Высшая по доступам роль будет определять, открыт ли канал или категория для пользователя или нет. Настраивать доступы можно как для целой категории, так и для отдельного канала. Настройки канала, если они были изменены, будут приоритетными

Я взяла для себя на будущее, что нужен отдельный человек на административные работы: переназначения ролей, перенос участников в другие голосовые чаты и всё остальное, что может понадобиться. 

3. Дополнительные квесты и обители. Это две разные категории, но у них похожие функции. Здесь находятся каналы, которые принадлежат ведущим локации. В дополнительных квестах расположены места, в которые можно было попасть только по определенным условиям. ГМ подводил к этому месту или ведущий локации мог каким-то образом проникнуть в игру и забрать к себе на квест нескольких игроков — например, украв их лут во время отдыха. Таким образом, в дополнительные квесты без повода попасть сложно. В то же время обители доступны. Тут у нас были расположены известные на всю Испландию места. Они даже были отмечены в ознакомительной презентации. Например, если игроку нужно было пополнить здоровье, ГМ мог сказать, что тому бы не помешало зайти за зельем к известной эльфийке. Или скучающих, оставленных своими собратьями игроков раскидать по разным обителям, мягко намекнув, что в мире ещё полно мест для исследования.

В Discord есть удобный инструмент для организации подобных мест: ограничение на количество участников голосового чата. Если ведущий локации придумал такое задание, что ему больше двух человек одновременно нельзя пускать, он мог выставить лимит и уже никто новый в этот канал зайти не сможет. Отмечу, что, если игрок насильно перенесён админом из одного голосового чата в другой, лимит не сработает. Это удобно тем, что люди, которые слабо ориентируются в новых программах, все равно могут участвовать. С другой стороны, если админ был не слишком внимателен, он мог сломать кому-то квест.

Пример категории «Обители» в Discord. Бойцовский клуб открыт для любых зрителей, пусть и по сюжету там занят в бою лишь один участник. В Ткацкую мастерскую одновременно могут зайти два игрока и один ведущий. А вот к Верховной эльфийке дозволено зайти лишь одному гостю за раз. Это удобно, если надо, чтобы прохождение квеста нельзя было подслушать у другого игрока или даже команды
Пример категории «Обители» в Discord. Бойцовский клуб открыт для любых зрителей, пусть и по сюжету там занят в бою лишь один участник. В Ткацкую мастерскую одновременно могут зайти два игрока и один ведущий. А вот к Верховной эльфийке дозволено зайти лишь одному гостю за раз. Это удобно, если надо, чтобы прохождение квеста нельзя было подслушать у другого игрока или даже команды

4. Административное. Тут всё как у всех: голосовой чат для переговоров и быстрого обсуждения игры, текстовый чат для общения разных ГМ и ведущих локаций, бестиарий и справочник. Правила уже были в презентации, поэтому подобный раздел тут был не нужен. А вот бестиарий удобнее было хранить в том же приложении. Так он будет в отдельном разделе, который всегда можно открыть. 

Что касается ботов, в Discord можно найти их немало для игры в DnD. Мы использовали D&D Bot. Умений у него много, но нам требовалось лишь одно — кидать кубики. Например, в текстовых чатах игроки могли кидать кубики, пока общаются в голосовых. Таким образом, нет необходимости шарить какой-нибудь браузер, где все видят, что выпало действительно то число, которое было сказано игроком. Удобство, высший класс, если бот не упал — у нас не падал, тут нам повезло.

Бот вызывается коротким сообщением через обращение «!» (обращение по умолчанию для многих ботов, если есть конфликт — бот предложит изменить). Здесь первое сообщение просит бросить кубики (дайсы) 2 раза по 100 граней на каждом. Таким образом, ответом будет два числа в диапазоне от 1 до 100, которые бот ещё и сложит. Можно использовать и как две атаки, и как удар по двум игрокам, и как бросок на наименьшее/наибольшее из двух. В этом боте можно использовать до 25 кубиков за раз и с любым числом граней (главное — помнить, что в правильном объемном теле минимум 4 грани)
Бот вызывается коротким сообщением через обращение «!» (обращение по умолчанию для многих ботов, если есть конфликт — бот предложит изменить). Здесь первое сообщение просит бросить кубики (дайсы) 2 раза по 100 граней на каждом. Таким образом, ответом будет два числа в диапазоне от 1 до 100, которые бот ещё и сложит. Можно использовать и как две атаки, и как удар по двум игрокам, и как бросок на наименьшее/наибольшее из двух. В этом боте можно использовать до 25 кубиков за раз и с любым числом граней (главное — помнить, что в правильном объемном теле минимум 4 грани)

Но в некоторых вещах Discord уступает тому же Zoom. Например, тут нет такого количества фонов и масок. Но если хочется отыгрыша и погружения, то есть отдельные приложения, в которых можно настроить виртуальную камеру с фильтрами, подобно инструментам Снэпчата.

Подсчет статистики

Вся игра задействует переходы между локациями и ведущими с ГМ. А значит, вести статистику у каждого на листочке уже не выйдет. Необходим общий файл, где каждый ведущий сможет вносить корректировки. Была выбрана таблица Google. У нас было 17 игроков, которых мы рандомно (почти) поделили на три команды. Вышла такая таблица:  

В дополнение к статье даю cаму таблицу, где есть основа для вашей игры. Кому интересно понять устройство работы таблицы или сделать что-то подобное самостоятельно, приглашаю под спойлер ознакомиться с тем, как была настроена наша таблица:

О настройке таблицы

Колонки E:I не изменялись никак. Для них была применена формула, которая просчитывала зависимость от колонки D и изменяемости в колонках J:P. Рассмотрим на примере очков здоровья (в ячейке E2).

Сначала ищем для колонки D совпадение в таблице с характеристиками классов персонажей (таблицу вы уже видели выше, в этом документе она точно такая же, просто находится на другом листе). Найдя номер строчки, где находится наше D2, возвращаем его и используем для индекса. В поиске позиции используем метод полного совпадения (0 в конце):

= ИНДЕКС(<таблицы А>; ПОИСКПОЗ($D2; <первая колонка таблицы А>; 0); 2)

Под таблицей А мы тут подразумеваем диапазон таблицы с характеристиками в том виде, в котором он есть выше (без дополнительных колонок). Ссылаясь на диапазон, нам необходимо использовать абсолютные ссылки для строк, если мы собираемся скопировать значения из D2 и использовать ниже. Цифра 2 в конце значит, что мы возвращаем значение из второй колонки. Например, мы ссылаемся на лист «Характеристики», где эта таблица вставлена в самом начале. Тогда формула примет вид:

= ИНДЕКС('Характеристики'!A$1:G$9; ПОИСКПОЗ($D2; 'Характеристики'!A$1:A$9; 0); 2)

Посмотрим, как должны использоваться колонки J:P в этой таблице. Представим, что у нас есть некий лист «Лут», где использованы следующие колонки:

Цифры в таблице означают процент, на который увеличивается соответствующий текущий параметр. То есть Панталоны чистокодинга прибавят +6 здоровья, если оно уже было 60, или +10 здоровья, если оно было 100. Обратите внимание, что мы будем обращаться к базовым очкам характеристик.

Итак, начинаем заполнять для D2 все параметры очков здоровья в соответствии с клеткой в колонках J:P, работать это будет так: если игрок получил предмет, то у него вместо «0» появляется «1» в колонке с предметом. То есть мы можем всегда использовать предмет и умножать его на значение в колонке. Если игрок почему-то надел на себя две шапки, мы также используем её два раза, так что код это не сломает, дописываем в наш прошлый код значения по следующей формуле:

= <базовые очки> * (100 + <значение в J:P> * <значение из Лут>) / 100

Так как получившееся число, скорее всего, будет дробным, не забываем округлять. Получается:

= ОКРУГЛ(ИНДЕКС('Характеристики'!A$1:G$9; ПОИСКПОЗ($D2; 'Характеристики'!A$1:A$9; 0); 2) * (100 + $J2 * 'Лут'!$B$2 + $K2 * 'Лут'!$B$3 + $L2 * 'Лут'!$B$4 + $M2 * 'Лут'!$B$5 + $N2 * 'Лут'!$B$6 + $O2 * 'Лут'!$B$7 + $P2*'Лут'!$B$10) / 100; 0)

Здесь мы делаем ссылки из целевой таблицы абсолютными по нескольким причинам. Лут у нас тут не соответствует по колонкам относительно характеристик, а значит, смещение в колонку G для этой формулы всё равно не сработает. Ссылки в таблице «Лут» абсолютные, потому что нам надо будет скопировать значения вниз, а для смещения в колонку правее всё также таблицы слишком разные. У нас есть готовый вид формулы для изменяемого лута (колонки E, G, H) и для обычной базы (колонки F, I оставляем только с ИНДЕКС(...)).

Теперь наша таблица будет выглядеть так, если появится дополнительное снаряжение (выделение зеленым автоматически задано Условным форматированием на равность 1):

Отлично. Но если у нас есть бои, то эффект только на этом не заканчивается, должно быть что-то ещё… Точно, нам надо вычитать потерянные очки здоровья! Для этого нам понадобится ещё одна таблица:

ОЗ здесь повторяет значение из предыдущей таблицы (E2='Прошлый_лист'!E2) только потому, что нам нужно видеть перед глазами во время боя, что происходит с итогом. Дельта, собственно, и есть изменение очков здоровья. Когда персонаж пьёт зелье или воскресает, то у него должно измениться здоровье в плюс, а когда получает ранения — в минус. На этом и основываемся, заполняя строчки любыми значениями, которые копятся во время боя. Дельта при этом будет считать сумму, то есть для F2:

= СУММ(G2:AC2)

Тут абсолютность не нужна, ведь мы не будем выходить за рамки колонки. Итак, дельта у нас есть, она считает всё изменение ОЗ, но пока что никуда не применяется, поэтому вернёмся на предыдущую таблицу в нашу большую формулу ОЗ. Есть два способа применить дельту:

= <базовые очки> * <коэффициент с лутом> + дельта

или

= (<базовые очки> + дельта) * <коэффициент с лутом>

Это два принципиально разных подхода к работе с потерей здоровья. В первом случае у нас уходит столько, сколько бы и ушло, но во втором случае у нас лут оказывает эффект на наш урон. Допустим, база была 100, коэффициент — «1,2», а дельта — «–40». В первом случае мы от 120 теряем 40 и у нас остаётся 80 здоровья, во втором же мы сначала отнимаем и уже 60 умножаем на 1,2 — получается 72 здоровья. Второй способ мало того что делает непредсказуемым вычисление урона, так ещё и отнимает больше (правда, и на увеличение прибавляет больше, но в боях всё равно игроки больше теряют), поэтому используем первый способ:

= ОКРУГЛ(ИНДЕКС('Характеристики'!A$1:G$9; ПОИСКПОЗ($D2; 'Характеристики'!A$1:A$9; 0); 2) * (100 + $J2 * 'Лут'!$B$2 + $K2 * 'Лут'!$B$3 + $L2 * 'Лут'!$B$4 + $M2 * 'Лут'!$B$5 + $N2 * 'Лут'!$B$6 + $O2 * 'Лут'!$B$7 + $P2*'Лут'!$B$10) / 100; 0) + 'Дельта'!F2

Всё, теперь мы точно закончили и можем сделать новую формулу здоровья для всех. В таблице дельты же для колонки E создадим условное форматирование с условием, что если здоровье меньше или равно 10, то мы выделяем клетку красным, потому что так ГМ или ведущий смогут вовремя остановить игрока и посоветовать тому сменить тактику. 

Здесь видно, что форматирование выделило и «умерших», и «умирающих» игроков. Для полноты картины можно настроить чтобы отрицательные становились черными, а те, у кого меньше 30 или 40, постепенно становились красными на промежутке по градиенту. Такая встроенная опция тоже есть в Google Таблицах. 

Итак, остался последний штрих — вернуться на предыдущую вкладку и не забыть заполнить зелья в дополнительных клетках.

Всё, теперь осталось провести ликбез для гейм-мастеров и ведущих, что можно трогать в таблице, а что нельзя, — и вы готовы к игре!

Результаты игры

Несмотря на некоторые шероховатости в подготовке к игре, общий кипиш последней недели подготовки и выходной посреди недели, получилось сделать по-настоящему ламповый подарок, который понравился всем. Не было ни одного негативного отзыва, наоборот — сполна историй о том, как весело было спаивать энта, а потом проверять, что у того в дупле. Или убегать по атоллу от огненного дракона, а потом скармливать, точнее — отправлять на разведку к тому хоббитов по одному. Ну или гордиться тем, как ты круто воскресил кого-то, потому что мог. 

По мотивам игры появились стикеры для Telegram. Этот — мой любимый, потому что я была ГМ в команде, наведавшейся к энту

Для тех, кто хочет повторить этот опыт

  • Найдите себе сразу парочку администраторов, которые будут следить за площадкой, ролями, переполнением чатов или, наоборот, простоем разных ведущих. Всё это лучше делать кому-то, кто не скачет по болотам вместе с командой. 

  • Возьмите себе больше времени, чтобы всё продумать и подготовить людей. Всё-таки далеко не все будут в теме и придётся много объяснять, что вообще такое вы тут придумали :D Да и если графику, организаторское и текстовое делают разные люди — сложно оценить, что будет задерживаться, а что подоспеет быстро.

  • Обкатайте таблицу заранее. Даже если вы тестировщик. Особенно если вы тестировщик. Да, были нюансы.

  • В форму записи игроков добавьте вопрос, играл ли до этого человек в DnD и знаком ли с жанром. Если в команде будет хотя бы по одному такому человеку, то он сможет иногда помогать ГМ. Особенно это полезно, если ГМ первый раз ведёт игру.  

  • Получайте удовольствие. Ведь в это интересно играть и к тому же это невероятно интересно делать. 

Добавлю, что кураж от игры есть до сих пор, и — кто знает — возможно, погибшие войны Вай-Мэя будут отомщены, в игре появится хотя бы одно подземелье, а Д’асий, наконец, спасён от дракона, которого все проигнорировали в феврале. И главное:

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


  1. eggstream
    21.07.2022 09:54

    Поздравляю. Вы на базе мидскульных правил D&D создали свою ньюскульную TableTop RPG. Могли взять Fate или PbtA, но самодельные велосипеды всегда ближе к сердцу.


    1. Ave_Ls
      21.07.2022 10:05

      НРИ много. Но кажется, что в данном случае все равно пришлось бы упрощать правила и подстраивать их под численность людей. Если все равно переделывать - зачем лезть в дебри, когда можно взять то, что на слуху и то, что знает большинство?


      1. eggstream
        21.07.2022 10:53

        Так это ни в коем случае не упрек. Хотя, поверьте, есть системы, специально придуманные для того, чтобы быть максимально простыми.
        Единственный минус ситуации — автор продолжает называть свою игру D&D и, даже если отбросить в сторону вопросы копирайта, если кто-то из участников, загоревшись Настольно-Ролевыми Играми, захочет узнать и попробовать больше, то у него возникнет путаница в голове из «родных» правил D&D и настолько радикальных «хоумрулов»


        1. mkolchanova Автор
          21.07.2022 11:47

          Добрый день и спасибо за комментарий! Да, тут не совсем "копирайтно" использование названия игры, о чем и было сказано в начале, что это больше как идейный вдохновитель и основа, которая используется именем нарицательным для таких вот "самоделок". Tabletop RPG не так на слуху как DnD - всё-таки и большинство наших игроков, и мастеров, ни разу не играли в RPG игры. Объяснить через знакомое название было просто и быстро, оказалось что кто-то уже такое или слышал или видел на ютубе, а поэтому порог вхождения был низок, для этого и такие радикальные "хоумрулы" ;)
          Наша цель была сделать всё быстро доступными и знакомыми для людей инструментами и получить удовольствие. А если кто-то вдохновится узнать больше - так это же замечательно! Поняв простое, изучить сложное будет уже легче )


  1. safari2012
    21.07.2022 13:28
    +1

    Знаете ли вы, что самую длинную партию в Dungeons & Dragons («Подземелья и драконы») начал Роберт Уордхо в 1982 году и она идёт до сих пор!

    не удержался и погуглил эту историю, действительно интересно:

     


    1. mkolchanova Автор
      21.07.2022 14:22

      Действительно невероятная история, у них недавно как раз юбилей, поэтому вспомнилось))


  1. GothicJS
    21.07.2022 15:50

    На мой взгляд сейчас правильное DnD это Pathfinder)


    1. mkolchanova Автор
      21.07.2022 16:08

      Компьютерная или настольная? ????


      1. GothicJS
        21.07.2022 16:33

        И то, и то) Я знаком в основном с компьютерной версией, и она там ощущается более удобной и "естественной" по сравнению с играми по DnD системе, с Neverwinter Nights, например.

        И это при том, что NWN были еще по редакциям 3 и 3.5, которые вроде бы самые интересные, а последующие редакции настольной DnD это, как я понял, просто нагромождение всего и вся.

        Ну и Pathfinder, именно как настольная система, отпочковалась то как раз от 3 редакции DnD - то есть для меня это воспринимается как развитие самой удачной версии DnD, как то так)