Minecraft – нечто большее, чем игра. До сих пор думаешь, что это очередная игра для детей? Вынужден опровергнуть твоё мнение. Эту игру используют, как в школах для развития детей, так и для воссоздания архитектурных объектов, улучшения безопасности на реальных улицах, изучения основ программирования, и, в конечном итоге, для простой релаксации. (Как и зачем Minecraft применяют в образовании).

Не очень люблю воду в текстах, поэтому буду краток. Название статьи: «Разворачиваем проект серверов Minecraft». Что будем делать? Запускать проект серверов Minecraft. Для чего? Для практики, для отвлечения, и, в конечном итоге, для небольшого (а может и большого) практически пассивного источника дохода.

  • Начальные вложения: 65 150 рублей.

  • Точка безубыточности: 130 шт.

  • Срок окупаемости: 7 месяцев.

  • Чистая прибыль: 9 600 руб./мес.

Внимание! Я не экономист! Прости, если я в чём-то буду ошибаться, ты всегда можешь меня поправить, я буду только рад ????

Начну, пожалуй, с основы. Нет, это не поиск хоста или же разработка самих сборок проекта. Это – оформление ИП. Естественно, если всё делать чисто, то все цифры, представленные в статье, смело можешь делить на 2.

На чём будет зарабатывать наш проект? На добровольных пожертвованиях. К сожалению, такой источник доходов придётся оформлять. Если рассмотреть наш небольшой «стартап», то по видам деятельности, в соответствии с классификатором ОКВЭД, он включает в себя:

  • 63.12 – Деятельность web-порталов

  • 62.09 - Деятельность, связанная с использованием вычислительной техники и информационных технологий, прочая

(если я не прав, то подправьте меня, пожалуйста)

Отлично. После того, как мы «оформили ИП», приступаем к шагам разработки.

Часть 1. Концепция проекта

На этом этапе мы должны полностью продумать «соль» нашего проекта. Безусловно, чтобы наш проект был конкурентоспособным, мысли о «выживании с донатом» нам придётся сразу выкинуть из головы. Ведь таких серверов слишком много. Слишком. Много. (рис. 1)

Рис. 1 – график «Minecraft» серверов онлайн (данные взяты с сайта minecraft-statistic.net)
Рис. 1 – график «Minecraft» серверов онлайн (данные взяты с сайта minecraft-statistic.net)

Проанализировав небольшое количество серверов в мониторингах, выводы получаются не совсем однозначные. Вот некоторые ключевые методы, которыми привлекают новых игроков (целевая аудитория которых в основном составляет 11-13 лет - по данным из опроса проекта «TeslaCraft») – таблица 1.

Таблица 1 – Выборка из топ-100 серверов РФ мониторингов (ключевые триггеры)

Ключевой «триггер»

Средний онлайн (общий онлайн/кол-во серверов)

1

Бесплатный донат

176,2

2

Мини игры

144,3

3

Моды

122,3

4

Скайблок

96,7

5

Большой онлайн

86,4

6

Бедварс

77,3

7

Оружие

54,9

Рис. 2 – топ-6 РФ серверов Minecraft (по вложенным средствам в рекламу на мониторингах – данные взяты с сайта monitoringminecraft.ru)
Рис. 2 – топ-6 РФ серверов Minecraft (по вложенным средствам в рекламу на мониторингах – данные взяты с сайта monitoringminecraft.ru)

Давай попробуем разобрать каждый ключевой триггер.

1)      «Бесплатный донат» - данная концепция подразумевает собой то, что потенциальный игрок, заходя на сервер, прописывает команду (самыми распространёнными из которых являются - /free, /hack) и взамен получает с определенным шансом бесплатную привилегию, возможности которой заранее предопределены настройками прав.

Плюсы (+):

  • лидирующее место по переходам и онлайну на серверах; (+7)

  • провоцирование на покупку платных привилегий (под сомнениями). (+7)

Минусы (-):

  • снижение мотивации у игроков на покупку привилегий; (-6)

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

  • большая «текучка» игроков. Переходов много, стабильности игроков – мало. (-4)

  • основной контингент данных проектов – неплатежеспособная целевая аудитория (да, большинство комьюнити игроков и так не особо платежеспособная. Но в данном случае игроки заходят с целью получить платное – бесплатно.) (-6)

Общая оценка: solve(7+7-6-4-4-6) = -6

Краткий вывод: проекты с данной концепцией, в основном, долго не живут. 5-6 месяцев, край – год, и проект закрывается руководителем. (Далее открывает идентичным с похожим названием и той же концепцией). Основная цель данной концепции – получение прибыли. Но мы то здесь собрались с целью открытия конкурентноспособного проекта с хорошей репутацией, верно? Исключаем данный метод.

