Главная » Правописание слов » Как написать свой сервер для игры

Слово Как написать свой сервер для игры - однокоренные слова и морфемный разбор слова (приставка, корень, суффикс, окончание):


Морфемный разбор слова:

Однокоренные слова к слову:

Пишем свой MMORPG сервер.

История моего знакомства с сабжем началась с lineage. Первой попыткой было написание собственного сервера под FreeBSD. Точнее будет сказать переписывание с С# на С++. Очень скоро стала понятна вся тщетность этого начинания. Однако начало было положено и опыт был приобретен.
Что ж, попробую изложить свой подход к решению такой объемной задачи как написание серверной части онлайн игры. Этот подход базируется на принципах и моделях, положенных в основу организации серверной части lineage2 исследованию которой я посветил несколько месяцев. Благо под рукой был сервер от официального поставщика :-). Не имею ни малейшего понятия как он попал в руки людей мне его предоставивших для исследований, да это имхо и не важно.

Игрой сервер состоит из нескольких частей. Основные из них две:
1. LOGINSERVER
2. GAMESERVER

Из названия понятно что первый обеспечивает прием логина-пароля от игрока, а второй сам игровой процесс.
Игровых серверов может быть несколько – например на каждую локацию по серверу или на каждую игровую вселенную.
LOGINSERVERов тоже может быть несколько – свой собственный для каждого GAMESERVERа, или один на все. Это зависит от архитектуры игры и возможностей разработчиков.
Я буду рассматривать случай 1 игровой сервер + 1 логин-сервер. Причем для простоты изложения упростим ситуацию и рассмотрим случай когда логин-сервер и гейм-сервер суть одно приложение. Это избавит нас от написания механизма передачи данных между двумя разными приложениями. В принципе мелочь, а приятно )))

Источник

Agones, создаем многопользовательский игровой сервер. Архитектура и установка

Agones (от др.-греч. agōn — «соревнование») позволяет развернуть кластер игрового сервера используя Kubernetes с возможностью Auto-Scaling. Этот open-source проект был создан в 2018 году, уже набрал 2500 звезд, был на Google I/O 2019, и на Хабре, к великому удивлению, еще не был упомянут. В топике описан краткий экскурс в архитектуру и инструкция по запуску тестового сервера на локальной машине. Если интересно, добро пожаловать под кат, вперед!

Описание проекта

Agones представляет собой Custom Resource (расширение Kubernetes API).

Проект в действительности требует большего внимания, так как позволяет запускать единичный игровой сервер (GameServer) или же целый «флот» серверов (Fleets) посредством конфигурационных yaml файлов, через Agones API. В свою очередь, каждый сервер дает оповещения о его жизненном цикле (GameServer lifecycles), описывая текущий статус (health checking, connection information). Сервера в кластере имеют возможность автоматического масштабирования (Fleet Autoscaling), которые интегрированы с базовыми возможностями Kubernetes. В дополнение, есть вывод статистики на панели (dashboard) с помощью Prometheus, Grafana или Stackdriver, экспортируются метрики посредством OpenCensus, что позволяет добавить собственный экспортер. Пример dashboard’a в Stackdriver:

Архитектура, основные элементы

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

Agones Kubernetes API делится на три основных пакета (packages), в каждом из которых находятся ресурсы: agones.dev (GameServer, GameServerSet, Fleet), allocation.agones.dev (GameServerAllocation), autoscaling.agones.dev (FleetAutoscaler). Как и в других ресурсах Kubernetes для их запуска используется yaml файлы.

Краткое описание каждого ресурса:

Диаграмма (отсюда) показывает жизненный цикл GameServer ресурса:

Фиолетовыми стрелками отмечена работа Agones SDK, красным — API пользователя, синим — контроллер игрового сервера, желтым — контроллер приложения.

Установка

В данном и последующих разделах используются команды с инструкции на официальном сайте, с некоторыми дополнениями. Рекомендуется использовать Kubernetes версии 1.12 (протестировано разработчиками). Для теста на локальном компьютере можно использовать minikube, который потребует kubectl и гипервизор (Hyper-V или VirtualBox) поддерживаемый операционной системой.

