1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Туториал Теория создания майнкрафт сервера

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем InterVi, 30 июн 2013.

  1. Автор темы
    InterVi

    InterVi Старожил Пользователь

    Баллы:
    173
    Создать свой сервер не так просто, как может показаться на первый взгляд. На своем компьютере для игры с друзьями — это одно, на выделенном сервере для множества игроков — совсем другое. Нужно учитывать их потребности, возможные проблемы с защитой своих предметов и территорий, уязвимости, позволяющие эти предметы размножать и многое другое. Перед созданием сервера нужно придумать его идею: что на нем должно быть и как работать. Далее подбираются плагины. После рассчитывается приблизительная нагрузка, исходя из которой выбирается VPS или VDS с необходимыми характеристиками.

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

    Подбор плагинов
    У некоторых есть схожие функции, потому часто их список можно сократить, а, следовательно, нагрузку. Например, просмотр инвентаря есть в essentials, значет OpenInv не понадобится. Или установка точки спауна и варпов — это тоже есть в essentials, специализированные плагины не нужны.

    Некоторые вещи работают «из коробки», такие, как сохранение карты и инвентаря, отключение урона от мобов и прочее.

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

    Есть уже известные тонкости: чистка защищенных сундуков загрузочной воронкой, размножение вещей с помощью команд /cdroptransfer select, /logout и /unregister (если вторая недоступна). Они отключаются в конфигурационных файлах или через permission. Так же нужно настроить черные списки, внеся туда воронку и вагонетку с воронкой, отключить поверждения от динамита и криперов хотя бы в обычном мире.

    Настройка permissions
    Для удобной системы прав разных групп игроков используется плагин PermissionsEx. У каждого плагина есть свои permissions (разрешения), которые прописываются в конфигурационном файле. Через него же можно эти разрешения запретить, например, команду просмотра версии CraftBukkit и списка плагинов.

    Код:
        - automessage.receive.default
        - essentials.signs.use.balance
        - essentials.signs.use.buy
        - essentials.signs.use.disposal
        - essentials.signs.use.enchant
        - essentials.signs.use.free
        - essentials.signs.use.gamemode
        - essentials.signs.use.heal
        - essentials.signs.use.info
        - essentials.signs.use.kit
        - essentials.signs.use.kit.starter
        - essentials.signs.use.kit.tools
        - essentials.signs.use.mail
        - essentials.signs.use.protection
        - essentials.signs.use.repair
        - essentials.signs.use.sell
        - essentials.signs.use.spawnmob
        - essentials.signs.use.time
        - essentials.signs.use.trade
        - essentials.signs.use.warp
        - essentials.signs.use.weather
        - essentials.helpop
        - essentials.tpa
        - essentials.build
        - essentials.warp.list
        - essentials.warp
        - essentials.tpahere
        - essentials.tpaccept
        - essentials.home
        - essentials.sethome
        - essentials.delhome
        - essentials.spawn
        - essentials.suicide
        - essentials.rules
        - essentials.msg
        - essentials.ignore
        - essentials.info
        - essentials.list
        - essentials.mail
        - essentials.mail.send
        - essentials.motd
        - essentials.help
        - essentials.help.*
        - essentials.afk
        - essentials.pay
        - essentials.me
        - essentials.balance
        - essentials.kit
        - essentials.kits.starter
        - essentials.kits.tools
        - ChestShop.shop.*
        - mobarena.use.*
        - mobarena.arenas.*
        - mobarena.classes.*
        - mobarena.use.playerlist
        - mobarena.use.arenalist
        - mobarena.use.spectate
        - mobarena.use.leave
        - mobarena.use.join
        - worldguard.region.wand
        - creativegates.use
        - signcolours.*
        - worldguard.region.list.own
        - worldedit.selection.hpos
        - worldedit.selection.pos
        - worldedit.wand
        - worldguard.region.claim
        - worldguard.region.setparent.own.*
        - worldguard.region.setparent.own.*
        - worldguard.region.select.own.*
        - worldguard.region.select.own.*
        - worldguard.region.redefine.*
        - worldguard.region.addowner.own.*
        - worldguard.region.removeowner.own.*
        - worldguard.region.addmember.own.*
        - worldguard.region.addmember.member.*
        - worldguard.region.removemember.own.*
        - worldguard.region.removemember.member.*
        - worldguard.region.remove.own.*
        - worldguard.region.info.*
        - worldguard.region.info
        - worldguard.region.flag.regions.own.*
        - worldguard.region.flag.flags.passthrough.*
        - worldguard.region.flag.flags.build.*
        - worldguard.region.flag.flags.pvp.*
        - worldguard.region.flag.flags.mob-damage.*
        - worldguard.region.flag.flags.mob-spawning.*
        - worldguard.region.flag.flags.creeper-explosion.*
        - worldguard.region.flag.flags.enderman-grief.*.*
        - worldguard.region.flag.flags.enderpearl.*
        - worldguard.region.flag.flags.ghast-fireball.*
        - worldguard.region.flag.flags.sleep.*
        - worldguard.region.flag.flags.tnt.*
        - worldguard.region.flag.flags.lighter.*
        - worldguard.region.flag.flags.fire-spread.*
        - worldguard.region.flag.flags.lava-fire.*
        - worldguard.region.flag.flags.lightning.*
        - worldguard.region.flag.flags.chest-access.*
        - worldguard.region.flag.flags.water-flow.*
        - worldguard.region.flag.flags.lava-flow.*
        - worldguard.region.flag.flags.use.*
        - worldguard.region.flag.flags.vehicle-place.*
        - worldguard.region.flag.flags.vehicle-destroy.*
        - worldguard.region.flag.flags.snow-fall.*
        - worldguard.region.flag.flags.leaf-decay.*
        - worldguard.region.flag.flags.invincible.*
        - worldguard.region.flag.flags.entry.*
        - worldguard.region.flag.flags.entry-group.*
        - worldguard.region.flag.flags.exit.*
        - worldguard.region.flag.flags.exit-group.*
        - worldguard.region.flag.flags.greeting.*
        - worldguard.region.flag.flags.farewell.*
        - worldguard.region.flag.flags.deny-spawn.*
        - worldguard.region.flag.flags.heal-delay.*
        - worldguard.region.flag.flags.heal-amount.*
        - worldguard.region.flag.flags.teleport.*
        - worldguard.region.flag.flags.spawn.*
        - worldguard.region.flag.flags.price.*
        - worldguard.region.flag.flags.feed-min-hunger.*
        - worldguard.region.flag.flags.feed-max-hunger.*
        - worldguard.region.flag.flags.ice-form.*
        - worldguard.region.flag.flags.ice-melt.*
        - worldguard.region.flag.flags.potion-splash.*
        - worldguard.region.flag.flags.pistons.*
        - worldguard.region.flag.flags.item-drop.*
        - worldguard.region.flag.flags.entity-painting-destroy.*
        - worldguard.region.flag.flags.other-explosin.*
        - worldguard.region.flag.flags.enderdragon-block-damage.*
        - worldguard.region.flag.flags.invincible.*
        - worldguard.region.flag.flags.exp-drops.*
        - worldguard.region.flag.flags.vehicle-destroy.*
        - worldguard.region.flag.flags.entity-item-frame-destroy.*
        - worldguard.region.flag.flags.grass-growth.*
        - worldguard.region.flag.flags.mycelium-spread.*
        - iConomy.holdings
        - iConomy.help
        - iConomy.accounts.status
        - iConomy.payment
        - lwc.create
        - lwc.remove
        - lwc.modify
        - lwc.flag.*
        - jobs.join.*
        - jail.usercmd.jailstick
        - jail.usercmd.jailstatus
        - jail.usercmd.jailpay
        - mcjobs.jobsavail.all
        - mcjobs.world.all
        - mcjobs.jobs.all
        - creativegates.use
        - authme.register
        - authme.login
        - authme.changepassword
        - -authme.unregister
        - -authme.logout
        - spleef.join.1
        - spleef.join.2
        - spleef.start
        - -bukkit.command.version
        - herochat.join.*
        - herochat.pm
        - herochat.leave.*
        - herochat.speak.*
        - herochat.info.global
        - herochat.info.local
        - herochat.info.help
        - herochat.focus.*
        - herochat.autojoin.*
        - herochat.force.join.*
        - herochat.force.leave.*
        - customsay.hear

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

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

    Желательно, чтобы физически сервер располагался в той стране, для аудитории которой он создается. Тогда пинги будут заметно короче. Но это не принципиально, сервер, например, в США, имеет пинг до России 100-150ms, а по порту CraftBukkit ~300ms (связано с нагрузкой). Существенные недостатки при этом не замечены.

    Выбирать мощность нужно из расчета, что простенький сервер на 2 Гб оперативной памяти с 10-30 плагинами выдерживает ~50 игроков без заметных проблем, в случае, если не нагружен дополнительно из-за плохой настройки или «тяжелых» плагинов.

    Я использую этот хостинг, т.к. он не дорогой и за два с половиной месяца ни разу не подвел (недеюсь ссылку на виртуальные и выделенные сервера найдете без подсказки).

    Безопасноть и отказоустойчивость
    Под ней подразумевается наличие плагинов, защишающих от читеров и атаки ботов. Это — необходимый минимум, пример: NoCheatPlus и AntiBot. По желанию можно предотвратить и x-ray, но такие плагины создают сильную нагрузку. Так же нужно настроить SSH на нестандартный порт, придумать сложный пароль, правилами IPTABLES запретить его подбор и DdoS атаки. Либо использовать специализированное приложение, такое как fail2ban.

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

    В команде запуска сервера нельзя выделать под минимум всю доступную оперативную память: чанки не будут выгружаться и она быстро закончится, а сервер отключится. Команда должна выглядеть примерно так:
    Код:
    java -Xmx2000M -Xms512M -jar /root/craftbukkit.jar nogui.
    Чтобы сервер запускался сам в случае остановки, можно использовать цикл:
    Код:
    while : ; do sleep 10 && java -Xmx2000M -Xms512M -jar /root/craftbukkit.jar nogui; done
    Если его нужно будет выключить, то за паузу в 10 секунд можно вполне успеть нажать CTRL+C.

    Если выделенный сервер имеет свойство иногда произвольно перезагружаться, то и на этот случай можно сделать автозагрузку через скрипт с таким содержимым:
    Код:
    #!/bin/sh
    screen bash -c 'while : ; do sleep 10 && java -Xmx2000M -Xms512M -jar /root/craftbukkit.jar nogui; done'
    Затем нужно прописать путь до него в /etc/rc.local, чтобы он срабатывал при старте системы.

    Про отказоустойчивость создавал отдельную тему.

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

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

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

    Создание своего игрового клиента (лаунчера)
    Его главная цель — защита от читеров. Никакой плагин не сделает это лучше. Фактически, больше он ни для чего не нужен, кроме повышение авторитета сервера.

    Раскрутка
    К созданию сервера не относится, но является важным пунктом. Продвигать сервер нужно тогда, когда уже все готово. Есть несколько известных способов:

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

    Эффективность покупки рекламы в таких группах достаточно низкая: люди устали и не обращают на нее внимания.

    Подписи и сообщения на форумах
    Самый известный — rubukkit. Рекламу можно добавит в подписать, а так же в соответствующий раздел. Но это не должно быть спамом, в таких местах ценят содержательность. Нужно участвовать в обсуждениях и показывать свой ум, только тогда получится обратить на себя внимание.

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

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

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

    P.S.
    Статья писалась для продажи, но никак не добавляется, причем именно эта. Видимо господь велел добавить ее сюда, чтобы кому-то помочь. Возможно потом каждый пункт распишу отдельно в этой теме и сделаю ссылки на посты в шапке, тогда будет отличное руководство для новичков.
     
    FuturWall, v0dil, ilucha и 15 другим нравится это.
  2. ZloYCRipeeR

    ZloYCRipeeR Старожил Пользователь

    Баллы:
    153
    Skype:
    cry_zloy
    Имя в Minecraft:
    ZloYCRipeeR
    Не прочитал. Лайк просто за труд.
     
    zuma2, Pixelman, Lemz0 и 4 другим нравится это.
  3. Dub Due Lab

    Dub Due Lab Старожил Пользователь

    Баллы:
    153
    Skype:
    official_ddl
    Имя в Minecraft:
    CheetahBlu
    @InterVi, хде-то я видел ужеподобную темку...
     
  4. Автор темы
    InterVi

    InterVi Старожил Пользователь

    Баллы:
    173
    Я тут не встречал ничего вразумительного, если и по делу, то написано ужасно. Последовательность нужна, стиль, а то фиг разберешься. Уже пишу продолжение про настройку плагинов.
     
  5. Dub Due Lab

    Dub Due Lab Старожил Пользователь

    Баллы:
    153
    Skype:
    official_ddl
    Имя в Minecraft:
    CheetahBlu
    Сейчас поищу ссыль на эту тему, по-моему там не хуже.
    http://www.rubukkit.org/threads/Создание-своего-проекта-МНОГАБУКАФ.26142/. Получите и распишитесь!
     
    InterVi нравится это.
  6. Автор темы
    InterVi

    InterVi Старожил Пользователь

    Баллы:
    173
    хороший тутор, но надо именно по технической части, идеи и администрирование - уже немного другое
    Настройка плагинов - общая теория
    Нет смысла расписывать каждый плагин, т.к. их огромное количество и потому затея нереальна. Какой смысл в инструкциях, если человек не умеет думать? Тем более, что к каждому плагину разработчики выкладывают подробное описание, минимального знания английского и гугл транслита должно хватать, чтобы разобратся. Ниже будет пример разбора конфига WG, каждую отдельную строчку не описывал специально - не поймет только тупой.
    Это плагин, с помощью которого защищают территорию на карте — необходимая вещь. Кроме этого, он позволяет запретить использовать некоторые предметы, создать отдельные настройки для каждого мира, управлять физикой.

    Почти во всех параметрах стоит false, это означает, что они не выполняются. Т.е. если нужно, например, отключить урон блоков от крипера, то у соответсвующего параметра надо поменять значение на true, чтобы он выполнялся.

    Его конфиг находится в ~/plugins/WorldGuard/cofig.yml
    Для миров в ~/plugins/WorldGuard/worlds/мир/config.yml
    В него нужно вставить необходимое из главного конфига.

    Разбор конфига:
    Код:
        wand: 334
    ID предмета, которым проверяется приват (кожа). Лучше сменить на 280 (палка).
    Код:
        max-claim-volume: 40000
    Максимальный объем привата для игроков.
    Код:
        max-region-count-per-player:
            default: 1
            Thor: 2
            Creat: 2
            VIP: 4
    Каждой группе можно прописать определенное количество приватов, которое они могут создать.
    Код:
        deop-everyone-on-join: false
    Снятие ОПа при входе на сервер (false - не снимать).
    Код:
        block-in-game-op-command: false
    Отключить команды ОПа из командного блока (false - отключено, true - зазрешено).
    Код:
    physics:
        no-physics-gravel: false
        no-physics-sand: false
        vine-like-rope-ladders: false
        allow-portal-anywhere: false
        disable-water-damage-blocks: []
    Управление физикой, должно быть понятно для чего каждый пункт.
    Код:
        block-tnt: false
        block-tnt-block-damage: false
        block-lighter: false
    Здесь отключается динамит, лучше поменять значение только среднего параметра на true, это отключит повреждение блоков. Можно сделать это в конфиге для обычного мира и края, оставив в нижнем мире.
    Код:
    fire:
        disable-lava-fire-spread: false
        disable-all-fire-spread: false
        disable-fire-spread-blocks: []
        lava-spread-blocks: []
    А здесь можно отключить распространение огня, во второй строчке.
    Код:
    mobs:
        block-creeper-explosions: false
        block-creeper-block-damage: true
        block-wither-explosions: false
        block-wither-block-damage: false
        block-wither-skull-explosions: false
        block-wither-skull-block-damage: false
        block-enderdragon-block-damage: false
        block-enderdragon-portal-creation: false
        block-fireball-explosions: false
        block-fireball-block-damage: false
        anti-wolf-dumbness: false
        disable-enderman-griefing: false
        block-painting-destroy: false
        block-item-frame-destroy: false
        block-plugin-spawning: false
        block-above-ground-slimes: false
        block-other-explosions: false
        block-zombie-door-destruction: true
        block-creature-spawn: []
    Отключение повреждений блоков от мобов и прочие полезности (это тут отключается крипер).
    Код:
    player-damage:
        disable-fall-damage: false
        disable-lava-damage: false
        disable-fire-damage: false
        disable-lightning-damage: false
        disable-drowning-damage: false
        disable-suffocation-damage: false
        disable-contact-damage: false
        teleport-on-suffocation: false
        disable-void-damage: false
        teleport-on-void-falling: false
        disable-explosion-damage: false
        disable-mob-damage: false
        disable-death-messages: false
    Отключение урона игрокам от некоторых причин.
    Код:
    weather:
        prevent-lightning-strike-blocks: []
        disable-lightning-strike-fire: false
        disable-thunderstorm: false
        disable-weather: false
        disable-pig-zombification: false
        disable-powered-creepers: false
        always-raining: false
        always-thundering: false
    Управление погодой.

    Блэклисты
    Они лежат по адресу ~/plugins/WorldGuard/worlds/мир/blacklist.txt
    И имеют такую форму записи:
    Код:
    [lavabucket]
    ignore-groups=gods
    on-use=deny,tell
    [90]
    ignore-groups=gods
    on-place=deny,notify,tell
    [119]
    ignore-groups=gods
    on-place=deny,notify,tell
    В квадратных скобках - ID, про все остальное написано в описании самого блэклиста.
    Через них можно запретить установку и использование некоторых блоков, например, в этом случае, ведра с лавой и порталов (для тех у кого креатив или доступ к команде /give, которая вдобавок ограничивается через essentials).

    Что и где настраивается
    Отключение TNT, криперов, грифа эндерменом, пожаров, урона от некоторых явлений, запрет предметов - WorldGuard.
    Исключение предметов из /give, еще один блэклист - essentials и essentials AntiBuild
    Управление физикой, запрет спавна определенных мобов - essentials Protect
    /kit starter - тот же essentials
    В нем же есть и $, но я не проверял насколько хорошо взаимодействует с другими плагинами (jobs, mcjobs, арена).
    Лимит на количество по команде /spawnmob - essentials
    Приветствие при заходе на сервер (motd.txt) - essentials
    Правила сервера (/rules) - essentials
    У него один общий конфиг в папке ~/plugins/Essentials/config.yml
    Приват механизмов - LWC (там же отключается известная команда для дюпа /cdroptransfer)
    Красивое сообщение через /say - CustomSay, Commandbook
    Лимит на на объем /set и запрет сета некоторых блоков - WorldEdit (и так понятно)

    Настройка сервера
    Читать обязательно:
    http://ru.minecraftwiki.net/Создание_и_настройка_сервера
    http://ru.minecraftwiki.net/Команды_консоли
    Особенно последнее, некоторые команды заменяют целые плагины.
     
  7. ZloYCRipeeR

    ZloYCRipeeR Старожил Пользователь

    Баллы:
    153
    Skype:
    cry_zloy
    Имя в Minecraft:
    ZloYCRipeeR
    Мы Опять Забываем Про "Резерв"....
    Отключается Крипер?:confused:Выражайтесь Корректнее.
     
    HoShiMin нравится это.
  8. superkep

    superkep Старожил Заблокирован

    Баллы:
    153
    Skype:
    O_superkep_O
    Имя в Minecraft:
    superkep
    Познавательно...:D
     
  9. OJIoJIoIIIa

    OJIoJIoIIIa Старожил Пользователь

    Баллы:
    153
    Skype:
    support.olymc
    Имя в Minecraft:
    FaNt1K
    Прочитал полностью)Кто прочитал полностью и с умом - лайк :creeper:
     
    Сникерсни, TheDrascoll и Аравир нравится это.
  10. Azamant

    Azamant Активный участник

    Баллы:
    48
    Skype:
    AzamantRu
    Имя в Minecraft:
    Azamant
    Выделил для себя только Безопасность и отказоустойчивость. Лайк за это.
     
    dima621 нравится это.
  11. Derpie

    Derpie Старожил Пользователь

    Баллы:
    123
    Skype:
    shulooleh
    Имя в Minecraft:
    Derpie
    Создание своего игрового клиента (лаунчера)
    Его главная цель — защита от читеров. Никакой плагин не сделает это лучше. Фактически, больше он ни для чего не нужен, кроме повышение авторитета сервера.


    С каких это пор клиент и лаунчер это одно и тоже, тем более что где-то на РБ уже есть тема получше ибо там все более детально расписано.
    И каким образом лаунчер защищает от читеров ?
     
  12. OJIoJIoIIIa

    OJIoJIoIIIa Старожил Пользователь

    Баллы:
    153
    Skype:
    support.olymc
    Имя в Minecraft:
    FaNt1K
    Md5 проверкой клиента,если ее можно обойти,то не каждый школьник ее обойдет.Читеры буду всегда,но их % снизиться
     
    vadila800 нравится это.

Поделиться этой страницей