2)      «Мини игры» - эта формулировка означает, что на сервере присутствуют дополнительные (иногда авторские) режимы. К примеру: BedWars, SkyWars, AmongUs и т.п (Все известные виды мини-игр, сборник ссылок, ведущих на платные/бесплатные ресурсы - http://rubukkit.org/threads/spisok-mini-igr-dostupnye-vsem.109473/)

Плюсы (+):

  • Большой (средне-стабильный) онлайн игроков; (+7)

  • Лёгкая монетизация (продажа ресурсов, если это SkyBlock; продажа «бустов» - динамичные мини-игры) (+8)

  • свобода разнообразия; (+6)

  • удачное распределение серверных ресурсов (+2)

Минусы (-):

  • Сложность настройки (если не брать во внимание разработку собственных плагинов для мини-игр - требуется хороших знаний в области разработки на языке Java) (-3)

  • Сложность управления. К примеру, если поставить даже 3 мини-игры с несложной механикой, то в одиночку контролирование стабильности из «раз-два-и-готово» превратится в бесконечную беготню по скринам (под скрином имеется в виду – эффективное администрирование систем GNU/Linux, используя утилиту «screen») (-5)

  • Дополнительная нагрузка на CPU за счёт развёртки нескольких отдельных серверов, каждый из которых будет запускать своё ядро (ядро - файл API сервера Майнкрафт, имеющее разрешение «.jar». В обычном представлении – файл, размером не менее 19Мб) (-4)

Общая оценка: solve(7+8+6+2-3-5-4)=11

Краткий вывод: очень надёжный способ раскрутки проекта Minecraft. Взять во внимание зарубежный проект «Hypixel», занимающее лидирующее место среди всех серверов (рис. 3).  Но необходимо брать во внимание тот факт, что для уникальности проекта придётся изучать язык программирования. Частичку от этой концепции возьмём «для галочки».

Рис. 3 - Онлайн проекта «Hypixel», данные на 16.05.2022 14:00 (MSK)
Рис. 3 - Онлайн проекта «Hypixel», данные на 16.05.2022 14:00 (MSK)

1)      «Моды». Можно считать, что данная концепция является отдельной ветвью. Как минимум, разработка лаунчера, панель, полноценного сайта-форума, сборок, многочисленных фиксов займёт очень много времени.

Плюсы (+):

  • уникальность (+8)

  • лёгкость монетизации + удержание человека (+7)

  • стабильность (+9)

Минусы (-):

  • Сложность разработки – легче производство машин организовать (-9)

  •  Сложность привлечения ЦА. Нужно учитывать тот факт, что «клиенту» придётся как минимум зарегистрироваться на сайте, скачать отдельный набор файлов (в среднем вес каждой сборки для клиента начинается от 200Мб) (-4)

Общая оценка: solve(8+7+9-9-4)=11

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

2)      «Скайблок» – является одним из вариантов мини-игр. Грубо говоря – «10 чанков/человек».

Плюсы:

  • Лёгкость настройки (+5)

  • Лёгкое удержание (+5)

  • Режим не требователен к ресурсам (+6)

  • Большое «поле» для монетизации (+5)

Минусы:

  • У данной концепции ну слишком много конкурентов (-6)

  • Снижение заинтересованности. Очень старый режим (-3)

Общая оценка: solve(5+5+6+5-6-3)=13

Концепция интересная, но брать мы её не будем.

3)      «Большой онлайн» - вообще сомнительный метод привлечения. Иногда очень помогает начинающим проектам. Разбивать на плюсы/минусы не вижу смысла, так как в принципе не является какой-либо концепцией. Скорее фактор.

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

4)      «БедВарс» - принцип тот же, что и во втором пункте. Если глубоко «порыться» в интернете, то можно узнать, что именно этот режим (за исключением HungerGames) стал родоначальником всех остальных известных мини-игр.

Так как данный режим уже заезжен, то вместо него предлагаю взять мини-игру под названием «EggWars». Принцип абсолютно тот же, но вместо кровати как точка реинкарнации игрока, будет использоваться Яйцо Дракона. Берём.

5)      «Оружие». Прошу прощения, но я категорически против таких методов привлечения. Да и в принципе данная концепция (добавление «пулялок») меня раздражает. Может кому-то и интересно такое будет – стрелять в игроков перерисованными текстурами обычных предметов под оружия, но нет. Данная концепция появилась ещё в далёком 2015 году с появлением версии Minecraft 1.5.2 (всеми известный «CrackShot.jar»). Да и сейчас данная характеристика сервера имеет наименьший средний онлайн из разобранных нами ранее. 

Разобрали! Таким образом, берём мини-игру «SkyWars», добавляем туда щепотку доната, комбинируем с ванильным выживанием без правил (в простонародье – «Гриферский сервер»), и на сладкое режим – «Анархия» (что-то в роде концепции популярного сервера 2b2t).

Часть 2. Считаем затраты

Сразу развею миф о том, что «накатить плагины и всё готово» является рабочей схемой. Для игры с друзьями может быть. Для полноценного проекта готовьтесь умножать данную фразу в десятки, а то и в сотни раз.

Итак, считаем то, сколько же нам потребуется вложить средств. Сразу предупрежу, что будет всегда браться среднее значение, т.е (max-min)/2, окей?

1)        Разработка сборки –6 650,00 руб.

1.1)       Разработка некоторых уникальных плагинов, добавляющие несколько «изюминок» к нашему серверу. Так как мои знания в Java останавливаются на выводе информации о входе игрока в игру, то ищем кодеров в сфере Minecraft. Выделим порядка 3 650,00 руб.

1.2)       Строители. Конечно, можно всегда скачать готовые карты для сервера (в основном – точки для появления игроков, хабы, карты для мини-игр), но такой подход несерьёзный. Выделим 3 000,00 руб.

1.3)       Основную настройку сборки будем производить сами (ниже будет небольшой мануал), - 0 руб. 

2)      Разработка сайта – 0 руб. Так как существует немалое количество сервисов автодоната Minecraft, являющие условно бесплатной, то его разработкой особо заниматься мы не будем. Единственный минус – в качестве поощрения, сервис авто-доната будет забирать порядка 5-7% от каждой покупки. Безусловно, можно всё сделать самому, в интернете лежит достаточно исходников сайтов авто-доната, но мы должны помнить, что мы не кодеры. Если заказывать отдельный сайт, то это обойдётся порядка 3 500,00 – 5 000,00 руб.

3)      Дизайн. И опять же, мы не художники и не дизайнеры. Но даже для крупного проекта нам не нужно иметь 100-балльный дизайн, мы не на выставке. Я взял нашёл художника на просторе «VK», 1 000,00 руб. и небольшой арт как главный виртуальный герой нашего проекта готов. (рис. 4)