Для установки кластера и Agones необходимо запустить следующие команды:

Последняя команда скачивает конфигурационный файл Agones создающий Custom Resource Definitions (CRD) через Kubernetes API.

Запуск GameServer

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

Если после запуска команды в консоли появится ответ «ACK: hello», то сервер работает, его можно выключить следующей командой, которая инициализирует :

Вносим изменения в GameServer

Используя предыдущий пример изменим ответ сервера. Для начала скопируем репозиторий проекта:

Эта команда может занять некоторое время, так как весь репозиторий проекта будет копироваться в image. Этого можно избежать, если в директории оставить только папку sdks, файл main.go и Dockerfile.

Далее в examples\simple-udp\gameserver.yaml изменим строку 28 на image: agones-go:modified и создадим новый GameServer:

Проверим изменения и выключим сервер:

Если после запуска команд в консоли появится ответ «ACKNOWLEDGED: hello», то внесенные изменения прошли успешно.

Запускаем сервер локально

Источник

Разработка сервера под игру, с чего начать?

Привет.
Такой вопрос, как создаются сервера для игр? Есть к примеру игра GTA SA я так понимаю сторонние разработчики сделали клиент, который как-то взаимодействует с игрой передает данные и тд, вроде понимаю, но как клиет все таки влияет на игру? Я ОЧЕНЬ загорелся идеей сделать сервер для игры GTA 5 сделать моды к нему и тд, но не могу понять с чего начать. Как мне управлять игрой клиентом? Серверную часть я вроде как представляю, вопрос-ответ.

К примеру сделать сервер майнкрафт не состовляет проблем. Скачал, настроил, запустил, тут такого не нашел 🙁 Но по сути такое мне и не нужно, я хочу сделать свой сервер с 0 и свои моды, воплотить свои идеи в жизнь!

Кто имеет опыт расскажите!

Средний 1 комментарий

Есть к примеру игра GTA SA я так понимаю сторонние разработчики сделали клиент

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

К примеру сделать сервер майнкрафт не состовляет проблем.

Майнкрафт заметно проще, чем GTA. Хотя бы потому, что майнкрафт сделал один человек, а GTA сделали десятки программистов. И вот для майнкрафта можно сделать свой сервер,а не мод (хотя и моды к нему тоже есть). Как пример, отличная статья.

Источник

Как запустить свой собственный игровой сервер

Вы можете разместить игровой сервер на своем ПК, иногда удобнее иметь облачный сервер, работающий 24/7. Хостинг игровых серверов может быть удивительно дешевым, особенно если вы просто хотите поиграть с несколькими друзьями. Давайте разберемся более подробно как создать сервер для игры с друзьями.

Выделенный сервер против общего хостинга

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

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

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

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

Варианты общего хостинга

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

Gameservers.com: Очень дешевые серверы для небольших проектов, так как вы платите за необходимое количество игровых слотов. Достойная панель управления, но без защиты DDOS.
Friendhosting.net: Преимущества выделенного сервера и гибкости настроек виртуального хостинга по доступной цене, а также на сёрче хорошие отзывы о Friendhosting.net.
Low.ms: компромисс между выделенным и общим сервером, но в то же время обеспечивающий хорошую панель управления для большинства игр. Вы будете знать, какие спецификации вы получаете, но вам придется доплатить за выделенную ветку. Они также добавляют брендинг в заголовок вашего сервера.
Nodecraft: поставщик общего хостинга, который не взимает плату за слот. Они имеют разные уровни, сегментированные по ОЗУ и количеству экземпляров, которые вы можете запустить. Фактически, вы можете разместить несколько серверов на одном уровне, если позволяет оперативная память.

Варианты выделенного сервера

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

