Разрабатываем свою карточную игру с помощью nanDECK

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

Разрабатываем свою карточную игру с помощью nanDECK

В этой статье я расскажу как сверстать и напечатать карточную игру с помощью программы под названием nanDECK.

Наша цель: подготовить PDF с карточками нашего прототипа в удобной для распечатке форме. Поскольку макет игры надо быстро и часто менять, мы обеспечим стремительную пересборку этой PDFки.

Почему nanDECK?

Full Disclosure: существует множество альтернативных программ для разработки своих карточных игр, тысячи их. Большинство из них, вероятно, более удобны. Но так уж получилось, что я разобрался именно с титульным софтом, и оказалось, что он-таки неплохо справляется со своей задачей. Поэтому я решился поделиться с вами своим опытом, и сегодня мы научимся пользоваться nanDECK.

У программы я могу отметить следующие плюсы: интеграция с Google Docs, простота внесения изменений, наличие своего-вроде-как языка, куча классных фичей; а также следующие минусы: присутствие багов, сложности при работе с кириллицей и программист-стайл интерфейс.

Что понадобится для работы

Как известно, нет лучше инструмента для геймдизайнера, чем эксель, поэтому сам прототип мы разработаем в Google Spreadsheets. Я придумал несколько простых карточек заранее, вот они. Вы можете создать и свой документ, но не забудьте открыть доступ по ссылке.

Что в документе для нас важно, так это названия столбцов. Ну, для примера, пусть будут такие:

  • NAME — название карты (например, «Лютный укус»)
  • EFFECT — текст действия карты («Нанести 300 урона»)
  • MANA — мана-стоимость («3»)
  • TYPE — тип карты («Заклинание»)
  • IMAGE — изображение для карты («Bite.jpg»)
  • FLAVOUR — нарративный текст («Лютоволк жрет мою лютню!», - Ю.А. Лютик)
  • QUANTITY — сколько карт нам понадобится для распечатки

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

Я подготовил изображения для этого руководства, которые можно скачать и использовать бесплатно. В этом же архиве фон для карточек. Для прямо вот бумажного прототипа нам понадобится принтер и ножницы.

Синтаксис

Центральное окно занимает редактор скриптов. В нем мы и будем работать, отвлекаясь лишь на визуальное оформление карт.

Интерфейс программы
Интерфейс программы

Итак, приступим к написанию скрипта! Начинаем со следующего заклинания:

LINKMULTI = QUANTITY

LINKMULTI указывает на столбец, который используется для умножения количества карточек в результирующем наборе карт. То есть, если мы хотим в итоге распечатать 2 такие-то карточки, то в этом столбце в Spreadsheets поставим число 2. В нашем случае столбец называется QUANTITY, на него и ссылаемся.

Поставив курсор на директиву (например, на LINKMULTI) и нажав F1 можно прочитать справку внутри софта.

Чтобы наш результат не исчез, сохраняемся ("Save") и запоминаем, куда сложили текстовый файл со скриптом: потом сюда же будем складировать изображения.

LINK = 1QqtBHpPZ81HvIidBqXvxtBB_nT4Kuqk8wkGOHfhMcdY

Далее вносим ссылку на наш Google Spreadsheet. Данный буквенный код можно найти в адресной строке вашего документа ("https://docs.google.com/spreadsheets/d/ВОТ_ТУТ"). Альтернативно можно указать и локальную xlsx таблицу, тогда значение было бы чем-то вроде C:\MyFolder\MyProt.xlsx.

Проверим, что программа синхронизируется с облаком. Для этого жмем "Validate deck". Внизу все должно быть OK. Продолжаем писать код следующей директивой:

PAGE = 21, 29.7, PORTRAIT, HV

Настройки директивы PAGE звучат довольно интересно: размеры в сантиметрах, ориентация и дополнительные качества (в данном случае, центрирование по горизонтали и вертикали).

BORDER = NONE, #000000, 0.2 GAP = 0.1, 0.1

BORDER — настройки границы карты: тип (ROUNDED, RECTANGLE, MARK, NONE) , цвет и толщина. У меня NONE, но решил привести здесь на тот случай, если у вас-таки будет не NONE.

GAP — расстояние между карточками.

Следующий блок мы сделаем автоматом, нажав на кнопку Visual Editor.

Она вот тут

После этого нам понадобятся кнопки Image, HTMLFont и HTMLText, что в левой части нового неистового экрана. Первым делом вставим фон, нажав на Image. В правой части окна появилась строка Image. Щелкаем по ней правой кнопкой и указываем в поле "Image file" локацию нашей подложки (среди прилагаемых изображений она называется "BG.png").

Запускаем спутники на орбиту
Запускаем спутники на орбиту

Остается добавить изображения и всяческие текстовые поля для конкретных карточек. Для начала разберемся с тектовыми данными. Вообще синтаксис, по-видимому, как-то связан с HTML, поскольку есть говорящие об этом кнопочки. Для текстовых полей нам понадобится сначала HTMLFont.

Это настройки шрифта, для дальнейших текстовых полей. Выбираем в левой панели HTMLFont, затем в правой панели правым кликом открываем настройки. Пусть это будет настройка лишь для названия, поэтому назовем его NameFont.

Добавляем HTMLText

Затем выбираем HTMLText. Давайте-ка заведём название карточки из прототипа. Чтобы появилась связь с таблицей, в настройках HTMLText в поле "text" нужно указать название столбца в квадратных скобках (т.е. [NAME]). Также указываем ссылку на наш шрифт в поле "htmlfont".

Настройки HTMLText
Настройки HTMLText

Обязательно нужно отметить флаг Explorer render, иначе не видать вам кириллицы. Флажок Transparent убирает фон. Также обратите внимание на формат в поле "range".

Далее добавляем еще один Image и указываем в поле "image file" [IMAGE]. Чтобы программа подтянула изображения по ссылкам из таблицы, необходимо, чтобы файлы изображений лежали рядом с текстовым файлом прототипа. Ну, то есть там, где мы его сохранили в самом начале.

Картинка нашей карты
Картинка нашей карты

Чтобы читалась прозрачность у .png, нужно указать флаг "Transp.". Флаг "Proport." устанавливаю для того, чтобы картинка не искажалась при масштабировании.

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

Что получилось в итоге
Что получилось в итоге

Весь код из этой статьи целиком (с ним получится результат, как тот, что выше):

LINKMULTI = Quantity LINK = 1QqtBHpPZ81HvIidBqXvxtBB_nT4Kuqk8wkGOHfhMcdY PAGE = 21, 29.7, PORTRAIT, HV BORDER = NONE, #000000, 0.1 GAP = 0.1, 0.1 VISUAL=, 10, 10 IMAGE=,BG.png,0%,0%,100%,100% HTMLFONT=NameFont,Georgia,10,,#000000,CENTER,0,0 ,0 HTMLTEXT="1-{(NAME)}",[NAME],15.385%,7.119%,67.246%,6.623%,#FFFFFF,0,ET,100,NameFont IMAGE="1-{(IMAGE)}",[IMAGE],8.933%,11.093%,79.901%,42.55%,0,TP HTMLFONT=EffectFont,Georgia,8,,#000000,CENTER,0,0 ,0 HTMLTEXT="1-{(EFFECT)}",[EFFECT],13.151%,65.397%,71.96%,14.735%,#FFFFFF,0,ET,100,EffectFont HTMLFONT=FlavourFont,Georgia,6,I,#000000,CENTER,0,0 ,0 HTMLTEXT="1-{(FLAVOUR)}",[FLAVOUR],20.844%,78.808%,55.087%,9.934%,#FFFFFF,0,ET,100,FlavourFont HTMLFONT=TypeFont,Georgia,6,I,#000000,CENTER,0,0 ,0 HTMLTEXT="1-{(TYPE)}",[TYPE],21.588%,55.629%,55.087%,3.311%,#FFFFFF,0,ET,100,TypeFont HTMLFONT=ManaFont,Georgia,12,B,#000000,CENTER,0,0 ,0 HTMLTEXT="1-{(MANA)}",[MANA],79.404%,83.609%,13.896%,8.113%,#FFFFFF,0,ET,100,ManaFont ENDVISUAL

Теперь осталось собрать карты в печатном виде. Для этого нужно последовательно нажать кнопки в левой части экрана: "Validate deck", "Build deck", "PDF". Вуаля!

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

Результат

В итоге у нас получилась симпатичная PDFка. Теперь вы можете легко менять свой spreadsheet и пересобирать новые PDF по нажатию трех кнопок! Прототип можно распечатать и получить приятный результат:

Разрабатываем свою карточную игру с помощью nanDECK

Бонусный факт: получившуюся PDF легко использовать в Tabletop Simulator (там буквально можно «нарезать» PDF) для игры с другом в ваш новый прототип по интернету! Тогда и принтер можно не терзать.

Возможно, для пяти карт такая подготовка и скриптование кажутся излишними, но если ваш прототип вырастет до объема в, скажем, 7 карт, то сами понимаете.

Все ссылки в одном месте:

Минутка рекламы

Вот для такой игры прототипы я и делал, и делаю

Изначально nanDECK я изучал для прототипирования игры, которую разрабатываю. Кстати, мы сейчас ищем 3д-аниматора, если вы такой, то пишите! Ну и конечно, вступайте в группу в ВК, подписывайтесь на твиттер, спасибо за внимание.

7171
21 комментарий

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

10
Ответить

Возможно задам тупой вопрос, но я в принципе тупой так что не всё ок. Посмотрел я на эти танцы с бубном чтобы сделать простую PDF c 9 картами, и всё никак не пойму, а почему нельзя воспользоваться фотошопом, например? Редактируется текст там точно так же быстро как и в табличке.

4
Ответить

Как автор карточной игры могу сказать - таблички необходимы.

Основной пункт - вы будете постоянно менять
1. Лейаут карты - чтобы было понятнее. Здоровье наверх / влево, текст вниз и т.д., добавлять свойства. Переверстывать в PDF замучаетесь.
2. Иногда требуется несколько экземпляров карт. Копировать в таблице проще. Править текст для синхронности - тоже.
3. Баланс тоже проще в табличке считать. Взял поменял у N монстров здоровье с 1 на 2 - и перепечатал.

Обычно любая колода для адекватной рандомизации должна содержать 20-30 карт. Если вам нужно пару колод - уже 40-60 карт. Эвенты? Еще одна колода.

3
Ответить

Изменять текст в таблице и подхватывать оттуда информацию для компиляции проще, чем делать кучу слоев в Фотошопе, перебирая различные комбинации с сохранением этих комбинаций и последующей сборкой их этих комбинаций в indesign. Хотя вот в indesign можно выставить необходимые метки для резки, до которых докапываются в типографиях.

1
Ответить

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

Ответить

Дружище, это реально лучшая статья на этом сайте за очень долгое время (я даж ещё до конца не прочитал - потому что параллельно делаю, чтобы вникнуть, но уже могу это сказать). Вы большой молодец. Никакого пердежа в лужу, только по делу, причём полезная штука. Тут же можно не ток ККИ прототипировать, и настолку какую-нить и т.д. Можно и боёвку пошаговую в стиле jrpg с таким инструментарием запрототипировать.
Просто космос.
Удивлён, что за сутки всего 45 ЛюКенгов.
Я это даже себе на стену в вк сохраню.
Очень круто!
Зарегался на сайте где-то 1,5 года назад, чтобы пошутить в комментах про Джилленхола, и с тех пор думал, что площадка плюс-минус бесполезная. За всё время наткнулся на 5-6 реально крутых материалов (включая ваш).
Ради таких постов, даже если их будет появляться по одному на 3-4 месяца, реально стоит скроллить ленту каждое утро!
Ещё раз спасибо!

4
Ответить

Спасибо, приятно слышать! Рад, что статья понравилась)

1
Ответить