Рисунок 4 – главный герой нашего проекта (смесь аксолотли и дракона (или дьявола))
Рисунок 4 – главный герой нашего проекта (смесь аксолотли и дракона (или дьявола))

Накидать небольшие баннеры и оформить страницу в VK не составит особого труда, поэтому нанимать дизайнера нам пока что не требуется (рис. 5.1, 5.2).

Рисунок 5.1 – заглавные баннеры
Рисунок 5.1 – заглавные баннеры
Рисунок 5.2 – заглавные баннеры
Рисунок 5.2 – заглавные баннеры

4)      Хостинг. Гигантские дедики нам не нужны, поэтому вполне хватит порядка 5 000,00 руб. (за искл. VAT) на начальном этапе (рис. 6)

Рисунок 6 – характеристики сервера (hetzner)
Рисунок 6 – характеристики сервера (hetzner)

Возьмём сразу на 3 месяца вперёд, итого: 15 000, 00 руб.

5)      Реклама. Всё. А тут мы встречаемся с первой и, наверное, самой большой трудностью. Раскрутка сервера – хоть и не тяжелая, но очень затратная в финансовом плане часть.

Самым эффективным способом привлечь трафик – рекламировать свой сервер в лаунчерах. 500 рублей? 3 тысячи? 10? А 120 не хотите?

Рисунок 7 - стоимость размещения рекламы в лаунчере на 1 вкладке (цена за 11 дней)
Рисунок 7 - стоимость размещения рекламы в лаунчере на 1 вкладке (цена за 11 дней)

Реклама в мониторинге тоже не такая уж и дешёвая. Чтобы оказаться на первом месте в одном из популярных мониторингов на месяц стоит порядка 69 000,00 рублей. Сервер на первом месте потратил 68 000,00 рублей, чтобы оказаться на первой позиции на месяц (рис. 8)

Рисунок 8 – Топ-1 сервер
Рисунок 8 – Топ-1 сервер

Конечно, никуда не делась и обычные методы рекламы – в VK, YouTube, спам. Насчёт первого Вам придётся немножко потрудиться, чтобы обойти правила биржи VK или же закупать напрямую у групп с подходящей целевой аудиторией (рис. 9)

Рисунок 9 – отклонение модерацией рекламного поста
Рисунок 9 – отклонение модерацией рекламного поста

Остаётся только YouTube и спам. Первый вариант затратный, но принесёт Вам стабильный трафик на протяжении всего времени. Спамом Вы привлечёте только аудиторию, заинтересованную в поиске «уязвимостей» сервера.

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

Итого: затраты на рекламу составят около 42 500,00 руб. (YouTube, немножко мониторинга и 7-е место у менее известного мониторинга)

Часть 3. Разработка сборки.

Окей, у нас есть хостинг с полным root-доступом. В самом начале устанавливаем все необходимые пакеты:

  • sudo apt-get install screen – обязательно, для удобного переключения между серверами

  • sudo apt-get install openjdk-8-jre – обязательно, установка java

  • sudo apt-get install htop – по желанию, отслеживание потребления ресурсов

  • sudo apt-get install nano – по желанию, удобное редактирование файлов прямо в SSH.

Далее устанавливаем любой удобный для Вас FTP-клиент. Готово? Переходим к основной части – разработка сборки

Для начала определяемся с версиями Minecraft. Напомню, что мы выбрали 3 сервера: анархия, гриферство, и EggWars. Пусть анархия будет на 1.16.5+ (больше функционала), гриферство и EggWars на 1.12+ (более оптимизированные версии)

Всего понадобится 5 отдельных серверов:

  • Velocity – прокси (аля BungeeCord, только более новая версия) для связки серверов между собой

  • Hub – сервер-посредник, выполняющий роль перенаправления игроков на выбранный ими сервер

  • Greif – основной сервер 1/3

  • Anarchy – основной сервер 2/3

  • MiniGames – основной сервер 3/3

Ругайте меня сколько хотите, но я начну по порядку. Velocity.

Velocity - это прокси-сервер Minecraft нового поколения, ориентированный на масштабируемость и гибкость. Быстрый вход в систему, быстрое переключение серверов, оптимизация для получения максимальной отдачи от аппаратного обеспечения Вашего сервера, устойчивость к атакам и защита от доступа злоумышленников к Вашим внутренним серверам — вот основные достоинства представляемого продукта. Velocity поддерживает некоторые из крупнейших в мире сетей Minecraft, но с не меньшим успехом работает и со множеством небольших сетей. Он может поддерживать до нескольких тысяч игроков на один прокси-сервер. Velocity работает с Paper, Sponge, Forge, Fabric и всеми версиями Minecraft от 1.7.2 до 1.17

Скачиваем ядро с официального сайта (рис. 10)

Рисунок 10 – официальный сайт Velocity (velocitypowered.com)
Рисунок 10 – официальный сайт Velocity (velocitypowered.com)

Запускаем его у себя на локальном компьютере (Да, у меня Windows). Создаём bat файл, содержащий следующий набор команд и флагов:

java -Xmx512M -Xms512M -Dfile.encoding=UTF-8 -jar Velocity.jar

Вот, что у нас получается после первого запуска:

Рисунок 11 – результат после первого запуска Velocity.jar
Рисунок 11 – результат после первого запуска Velocity.jar

Переходим к его настройке.

Настройка Velocity

Специально для вас я перевел данный файл. Ознакомиться со всеми его значениями можете ниже:

Hidden text
# Версия конфига. Не трогайте данное значение
config-version = "1.0"
# Какой порт должен быть у прокси сервера? По умолчанию прокси работает на порту 25577.
bind = "0.0.0.0:25577"
# Какой должен быть MOTD? Это видят игроки, которые добавляют сервер в
# свой список серверов. Устаревшие цветовые кода и новые поддерживаются.
motd = "&#09add3A Velocity Server"
# Скролько должно отображаться максимально игроков? (У велосити нет лимита
# на колличество игроков онлайн.)
show-max-players = 500
# Нужно ли авторизовывать игроков по системе Mojang? По умолчанию отключено.
online-mode = true
# Запрет на использование Proxy. По умолчанию отключено
prevent-client-proxy-connections = false
# Должны ли мы пересылать IP-адреса и другие данные на внутренние серверы?
# Доступные опции:
# - "none":   Пересылки не будет. Все игроки будут подключаться
#                через прокси-сервер и будут иметь не-лицензионные UUID.
# - "legacy": Перенаправлять IP-адреса и UUID игроков в формате, совместимом с BungeeCord.
#               Используйте, если вы имеете сервер на версии 1.12 или ниже.
# - "bungeeguard":  Перенаправлять IP-адреса и UUID игроков в формате, поддерживаемом плагином
#                 BungeeGuard Используйте это, если вы запускаете серверы, использующие Minecraft 1.12
#                 или ниже, и не можете закрыть порты.
# - "modern":  Перенаправляйте IP-адреса и UUID игроков как часть процесса входа в систему,
#              используя встроенную переадресацию Velocity. Применимо только для Minecraft 1.13 и выше.
player-info-forwarding-mode = "NONE"
# Если вы используете переадресацию IP-адресов modern или BungeeGuard, настройте здесь уникальный ключ.
forwarding-secret = "DrzxR4N31gfB"
# Сообщите, поддерживает ли ваш сервер Forge или нет. Если вы используете модифицированный
# сервер, мы предлогаем включить это.
#
# Если в вашей сети постоянно запускается один пакет модов, рассмотрите возможность использования ping-passsthrough = "mods"
# вместо этого для более удобного отображения в списке серверов.
announce-forge = false
# Если включено (по умолчанию значение false) и прокси-сервер находится в онлайн-режиме, Velocity удалит
# любого существующего игрока, который находится в Сети, если будет предпринята повторная попытка подключения.
kick-existing-players = false
# Должен ли Velocity передавать запросы ping-запроса на серверный сервер? (перевод выполняля машина, претензии к ней)
# Доступные опции:
# - "disabled":   Никакого прохода не будет сделано. Velocity.toml и server-icon.png будут
#                  определять первоначальный ответ на запрос списка серверов.
# - "mods":     Передает в ответ только список модов с вашего внутреннего сервера.
#                 Будет использоваться первый сервер в вашем списке попыток (или принудительный хост)
#                  со списком модов. Если связаться с внутренними серверами невозможно,
#                  Velocity не будет отображать никакой информации о модах.
# - "description" Использует описание и список модов с внутреннего сервера. Первый сервер в
#                  списке попыток (или принудительный хост), который отвечает,
#                  используется для описания и списка модов.
# - "all":      Использует ответ внутреннего сервера в качестве ответа прокси-сервера.
#    Конфигурация Velocity используется, если не удалось связаться ни с одним сервером.
ping-passthrough = "DISABLED"
# Если не включено (значение по умолчанию равно true), IP-адреса игроков будут заменены на <ip-адрес не указан> в логах
enable-player-address-logging = true

[servers]
    # Настройте свои серверы здесь. Каждый ключ представляет имя сервера,
    # а значение представляет IP-адрес сервера, к которому необходимо подключиться.
    lobby = "127.0.0.1:30066"
    factions = "127.0.0.1:30067"
    minigames = "127.0.0.1:30068"
    # В каком порядке мы должны пробовать серверы, когда игрок входит на сервер или его кикнули с сервера.
    try = ["lobby"]

[forced-hosts]
    # Настройте свои принудительные хосты здесь.
    "lobby.example.com" = ["lobby"]
    "factions.example.com" = ["factions"]
    "minigames.example.com" = ["minigames"]

[advanced]
    # Насколько большим должен быть пакет Minecraft, прежде чем мы его сожмем. Установка этого значения на ноль приведет к
    # сжатию всех пакетов, а установка значения -1 полностью отключит сжатие.
    compression-threshold = 256
    # Какая степень сжатия должна быть выполнена (от 0 до 9). Значение по умолчанию равно -1, при котором используется
    # значение по умолчанию равно 6.
    compression-level = -1
    # Как быстро (в миллисекундах) клиентам разрешается подключаться после последнего подключения?
    # По умолчанию это составляет три секунды. Отключите это, установив значение 0.
    login-ratelimit = 3000
    # Укажите здесь настраиваемый тайм-аут для тайм-аутов подключения. Значение по умолчанию - пять секунд.
    connection-timeout = 5000
    # Укажите здесь тайм-аут чтения для подключений. Значение по умолчанию равно 30 секундам.
    read-timeout = 30000
    # Обеспечивает совместимость с ПРОКСИ-протоколом HAProxy.
    # Если вы не знаете, для чего это нужно, то не включайте его.
    haproxy-protocol = false
    # Включает поддержку быстрого открытия TCP на прокси-сервере. Требуется, чтобы прокси-сервер работал в Linux.
    tcp-fast-open = false
    # Включает поддержку канала обмена сообщениями плагина BungeeCord на Velocity.
    bungee-plugin-message-channel = true
    # Показывает запросы ping к прокси-серверу от клиентов.
    show-ping-requests = false
    # По умолчанию Velocity попытается корректно обрабатывать ситуации, когда пользователь                    # неожиданно теряет соединение с сервером без явного сообщения об отключении, пытаясь                    # вернуть пользователя обратно, за исключением случаев тайм-аутов чтения. Вместо этого                      # BungeeCord отключит пользователя. Вы можете отключить этот параметр, чтобы использовать          # поведение BungeeCord.
    failover-on-unexpected-server-disconnect = true
    # Объявляет команды прокси для клиентов 1.13+.
    announce-proxy-commands = true
    # Позволяет вести лог команд
    log-command-executions = false

[query]
    # Следует ли включать ответы на запросы GameSpy 4 или нет.
    enabled = false
    # Если запрос включен, на каком порту должен прослушиваться протокол запроса?
    port = 25577
    # Это имя карты, которое сообщается службам запросов.
    map = "Velocity"
    show-plugins = false

Теперь перейдем непосредственно к настройке.

В первую очередь давайте определимся с типом "пересылки IP адресов" (как это перевел переводчик)

Собственно тут я готов дать вам совет. Если вы держите сервер на версиях 1.18+ - то как и указано, используйте режим player-info-forwarding-mode = "modern". Если же вы держите сервер на версиях 1.17.1 и ниже - вам НАСТОЯТЕЛЬНО рекомендуется использовать режим player-info-forwarding-mode = "bungeeguard".

Указываем данное значение соответственно тому, что для вас подходит. Далее нам нужно придумать ключ и указать его в поле forwarding-secret =

Если вы используете версии 1.18+, то данный ключ нужно будет выставить в paper.yml, найдя поле velocity-support, после чего активировав его, поставив enabled: true, после чего найти поле secret:, в нем поле default: '' и вставить в кавычки придуманный вами ключ.

Если используете версии 1.17.1 и ниже - вам необходимо будет скачать плагин BungeeGuard и вставить придуманный вами код в его конфиг в поле allowed-tokens:

Важное примечание:

В файле spigot.yml есть строка bungeecord: false

Если вы настроили player-info-forwarding-mode = "modern" и в paper.yml включили поддержку велосити - данное поле должно оставаться false. Если же вы имеете значение bungeeguard - оно должно стоять на true!

Далее нам нужно настроить сервера. Тут всё до боли просто. В разделе servers у вас уже есть примеры настроенных серверов. Вам лишь нужно подставить свои значения и при необходимости переименовать сервера на свой вкус. Просто укажите имя сервера = "IP сервера:порт сервера" (порт сервера находится в server.properties и его можно менять).

После того как добавили все нужные вам сервера - укажите сервер, на который будет подключать игрока сразу после захода в графе try =

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

tcp-fast-open = false - поставьте на true, если вы запускаете сервер на Lunix-е, тоесть на VDS/VPS сервере.

announce-proxy-commands = true - поставьте на false, если не хотите, чтобы автокомплит выдавал игрокам команды вашего прокси.

ping-passthrough = "description" - поставьте значение на DISABLED, если хотите увидеть зеленую галочку совместимости с модами на клиенте. Я не знаю как это точно работает, но у меня работает именно так.

⦁ Пункт 3 - Команды Velocity.

По умолчанию Velocity имеет 5 команд:

/velocity (version|plugins|reload|dump) - показывает версию велосити|показывает плагины велосити|перезагружает прокси|выгружает дамп с информацией о прокси соответственно

/end - отключает прокси

/shutdown - то же, что и end

/glist - показывает, сколько игроков находится на прокси. /glist all - показывает, сколько игроков где находятся

/server - позволяет перемещаться между серверами (НЕ ДОЛЖНО БЫТЬ У ОБЫЧНЫХ ИГРОКОВ! см. пункт 4 раздел 2)

Права можете посмотреть тут - https://docs.velocitypowered.com/en/latest/users/commands.html

 

⦁ Пункт 4 - Полезные утилиты:

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

1) Наверное самой важной частью является защита от ботов. Данную функцию выполняют два следующих плагина: LimboFilter+LimboApi. Собственно после их установки всё зависит от вас. Вы можете полностью кастомизировать анти-бот проверки. Какого-то определенного режима работы плагина я вам советовать не буду, ведь это индивидуально.

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

Всем без исключения игрокам на Velocity доступна команда /server. Заблокировать её так просто не получится, по этому вам нужно будет снять права с игроков на её использование. С этим справляется плагин LuckPermsVelocity. Как только установите его на прокси сервер - Пропишите /lpv group default permission set velocity.command.server false. Эта команда выдаст отрицательное право на использование команды /server всем игрокам по умолчанию и тем самым запретит её использование.

3) На велосити, как можно было увидеть, нет тех команд, которые есть в банже, по типу /send, /find и т.п. Для того чтобы их добавить - используйте плагин VelocityTools. Помимо данных команд он включает в себя полезнцые функции, по типу команды /lobby, возможность ограничить подключения на прямую с цифренного IP и прочее.

4) Также стоит задуматься о блокировке команд. Если вам необходимо ограничить прочие команды на прокси сервере - вам рекомендуется использовать плагин CommandWhitelist. По названию я думаю уже ясно, что он делает.

⦁ Пункт 5 - Полезные ссылки.

https://velocitypowered.com/wiki/ - вики велосити

https://docs.velocitypowered.com/en/latest/ - доки по велосити

https://docs.papermc.io/velocity - оф.страница велосити на сайте пейпера

⦁ Заключение.

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

Мануал был взят с сайта rubukkit.org (http://rubukkit.org/threads/velocity-proksi-server-novogo-pokolenija-gajd-po-velocity.182066/)

Настройка Hub

Считаю, что это самая лёгкая настройка, которая у нас будет. Скачиваем ядро (советую PaperSpigot), поддерживающий версии 1.12+. Тоже запускаем, после чего соглашаемся с eula, затем снова запускаем и закрываем командой stop (or Ctrl+C->”Y”), появляется немалое количество файлов (рис. 12).

Рисунок 12 – структура файлов после запуска ядра
Рисунок 12 – структура файлов после запуска ядра

* Внимание! Ваша структура может отличаться. Например, у себя Вы найдёте папки “world_nether”, “world_the_end”, “logs” и так далее. Настраиваем файлы paper.yml, server.properties, spigot.yml в соответствии с документацией и здравым смыслом

·         Настройка paper.yml - https://docs.papermc.io/paper/reference/paper-global-configuration

·         Настройка server.properties - https://wiki.spacecore.pro/minecraft/server-properties

·         Настройка spigot.yml - https://www.spigotmc.org/wiki/spigot-configuration/

В папку plugins добавляем плагины, которые, по Вашему мнению, будут подходящими и необходимыми (рис. 13)

Внимание! Все плагины искать строго на официальных ресурсах! (spigotmc, bukkit), иначе Вы рискуете подцепить backdoor.

Рисунок 13 – Необходимый набор плагинов * - не обязательно
Рисунок 13 – Необходимый набор плагинов * - не обязательно

1)      BungeeGuard* – нужен, если хотите получить небольшую дополнительную защиту (за исключением закрытия портов) от игроков, которые с помощью подменой UUID и обхода авторизации проникают на игровые сервера под чужими никами.

2)      Citizens* – является платным плагином, устанавливает модельки игроков, которые можно кастомизировать.

3)      CommandNPC* – тоже платный, дополнение к Citizens.

4)      DeluxeMenus* – настройка GUI-меню для большей интерактивности

5)      eZProtector – защита от известных взломов и крашей (можно поискать замену), требует плагина ProtocolLib.

6)      FiguresFix* – тоже небольшого вида защита от всех известных крашей, не конфликтует с №5. Требует плагина ProtocolLib.

7)      HideStream – скрытие информации о входе/выходе игроков, есть хорошие альтернативы.

8)      HolographicDisplays – плагин на голограммы, можно добавить информацию о серверах, к примеру.

9)      HolographicExtension – необходимый плагин для работы №8.

10)  Images* - плагин на вставки своих изображений

11)  Lobby* – система лобби, которая включает в себя все необходимые функции – переадресация игроков, скрытие чата, смена игрового режима и т.п (является самописным), в интернете полно альтернатив.

12)  PlaceholderAPI – это плагин для серверов Spigot, который позволяет владельцам серверов отображать информацию из различных плагинов в едином формате.

13)  ProtocolLib* - Необходимая библиотека.

14)  ViaVersion – плагин, с помощью которого игроки версиями выше 1.12 могли зайти на сервер.

Как Вы поняли – почти все плагины на Ваше усмотрение. Главный функционал hub-сервера – переадресация игроков на другие. Не забывайте, что игрок не должен иметь доступ к повреждениям карты (WorldGuard or gamemode adventure).

Настройка Grief

Ядро используем то же, что и в Hub. Настраиваем его, учитывая, что это будет игровой сервер, который будет «кушать» ресурсы в 10, а то и в 50 раз больше, чем hub.

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

Долго останавливаться на нём не буду, ведь по сути – это самое обыкновенное выживание.

Настройка Anarchy

Тут мы уже договорились, что используем более новую версию, а в следствии – другое ядро. Советую использовать более новые форки, к примеру PupperFish. (Очень хорошая статья, в которой описывается то, какой форк лучше выбрать - https://spigotmc.ru/resources/sovremennaja-optimizacija-sovremennyx-serverov.613/ , там же Вы найдёте советы по настройке и оптимизации сервера).

Набор плагинов будет немного отличаться. Основной особенностью является то, что приват регионов происходит не с помощью WorldGuard (/rg claim), а дополнительным плагином ProtectionStones (специальный блок для привата). В регионах работает PVP, динамит, взрывы, поршни и тому подобное. Советую почитать по поводу концепции 2b2t, а затем искать необходимые плагины для затачивания идеи.

На самом деле, в планах было описать ну очень подробно все этапы, но понял, что уместится всё это в немалого объёма книжке. Поэтому тонкости в настройке каждого плагина указывать не буду. За миллион рублей буду. Настройка сервера EggWars немного специфичная, поэтому посчитал, что описывать его настройку здесь не совсем уместно. В интернете много статей по поводу этого. К тому же, настройка зависит от плагина, который Вы используете. Обычно к плагину идёт подробный мануал по настройке.

Установка на хостинг

С помощью FTP-клиента переносим папки с серверами на хостинг.

После этого нам необходимо создать небольшие скрипты для запуска серверов. Вот небольшой шаблон, который включает бесконечный цикл, который обеспечивает запуск сервера, если вдруг он по какой-либо причине выключится. Также некоторые Aikar’s флаги:

#!/bin/bash
while true
do
{
	~/prometheus/jre1.8.0_331/bin/java -jar -Xms16G -Xmx16G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -XX:G1NewSizePercent=40 -XX:G1MaxNewSizePercent=50 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=15 -XX:InitiatingHeapOccupancyPercent=20 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar -Duser.timezone=Europe/Moscow PaperSpigot.jar nogui
    echo "To stopping the server, press the key combination Ctrl + C!"
    echo "Reboot:"
    for i in 5 4 3 2 1
    do
      echo "$i..."
      sleep 1
    done
    echo "Reboot complete!"
}
done

где

·  PaperSpigot.jar – название Вашего файла ядра.

·  -Xms16G -Xmx16G – количество памяти, которое Вы хотите выделить для сервера.

Далее запускаем их.

·         screen -S hub

·         sh hub/hub.sh

·         ctrl+A, ctrl+D

Таким образом мы запустим сервер hub. Повторяем данные действия ещё 4 раза, чтобы запустить все сервера. Обращу внимание на то, что запускать сервера желательно по степени значимости – от меньшего к большему. Anarchy-Grief-Hub-Velocity.

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

Отлично, теперь игроки могут заходить и играть. Остался сайт. Мы сошлись на том, что будем использовать сервис автодоната. Советовать какой-либо сервис не буду, так как на вкус и цвет фломастеры разные. В них присутствует удобная панель управления, настройки и кастомизации сайта. (рис. 14)

Рисунок 14 – пример сайта авто-доната
Рисунок 14 – пример сайта авто-доната

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

Выводы

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

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


  1. Ivanshka
    23.05.2022 11:55
    +5

    Очень забавно читать статью о том, как попытаться заработать на серверах Minecraft, а в самом конце видеть "лучше не надо этим заниматься". Хотя доля правды в этом действительно есть, уж очень потенциально нестабильный это вид заработка, как по мне.


    1. begin_end
      25.05.2022 16:30

      Объективно, «поезд» на данный момент уже ушел. Без серьезных вложений, не создавая огромный проект в этом направлении не заработать. Собственно, это одна из причин, почему появилась статья автора. Лет 5 назад, когда на 1 игрока онлайна приходилось от 1$ в месяц прибыли и выше, все молчали, кто был «в теме».

      Также отмечу, что максимальную прибыль получали с применением множества очень нехороших с точки зрения морали методов. Игроки — в основном дети, а их «не грех и обмануть, верно»?
      Так что на проектах процветал тотальный обман, социальная инженерия, многие элементы из казино. Это позволяло умножить прибыль в n раз. Единицы серверов были честными, с нормальным отношениям к игрокам, а не как к дойной корове (в основном небольшие проекты, до 100 игроков).

      Я некоторое время содержал честный коммерческий проект, выживавший на подборе онлайна умерших проектов через автоматический сбор заброшенных доменов (а доменов владельцы забрасывали много, так как: их проект открывается, игроки закупаются донатом, выдаиваются по максимуму кейсами и прочим, больше купить ничего нельзя — старый проект в утиль, да здравствует новый проект). Тогда то я и познакомился с сообществом держателей проектов — честно говоря, в основном они довольно молоды и весьма похожи на черных СЕОшников из нулевых по фактору моральности.
      На данный момент я не останавливаю сервер проекта для немногих оставшихся игроков, мне не жалко.

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

      Реклама, привлечение игроков на данный момент самый больной вопрос. И тут ситуация складывалась следующим образом:
      Майнкрафт развивался так же, как в реальном мире развиваются живые бизнес-процессы, только раз в 10 быстрее. На начальном этапе это была дикая среда, сервера без доп. ПО, создаваемые массой случайных энтузиастов. Лучшие из них впоследствии становятся профессиональными кодерами или владельцами проектов. Появляются системы плагинов, первые мониторинги с превращением в рекламные доски. Крупнейшие из лаунчеров (игровых клиентов) вытесняют мелкие и также становятся рекламными площадками, предлагая сервера по умолчанию. С 2015 по 2017 ютуберы массово пробуют зайти в Майнкрафт, это становится некоторой модой, иметь свой сервер (на самом деле не свой, просто заказ брендированного клона у какого-либо из известных владельцев) — впрочем, большинство сразу же бросают сервера ввиду незначительности прибыли (исключение — сервера с модами, где обычно ютубер очень плотно участвовал в жизни проекта). Примерно с 2017 все нарастает процесс умирания и забрасывания мелких проектов. Некоторые, впрочем, объединяются или поглощаются. На виду остаются выжившие мегапроекты, от 1000 онлайна и выше, с парком порой в десятки серверов и командой обслуживающего персонала, гораздо большей привычной связки владелец-кодер-модераторы (администраторы различного уровня, кодер и младшие кодеры, веб-дизайнеры, гейм-дизайнеры-билдеры, рекламщики, спецы по отмыву прибыли и прочие; с нормированными зарплатами). Владелец оставляет за собой контроль фин. части и набор основы команды. Тем не менее, мелкие, но уже некоммерческие проекты пока еще остались.
      Чтобы сейчас очевидные способы рекламы, как тлаунчер (привет Алисе на рис.7 :) ), мониторинги окупились, ваш проект должен быть огромным, похожим на остальные огромные проекты по набору функций, но чуточку лучше. А не очевидные способы рекламы (скорее, наполнения онлайна) нужно придумать самому (например, неактуальный ныне автосбор мертвых доменов). Ныне Майнкрафт сервера это не хобби по вечерам, а бизнес начального или среднего уровня, со всеми присущими ему минусами и плюсами.

      Обобщая, я бы сказал, что в коммерческом плане статья была актуальна 3-5 лет назад. А так — грамотно расписано, хотя и не со всем я согласен.


  1. NickProgramm
    23.05.2022 20:16
    +1

    Хорошая статья, спасибо автору за труд!


  1. MicroNovaX
    23.05.2022 21:28
    +2

    Далеко от реальности, очень далеко.
    Стоит считать зарплаты среднего джависта, парк из нескольких 5950X на 128GB RAM, неадекватных рекламоисполнителей, рядовой персонал тех. поддержки, нормальную DDoS защиту.
    В рамках саморекламы продам исходники своего закрытого проекта в K8S с самописным ядром, системой координации между серверами всего по сходной цене в пару миллионов рублей)


  1. BrainRTP
    24.05.2022 11:00
    +3

    Интересное чтиво, спасибо! Понравился проведенный анализ, только не понял от куда взялись весы для оценивания (из головы?).
    Вкусовщина, конечно, но вместо screen можно использовать tmux, он стабильнее работает и более гибок.
    Также можно избавиться от лишних плагинов, например, HideStream т.к его функционал полностью можно заменить настройками Paper'a.
    Установленные флаги Aikar'a во многом зависят от конфигурации системы, лучше их вовсе не использоваться или использовать по минимуму.
    Более подробно по оптимизации можно найти на тематических форумах, например топик на ру-ведре "Настройка сервера и оптимизация от А до Я."

    Еще упустили момент с авторизацией игроков. Добавили защиту всякую, а вот авторизации нет, печаль :(
    В такой конфигурации серверов (proxy + несколько vanila серверов) авторизация точно должна быть на стороне прокси.

    Плагин Citiezens бесплатный, если подробнее прочитать описание на странице проекта/плагина. Его можно скачать бесплатно через стороннюю официальную ссылку (Jenkins, если мне не изменяет память), а на площадке он платный и тому есть причина, которая также указана в описании к плагину.

    Хотелось бы дополнить это:
    > Внимание! Все плагины искать строго на официальных ресурсах! (spigotmc, bukkit), иначе Вы рискуете подцепить backdoor.

    - spigotmc.org, а не .ru и пр. подобные
    - bukkit.org, а не другие
    Это важно т.к есть много копий таких сайтов, даже у сайта rubukkit.org.
    (Но и вышеописанные ресурсы не уберегут вас от бэкдоров, лишь снизят риски).

    Также в статье мне не хватает информации по автоматизации развертывания всего этого деяния. Да, мы не обладаем крутыми знаниями в Linux'e, но мне кажется, что сейчас без таких скриптов/систем не обойтись, особенно, когда поднимается больше, чем сборка Proxy + Vanila.jar.
    И не хватает информации про закрытие портов, чтобы не тянуть лишние "BungeeGuard", которые должны защищать, но на деле достаточно настроить Velocity (или любой другой proxy) и закрыть порты серверов, кроме самого proxy.
    И напоследок, было бы здорово уточнить, почему выбираются разные ядра и версии Minecraft на разных серверах.

    В любом случае, было познавательно, еще раз спасибо!


    1. htmlrulit Автор
      24.05.2022 14:58

      Благодарю за такой подробный комментарий), все пожелания и поправления в будущем учту! Отвечу на некоторые части комментария по пунктикам.

      1.       «только не понял от куда взялись весы для оценивания» - а я брал топ-100 серверов по количеству игроков в сети, далее считал среднее значение онлайна на каждую категорию. Ну и не обошлось без личного опыта, не считаю себя экспертом в этой теме, скорее, любитель. Лет 5-6, наверное, в этой теме.

      2.       «но вместо screen можно использовать tmux» - похоже, что исторически сложилось, что где Minecraft, там screen. Сейчас опробовал tmux – мне даже понравилась.

      3.       «Также можно избавиться от лишних плагинов, например, HideStream т.к его функционал полностью можно заменить настройками Paper'a.» - безусловно можно. Но если посмотреть на его нагрузку (плагина) на сервер, то её практически не окажется. Естественно, что я бы сам посоветовал обойтись без лишних плагинов, но в данном случае гораздо удобнее перезагрузить конфиг плагина командой, чем весь сервер целиком.

      4.       «Еще упустили момент с авторизацией игроков. Добавили защиту всякую, а вот авторизации нет, печаль :(» - верно, забыл совсем про это рассказать. На своём примере использую следующие - https://ibb.co/7gBw0qY . Вполне можно обойтись без последних трёх, но так красивее просто. Кстати, отдельно отмечу плагин «LimboAuth.SocialAddon», который позволяет использовать в качестве 2FA для аккаунта игрока – бота (VK, Discord, TG). Удобно то, что боты уже в комплекте абсолютно готовые.

      Что касается авторизации, LumboAuth – самое то.

      5.       «Плагин Citiezens бесплатный» - благодарю, поправил.

      6.       «Также в статье мне не хватает информации по автоматизации развертывания всего этого деяния» - да самому бы где найти информацию по этому поводу ????

      7.       «И не хватает информации про закрытие портов, чтобы не тянуть лишние "BungeeGuard", которые должны защищать, но на деле достаточно настроить Velocity» - к сожалению, если использовать версию ниже 1.16, то настройки Velocity будет недостаточно. На сервер лобби всё равно придётся поставить его (или его аналоги). Закрыв порт лобби, некоторые функции будут ограничены (как например LimboAuth.SocialAddon и т.п), поэтому поставив этот небольшой плагин, который просто принимает ключ от Velocity -  можно решить несколько проблем сразу.

      Вообще, закрытие портов – довольно коварной штукой оказалось для меня на начальных этапах. Кто бы мог знать, что после ребута настройки iptables слетают)

      /sbin/iptables -A INPUT -i eth0 -p tcp --dport 50000 -j DROP //дроп лобби

      /sbin/iptables -A INPUT -i eth0 -p tcp --dport 60000 -j DROP //дроп мини

      /sbin/iptables -A INPUT -i eth0 -p tcp --dport 61000 -j DROP //дроп анархии

      /sbin/iptables -A INPUT -i eth0 -p tcp --dport 62000 -j DROP // дроп гриф

      iptables-save


  1. kulhaker478
    24.05.2022 11:02
    +1

    Как довольно верно отметили ранее, стоит учитывать оплату трудов джависта, хотя и не обязательно брать человека на постоянку и платить оклад
    Из своего опыта скажу что хоститься не прибегая к самописам (плагины, допилы ядер, etc.) - можно, но на довольно маленьких проектах/для себя/друзей. Если сервер делается на заказ, то очень быстро приходит понимание, что готовые наработки не удовлетворяют потребности заказчика