Как желание поиграть в Dungeons and Dragons привело к собственному серверу и селфхосту

Данная статья рассказывает одновременно и про опыт вкатывания в НРИ, и про то, как необходимость играть в онлайне заставила четырех айтишников усиленно шевелить мозгами. Приятного чтения.
С любовью, автор.

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

Так и произошло, когда я посмотрел видео с ютуб-канала "Грядут Приключения", где ребята играют в Dungeons and Dragons и записывают это на видео. Будучи под впечатлением, я решил поспрашивать своих ребят с дискорд-сервера, хочет ли кто-то поиграть по этой системе.

Так как сервер у нас по игре Destiny 2 (клан), то я думал, что людям такое развлечение не зайдет. Каково же было мое удивление, когда...

...народ отозвался
...народ отозвался

Ладно, подумал я, и начал готовиться к первому приключению, набрав ворох книжек и найдя стартовое приключение для первых уровней персонажей. Чтобы вы понимали, в моей голове было ровно ноль понимания, как, собственно, водить это самое DND. Благо, мне на следующий день написал один из челов (привет, Антон!) и сказал, что он опытный и готов помочь, и даже провести приключение для ознакомления с системой "в боевых условиях".

Глава Первая - Куда жать, чтобы играть?

Итак, народ есть, опытный мастер на месте (разумеется, право лишить нас ролевой девственности было передано ему), а дальше-то что?

Немного контекста: Все игроки сидят в разных городах, странах и часовых поясах. Да простят меня адепты лайв-формата, но Дискорд был для нас единственным вариантом.

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

Вариант второй - найти платформу, которая может дать нам весь нужный функционал. Собственно, он и был выбран.

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

Выглядело это вот так. Ходим по клеточкам своей фишкой.
Выглядело это вот так. Ходим по клеточкам своей фишкой.

В какой-то момент мы поняли, что Roll20 не удовлетворяет наши потребности. Бесплатный аккаунт давал только 100 мегабайт места в облаке (сейчас не знаю, может что-то поменялось), что заставляло выкручиваться, оптимизировать картинки и карты до шакальных разрешений и удалять старые материалы, чего делать не хотелось прям совсем. Был вариант скинуться и оплатить подписку на сервис, что сразу бы развязало нам руки, но тут тоже есть проблемы, а именно:

1. У нас не один Мастер, и делить аккаунт показалось нам тупой идеей (дальше, по ходу повествования, я расскажу, почему мы все же так и делаем);

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

3. Всем хотелось полного карт-бланша, чего подписка все равно не давала.

4. Платформа давала реально крутые функции только за подписку. Например, поле видимости персонажа, освещение, FX и ограничения видимости стенами.

Собственно, виды подписки Roll20 и что они дают
Собственно, виды подписки Roll20 и что они дают

Глава Вторая - Если хочешь, чтобы было хорошо, захость это сам

Далее в статье будет про техническую часть, про наш опыт и для чего это все было нужно. Еще будут ссылочки для интересующихся, мало ли кто-то для себя откроет новые решения.

Собравшись консилиумом действующих мастеров, мы начали чесать репы на тему новой платформы. Посмотрев несколько вариантов меди, мы нашли золото, а именно FoundryVTT.

Сайт данного проекта
Сайт данного проекта

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

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

Так уж вышло, что для нужд нашего сервера в Дискорде, мы разрабатывали бота. Бота я хостил на втором компьютере с установленной на нем Ubuntu 20.04, который я незадолго до этих событий выкупил у жены друга. И как удачно, что этот компик обладал избыточными для python-бота мощностями, которые так и просили скормить ему что-то посерьезнее.

Окей. Ключ есть, машина для хотинга есть, руки чешутся от нетерпения, полезли читать гайды по установке. У меня опыта работы с Линуксом на тот момент было ровно нисколько, поэтому уже на второй минуте чтения у меня глаза на лоб полезли от сложности того, что было нужно проделать. И тут снова удача - тот самый Мастер шарил и за Линуксы, поэтому посоветовал нам не парить мозги, а накатить Docker и развернуть с его помощью FoundryVTT, благо была репа на Github. Кое-как мы справились и с этим.

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

Из минусов, которые мы в итоге для себя подметили, такие:

- FoundryVTT - это селфхост платформа, что влечет за собой определенные дополнительные мытарства в виде покупки белого ip-адреса и постоянно включенного компьютера, если у вас не один мастер (ну или можно купить VPS, кому как нравится). Если у вас есть VPS/собственный сервер в виде второй машины c Linux на борту, нужно покувыркаться с настройкой FoundryVTT, либо осваивать Docker (сильно быстрее, но для незнающих это может быть проблемой).

- Платформа рассчитана на то, что ей будет пользоваться ОДИН мастер, то есть если вас несколько, одновременно что-то делать на платформе может только один клиент, второму нужно ждать, пока первый освободит. Это привело к тому, что сначала мы пытались договариваться между собой, а потом просто те, кто мог себе позволить, купили себе отдельные копии платформы и сдели уже там.

Что мы в итоге сделали и как это выглядит сейчас:

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

2. Взят репозиторий от felddy и развернут через Portainer. Мы дописали его docker-compose под свои нужды и дело было в шляпе:

3. Купили доменное имя для нашего сообщества, перевели домен на Cloudflare и развернули на сервере reverse-proxy (после долгих мучений c Nginx и настройкой на нем https, мы плюнули и поставили Zoraxy), чтобы игрокам было легче запоминать ссылку и чтобы не городить тонну открытых портов на роутере.

4. Так как за время существования DND на нашем дискорд-сервере Мастерам стало тесно в рамках одной копии Foundry, нами было куплено еще две копии платформы, которые тоже стали хоститься на моей серверной машине. Все три копии имеют собственные поддомены, чтобы не путаться.

5. Из коробки, FoundryVTT не имеет полноценного функционала файлового браузера. Да, созданные текстовые документы удалять можно, а вот картинки и музыку можно только загружать (непонятно, почему они этот функционал не сделали). Поэтому мы развернули такой сервис как File Browser в количестве трех штук, и с помощью виртуальных директорий на Zoraxy привязали их к нашим копиям FoundryVTT. Это решило проблемы с тем, что файлы заливались куда попало и их нельзя было удалить без помощи админа сервера.

Глава Третья - Что мы получили? Итоги

Собственно, мы играем в DND на FoundryVTT уже достаточно долго. Да, платформа не идеальная, некоторых функций (привет, удаление файлов) откровенно не хватает, но мы все-таки добились того, чего хотели, а именно:

- Непрерывный 24/7 (если исключать падения аптайма из-за электричества или проф.работ) доступ к платформе для наших Мастеров.

- Большое количество места на хранилище, которое можно забивать чем угодно и которое можно в случае чего расширить (пока что всем в общем дано 350 гигабайт на SSD).

- Удобные доменные имена, брендированные под наш Дискорд (мы там хостим не только FoundryVTT, но еще и сервера по Майнкрафту и Project Zomboid).

- Полный контроль над происходящим, так как это чистый селфхост.

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

Но знаете, видя, как ребята играют, творят, придумывают и реализовывают, я понимаю, что все было не зря.

Не судите строго, это моя первая статья такого рода. Буду рад ответить на вопросы в комментариях :)
Еще хотел бы выразить благодарность тем, кто приложил руку к данному проекту, моим ребяткам из Дискорда, а именно: Zargothraxx, Mr.Lemonder и Lis314

Спасибо за внимание!

3030
11
15 комментариев

Автор действительно молодец! Вот так нужно ставить перед собой цель и добиваться ее, это действительно редкое умение, не потеряй его.

4
Ответить

Ахуй

3
Ответить

Так что по итогу лучше/функциональней, самая дорогая версия рол20 или Foundry? Понятно, что рол20 не тестили, но список фич, то там написан

Ответить

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

3
Ответить

Прошу прощения, увидел, что модульность есть и у Roll20, но только за самый жирный тариф. Сами модули там я не трогал по понятным причинам. Как показывает наша практика - на двух Мастеров с двумя действующими кампейнами уходит около 20 гигабайт места на хранилище, так что на одного 8 гигабайт может и хватить вполне, если не грузить карты 10000x15000 пикселей, как это иногда у нас бывает :)

3
Ответить

Если так посмотреть, то за самую дорогую подписку Roll20 дает кучу функций, и в отличие от FoundryVTT, она сразу работает и не требует настройки. Из минусов подписки:
- только 8 гигабайт места в облаке
- нет модульности как у Foundry (то есть ты ограничен функционалом платформы)
- много ролевых систем придется покупать в их магазине, тогда как в Foundry они могут быть доступны бесплатно.
- ну и цена... 99 долляров в год против одного платежа в 50 долляров у FoundryVTT.

2
Ответить

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

1
Ответить