OVH: только два местоположения, Канада и Франция, но предлагают очень мощные серверы по доступной цене. Если вас не интересует новейшее оборудование Gen, вы можете арендовать их старое оборудование у их дочерней компании SYS.
Gameservers.com: Хотя эта компания специализируется на общем хостинге, она также предлагает выделенные серверы в качестве опции.
Amazon Web Services: больше премиального корпоративного варианта. Если вы разработчик игр и хотите разместить серверы, вам стоит обратить внимание на AWS GameLift. Если вы ищете один универсальный сервер, EC2 будет более подходящим. А если вы студент, вы можете получить бесплатный выделенный сервер на год.

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

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

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

Источник

С чего начинается написание игрового сервера?

Вообще, написание любой штуки начинается с ТЗ, а потом уже становится куда яснее что и как делать дальше.

Сервера для Mu и Lineage пишут командой из довольно большого количества человек.

>везде только ссылки на готовые.
Скачайте и почитайте. Как поймёте устройство какого-нибудь готового сервера, станет ясно куда копать дальше.

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

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

И только когда протокол уже расковыряли, то можно и сервер писать полноценный(или вообще начать писать в этот момент).
А это уже C(++)/Java/C# в основном т.к. нужен быстрый реалтаймовый софт.

Ну и последнее это повторить механику оригинала скиллы/итемы/крафты/прокачку/npc ну и т.д.

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

Ну для своей игры конечно первые два шага опускаются.

Ingernirated: протокол это в данном контексте уникальнный язык между игрой(клиентом) и сервером.
Везде свой.

Т.е. самый простой сценарий:
написать эмулятор входа в игру/на окно выбора персонажа.

Чтобы узнать как сервер должен отвечать и что шлет клиент
1. включаем снифер трафика(Wireshark например из самых на слуху)
2. запускаем игру
3. вводим логин пароль
4. смотри что наловил снифер т.е. ищем в пакетах логин/пароль(данные которые мы знаем наверняка, пароль правда шифрованный будет скорее всего так что логин только).
5. пытаемся разобрать на глаз структура пакета. По «байтово»
6. пишем код сервера который понимает пакеты и отвечает правильно. (Ответы тоже с оригинала надо парсить и разбирать)
7. повторять 3-6 пункты с каждым действием в игре/клиенте до получения играбельного сервера.

Вот например как выглядит пакет в двоичном виде естественно.
https://github.com/S-anasol/melia/blob/master/src/.

Всё это познается опытным путём.
И это цепочка действий без учета того что на клиента как правило висит защита и трафик шифруется.
Т.е. чтобы получить вот такой сырой пакет надо для начала обойти защиту, это опять же hexинг/хакинг игры.
Конечно есть более простые варианты когда в клиенте можно найти какие-то базы данных внутренние в описанием протокола/вещей/скиллов и т.д. Но это тоже надо найти и написать софт чтобы читать удобно.

Этот пакет, он приходит каждые 50мс(старается) или в зависимости от изменения окружающего мира, действия игрок(в том числе и во время раздумия, какого персонажа выбрать)?

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

значит каждая магия(её использование), каждый шаг(вперед,бок, назад) или нажатие кнопки принять в тексте, для всего этого нужно написать свой код обмена данными в такой форме?

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

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

да, клиент знает что и когда отправлять/принимать.
Но не факт что это можно извлечь в готовом виде для разработки.

Вот например список пакетов Ragnarok Online, эмуляторы практически со старта оффа развиваются.
Постоянно меняется всё, куча условий и т.д.
И вот на выходе получаем 4000+ пакетов.
Естественно необязательно собирать всё руками.
В основном под каждый эмулятор(игру) пишут свой анализатор пакетов т.к. правила всё-таки какие-то прослеживаются и уже частично можно понять/разобрать пакеты исходя из старых данных.

Источник

Теперь вы знаете какие однокоренные слова подходят к слову Как написать свой сервер для игры, а так же какой у него корень, приставка, суффикс и окончание. Вы можете дополнить список однокоренных слов к слову "Как написать свой сервер для игры", предложив свой вариант в комментариях ниже, а также выразить свое несогласие проведенным с морфемным разбором.

Какие вы еще знаете однокоренные слова к слову Как написать свой сервер для игры:



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *