Как создать свой сервер в Agar.io
4.7 (93.33%) 12 голосов

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

Создаем сервер в Агарио

Итак, для создания сервера в Agar.io нам понадобиться:

  • Виртуальный или выделенный сервер. В целом можно запускать и на своем компьютере, но вы должны понимать, что он должен работать постоянно, ему нужна оперативная память и процессорная мощность, а так же стабильный интернет. Иначе радости от игры будет маловато из-за тормозов и зависаний. Данный туториал строиться на примере 64 битной версии Debian 7, но все пункты могут быть перенесены и в реалии других систем (Windows, Mac OS). В данной статье они рассматриваться не будут, но если кому-то очень понадобиться — я дополню гайд.
  • Выделенный IP адрес или сервис типа dydns для того, чтобы к нам могли спокойно подсоединится извне.
  • Установленный nodejs, git.
  • Скачанный дистрибьютив Ogar.
  • Желание и 10 минут времени.

Установка nodejs, git

Так как Ogar написан на Node.js, вам потребуется установить его, а так же дополнительный модуль “ws” для полноценного создания сервера. Первым делом мы обновим пакеты нашей системы, а после установим необходимую «базу»:

apt-get update
apt-get upgrade
apt-get install build-essential git screen nano

Соглашаемся, устанавливаем. Теперь дело за Node.js:

curl --silent --location https://deb.nodesource.com/setup_0.12 | bash -
apt-get install --yes nodejs

Ogar Node.js Install

Скачивание и первый запуск

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

adduser agario

Adduser Agar IO

Придумываем ему пароль, остальную информацию можно оставить пустой. Его домашняя директория /home/agario, в нее и перейдем:

cd /home/agario

Приступаем к загрузке и установке Огарио. Все это будет производиться посредством git, который мы установили ранее. Он же будет ответственный и за обновление. Вводим:

npm install --save ws
git clone git://github.com/OgarProject/Ogar.git Ogar

Install Git Ogar

Происходит скачивание файлов сервера Agar.io. Поздравляю. Осталось чуть-чуть. Пытаемся произвести первый запуск:

nodejs Ogar

Если все хорошо, то мы увидим примерно следующее:

Запуск сервера Огар

Попробуем подсоединится к нашему серверу. Для этого в браузере наберем:

agar.io/?ip=нашIp:443

Если все успешно вы войдете на сервер и будете на нем один. В консоли сервера проверим состояние командой status:

Агарио status консоль

Как видим, все прошло успешно. Закрываем наш сервер командой exit.

Настройка сервера Агарио через gameserver.ini

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

nano gameserver.ini

Пример конфигурационного файла:

// Ogar файл конфигурации
// Линии которые начинаются со слешей не читаются сервером.
// [Сервер] // serverGamemode: 0 = свободная для всех (Free for all), 1 = Командная, 2 = Экспериментальная (например 6/13/15),   10 = Соревнование, 11 = Голодные игры, 12 = Зомби мод, 13 = Команда Z, 14 = Команда X, 20 = радужный FFA (использовать вместе с setAcid(true))
// serverBots: Количество ботов, которые спаунятся (Экспериментальная опция)
// serverViewBase: Базовая дистанция, которую игроки видят. Внимание: большое значение может вызывать лаги.
// serverStatsPort: Порт для статистики сервера. Негативное значение отключает статистику.
// serverStatsUpdate: Количество секунд перед обновлениями статистики сервера.
// serverLogLevel: Уровень логирования сервера. 0 = Без логов, 1 = Логи только в консоле, 2 = Логи в консоли и IP соединениях.
// serverScrambleCoords: Включает перемешивание координат. 0 = Без перемешивания, 1 = перемешивать. По-умолчанию 1.
serverMaxConnections = 64
serverPort = 443
serverGamemode = 0
serverBots = 0
serverViewBaseX = 1024
serverViewBaseY = 592
serverStatsPort = 88
serverStatsUpdate = 60
serverLogLevel = 1
serverScrambleCoords = 1
// [Границы] // Устанавливает границы карты (По-умолчанию значения для левой стороны/верха = 0, правой стороны/низа = 11180.3398875)
borderLeft = 0
borderRight = 6000
borderTop = 0
borderBottom = 6000
// [Спаун] // Каждый интервал равняется одному тику (50 мс)
spawnInterval = 20
foodSpawnAmount = 10
foodStartAmount = 100
foodMaxAmount = 500
foodMass = 1
foodMassGrow = 1
foodMassGrowPossiblity = 50
foodMassLimit = 5
foodMassTimeout = 120
virusMinAmount = 10
virusMaxAmount = 50
virusStartMass = 100
virusFeedAmount = 7
// [Выплюнутая масса] // ejectMass: Масса выплюнутых шаров
// ejectMassCooldown: Время, пока игрок может собрать выплюнутые шары (мс)
// ejectMassLoss: Потеря массы при выплевывании шаров
// ejectSpeed: Начальная скорость выплюнутых шаров
// ejectSpawnPlayer: Шанс игрока заспаунится с выплюнутых шаров
ejectMass = 12
ejectMassCooldown = 200
ejectMassLoss = 16
ejectSpeed = 160
ejectSpawnPlayer = 50
// [Игрок] playerStartMass = 10
playerMaxMass = 22500
playerMinMassEject = 32
playerMinMassSplit = 36
playerMaxCells = 16
playerRecombineTime = 30
playerMassDecayRate = .002
playerMinMassDecay = 9
playerMaxNickLength = 15
playerSpeed = 30
playerDisconnectTime = 60
// [Гейммод] // Произвольные настройки гейммода
// tourneyTimeLimit: Время лимита игры, в минутах.
// tourneyAutoFill:  Если установлено значение больше 0, матч будет автоматически заполнен ботами после старта.
// tourneyAutoFillPlayers: Время старта, после которого сервер агарио будет заполнен ботами, перед тем как игроки подключаться.
tourneyMaxPlayers = 12
tourneyPrepTime = 10
tourneyEndTime = 30
tourneyTimeLimit = 20
tourneyAutoFill = 0
tourneyAutoFillPlayers = 1

Сохраняем данные настройки командой Ctrl — X соглашаясь перезаписать файл.

Консольные команды сервера

Данные команды можно вводить прямо в консоль сервера при запуске.

  • Addbot [число]
    • Добавляет определенно количество ботов на сервер. Если число не определено — добавляет 1 бота
  • Board [Полоса 1] [Полоса 2] [Полоса 3] …
    • Текст в таблице рекордов будет заменен следующими строчками
  • Boardreset
    • Сбрасывает ранние рекорды игроков и отображает актуальную информацию на текущий момент
  • Change [Параметр конфига] [Значение]
    • Параметр конфигурации будет замен на соответствующее значение, например “change serverMaxConnections 32″ поменяет значение MaxConnections на 32.
  • Clear
    • Очищает весь текст консоли
  • Color [ID Игрока] [Red] [Green] [Blue]
    • Меняет цвет указанного игрока
  • Exit
    • Выключает сервер
  • Food [X координата] [Y координата] [Масса]
    • Создает шар с едой в указанных координатах. Если значение не указано, берет его с параметра “foodStartMass” сервера
  • Gamemode [Id]
    • Смена гейммода сервера
  • Kick [ID Игрока]
    • Указанный игрок будет кикнут с сервера
  • Kill [ID Игрока]
    • Игрок и все его шары будут убиты
  • Killall
    • Убивает всех игроков и их шары
  • Mass [ID Игрока] [Значение]
    • Масса всех шаров игрока будет установлена в соответствующее значение
  • Name [ID Игрока] [Новое имя]
    • Меняет имя игрока на новое
  • Playerlist
    • Отображает список, в котором видны все присоединенные игроки, их IP, ID, количество шаров, масса и локацию
  • Pause
    • Ставит на паузу игру
  • Reload
    • Конфигурационный файл будет перезагружен. Параметры вроде serverPort, serverGamemode, serverBots, serverStatsPort, serverStatsUpdate изменяться только после перезагрузки сервера целиком.
  • Status
    • Отображает количество игроков, которые присоединены сейчас, время, использование памяти, гейммод
  • Tp [ID Игрока] [X координата] [Y координата]
    • Изменяет позицию игрока на указанная немедленно
  • Virus [X координата] [Y координата] [Масса]
    • Генерирует вирусный шар в заданной координате. Если масса не указана, использует серверный параметр “virusStartMass”.

Запуск сервера в фоновом режиме

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

screen -mdS agario nodejs Ogar

Приватный агарио сервер

Для того чтобы попасть в консоль:

screen -r agario

Чтобы выйти с консоли, нажимаем одновременно комбинацию Ctrl — a+d, а чтобы выключить сервер используем:

screen -XS agario quit

Обновление сервера Огарио

И тут все просто. Для этого заходим в домашней директории в директорию Ogar и через нее перепроверяем ГИТом не обновился ли код сервера:

cd Ogar
git pull
cd ..

Если патчей не выходило, мы увидим сообщение «Already up-to-date«.

Заключение

Надеюсь данная статья помогла вам разобраться и базово настроить сервер игры Agar.io на вашем хосте. Если у вас возникают проблемы, прошу в комментарии. Чем смогу — помогу. Stay tuned.