Как сделать сервер для игры
Перейти к содержимому

Как сделать сервер для игры

  • автор:

С чего начать, чтобы сделать простой сервер для игры?

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

С чего мне начать, чтобы это реализовать?
Главный критерий простота изучения и скорость реализации.

П.С. Я самостоятельно изучаю программирование и мне безумно это нравится, но сейчас я очень ограничен во времени и любой ваш совет будет очень-очень важен для меня)))))

  • Вопрос задан более трёх лет назад
  • 4573 просмотра

Создание сервера для онлайн ММО игр на PHP ч. 1 — Введение

В большинстве своей при создании онлайн взаимодействия (не пошаговые, не где сервер — это один из клиентов, и не PVP, а прям ММО) в мобильных играх (да и не только) есть несколько путей:

  • использовать игровой движок в качестве экземпляра сервера (типа тот же UNITY в качестве сервера из коробки или с плагинами типа Mirror) — нужно когда у тебя есть OFFLINE версия игры параллельно (тогда да, иначе никак)
  • писать свое (те не универсальный, заточенный под игру)
  • использовать сервис типа https://www.photonengine.com/ (аналог которого я и делаю)

Как было бы здорово если был бы простенький сервис с API , да что и написан был на простом языке типа РНР да и что бы к нему была админ панель, куда можно было бы добавлять карты, предметы, анимации, создавать квесты, редактировать баланс. И что бы это это работало с мобильными приложениями на Android , IOS и игры были прям реалтайм рпг, где все друг друга видят и взаимодействуют, что бы не требовало много ресурсов сервера и работало быстро

Подумал я

Каким образом?

Посмотрев информацию в интернете (найдя лишь эту https://habr.com/ru/company/vk/blog/220359/ старую статью) про то как строится архитектура программы — сервера (не путайте с клиентами, как делать сами игры статей множество) , открыв русскоязычный youtube (где все пересказывают либо эту статью, либо используют игровой движок как сервер) я полез в англо-саксонский 🙂

Вот пример Человек делал несколько лет на С# но в итоге все работало настолько медленно что он снял эмоциональное видео «Я ненавижу это!»

Исторически сложилось что такие вещи пишутся на том же языке что сделан клиент (и теми же людьми), те обычно на С#, C++ . более редко мне кажется на Nodejs (может для браузерок) и Golang (знал бы его — писал на нем).

Что вроде как код должен компилироваться, что все остальное — медленное для пошаговых и однотипных браузеров и не компилируемые языки — не годятся ! C чем я не согласен и вот вам видео почему 🙂

Получится ли написать сервис на PHP ?

Какие есть технологии на рынке? Мне известен западный сервис https://www.photonengine.com/ , со сложной документацией, с серьезной работой в клиенте с глубокими познаниями в C# как мне кажется.

Да, язык PHP не компилируется , но это капля в море по скорости что забирает сервер (остальное — базы, кеширование, асинхронность, канал связи и тп) . А с php 7.4 (и далее 8) появились такие вещи как opcache, JIT компиляция ..

В добавок используются такие технологии как Redis, Websocket (UDP / TCP) и сервис предполагается для 2Д мобильных игр

Я считаю что человеку разрабатывающему клиент для онлайн не должен разбираться в хитросплетениях работы сервера : библиотеки для установления соединения с сервером и API список методов с принимаемыми и возвращаемыми параметрами — достаточно. А Вы ?

В добавок дать разработчикам легкий и понятный интерфейс для работы с игровым миром, например загрузка карт (отрисованные, например, в программе Tiled https://www.mapeditor.org/) как в видео

Есть ли результат?

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

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

Рекомендую прочитать вторую часть серии статей про создание онлайн сервера для игрового проекта

Подписывайтесь на мой профиль что бы не пропустить новые статьи

Как сделать свой сервер для Онлайн игры?

Собственно всем привет! Я новичок и не знаю почти ничего, но очень прошу вас, помогите мне со всем разобраться в частности с тем, как и что нужно, для того чтобы сделать сервер Онлайн игры (Игра R2 Online).

#1
23:58, 4 июля 2008

ну. сначала надо пойти учиться.

#2
7:57, 5 июля 2008

DragonOfWar
Нужно разобраться во всех нюансах, касающихся обычных игр, кроме того нужно изучить какую-нибудь серьезную СУБД, например MSSQL или MySQL, освоить сетевые технологи для той платформы, под которую будешь писать, должен знать технологии уплотнения информации и иметь потрясающие способности к оптимизации.

Вообще много вас таких. Придут неоткуда, покричат, что хотят МеГО ИгрУхУ написать, и обязательно ОнлАйН. Да так чтоб Линейка сдохла. Придут, поболомутят воду и исчезают.

Может сначала тетрис напишешь?

#3
10:23, 5 июля 2008

D-Prince
а фиолетово, если человек ничего не знает в этом, то сперва изучать.

#4
10:24, 5 июля 2008

DragonOfWar
Фанаты бывает ковыряются в игровом протоколе, разбирают защиту GG, пишут свои собственные сервера на Java. Насколько мне известно, у LineAgeII есть один «чистый» серверный шаблон, на котором любители собирают собственные сборки. Впрочем, разработчики этого не одобряют. Reign of Revolution относительно молодая игра, про любительские сервера не слышал, наверно их еще не успели сделать. Ковыряние в ресурсах игры обычно запрещается лицензионным соглашением, и если создание аддонов или модов не предусмотренно разработчиками, то есть риск быть привлеченным к уголовной ответственности. Поэтому прежде рекомендую ознакомиться с лицензией. Одного желания и любви к игре мало будет.

#5
17:13, 9 июля 2008

вот интересно сами авторы понимают тупость вопроса? вот точно такой же жизненый пример:
«Собственно всем привет! Я новичок и не знаю почти ничего, но очень прошу вас, помогите мне со всем разобраться в частности с тем, как и что нужно, для того чтобы собрать машину (Роллс-Ройс).»

#6
17:16, 9 июля 2008

Zhbanito
+5

  • Luchaninov aka Yoric
  • Новичок

#7
13:05, 25 июля 2008

Блин какие все «умные» — человек спросил, нормально ответить нельзя?
Думаю что разрожусь статейкой по данному поводу, по следующей причиной: «Не надо думать в рамках, самими же поставленых ограничений»

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

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

Обосную что говорю.
1) Я не програмист — игры мое хобби
2) Я состоявшийя человек — интересная работа, семья. И по специфике своей работы я очень часто вынужден искать нетривиальные решения. Может кто слышал на западе популярно такое понятие как «системный аналитик». Поэтому меня просто достали утверждения на данном форуме следующего типа: «С# сервер MMORPG написать нельзя», «ты сначало иди научись», «иметь потрясающие способности к оптимизации».

ВСЕ ЭТО НЕВАЖНО — единственное что ВАМ действительно нужно это ЖЕЛАНИЕ. При его наличии можно горы свернуть, не говоря уже о написании «какого-то» сервера.

скрин | Как сделать свой сервер для Онлайн игры?

А Вот вам пример: Сервер написаный за неделю(взялся за програмирование на C# около 2 месяцев назад) абсолютным «непрограммистом». В сервере не используется ни одна сторонняя библиотека. Части кода взяты в инете, с соблюдением всех авторских прав. (Вдруг соберусь писать игруху — они свободны для комерческого использования)

Это не фотошоп, это реальный С# «эхо» сервер АБСОЛЮТНО БЕЗ ОПТИМИЗАЦИИ, интересно чем вам не игровой сервер? Еще надо поискать «стандартную» реализацию поддерживающую такое кол-во сессий.

Использовано VS2008 Express и MS SQL 2005 Express — слава богу это пока безплатные инструменты.

От клиента поступает случайный набор данных, Из БД извлекается 2 числа в соответствующей записи клиента, клиенту возвращается их сумма(суммирование задано скриптом).

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

Надеюсь кому нибудь это поможет.

#8
14:26, 25 июля 2008

Luchaninov aka Yoric
эхосервер на кучу коннектов можно сколотить за 1-2 дня. Фичастый и понтовый — за три. Но это не игра, это даже не 0.01% игры. Сделай из своего сервера игру (его при этом придется раза три переписать, я полагаю) а потом говори, что ничего не важно. Что касается желания, которое главное, как вы утверждаете, то через два-три месяца от него не останется и следа.

Написано не исходя из пальцеобразных соображений, а по личному опыту.

  • static_char
  • Постоялец

Создаем игровой сервер: гайд по играм и техническим требованиям

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

Команда is*hosting 13 июн 2023 6 мин

Создаем игровой сервер: гайд по играм и техническим требованиям

  • Что такое игровой сервер?
  • Плюсы и минусы выделенного игрового сервера
  • Жанры игр, для которых пригодится собственный сервер
  • Как настроить игровой сервер вместе со Steam через SteamCMD
  • Популярные игры Steam и их требования к серверу
    • Counter-Strike: Global Offensive
    • Minecraft
    • Team Fortress 2
    • ARK: Survival Evolved
    • Terraria
    • Rust

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

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

    Что такое игровой сервер?

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

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

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

    Подбор конфигурации выделенного сервера должен соответствовать техническим требованиям игры и количеству игроков, которые будут к нему подключаться. Команда is*hosting бесплатно проконсультирует вас перед арендой сервера и подберет идеальную конфигурацию для любого игрового опыта.

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

    24/7 Поддержка

    is*hosting придет на помощь в любое время дня и ночи. Задавайте вопросы, обращайтесь с трудностями — мы ответим.

    Плюсы и минусы выделенного игрового сервера

    Плюсы и минусы выделенного игрового сервера

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

    • Выделенные игровые серверы обеспечивают более высокую производительность и стабильность по сравнению с общим или одноранговым хостингом для игр. Благодаря выделенным ресурсам сервер может справляться с требованиями игры, что приводит к более плавному игровому процессу, уменьшению задержек и улучшению общего впечатления от игры.
    • Запуск собственного игрового сервера дает вам полный контроль над игровой средой. Вы можете настраивать параметры игры, применять моды или плагины и создавать уникальный опыт, соответствующий вашим предпочтениям и потребностям сообщества.
    • Для обеспечения более безопасного игрового процесса можно использовать свой сервер. Вы контролируете доступ пользователей, можете применять надежные меры безопасности и минимизировать риск мошенничества или взлома.
    • Хостинг выделенного игрового сервера позволяет вам найти или создать сообщество геймеров-единомышленников. Приглашайте друзей и создайте частный виртуальный сервер для определенной группы. Это помогает создать чувство товарищества и способствует социальному взаимодействию между игроками.
    • Выделенные игровые серверы обеспечивают масштабируемость, позволяя вам играть с растущей базой игроков. Вы можете модернизировать оборудование сервера, увеличить его мощность и обрабатывать больше одновременных подключений по мере расширения сообщества.
    • Что касается минусов, то можно смело говорить про стоимость собственного сервера. Это можно решить посредством аренды выделенного сервера, а не сбора собственного оборудования. Все, что нужно сделать, — это найти проверенного хостинг-провайдера и подобрать конфигурацию сервера под требования игры.

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

    Жанры видеоигр, для которых пригодится собственный сервер

    Жанры игр, для которых пригодится собственный сервер

    В ММО обычно участвует большое количество игроков, взаимодействующих в постоянном виртуальном мире. Выделенные серверы обеспечивают централизованность и стабильность виртуального мира, в котором игроки могут проводить исследования, выполнять задания и участвовать в боях «игрок против игрока». Примерами MMO, которые в значительной степени полагаются на выделенные серверы, являются World of Warcraft, Final Fantasy XIV, EVE Online и Guild Wars 2.

    Игры FPS часто выигрывают от использования выделенных серверов, поскольку они обеспечивают более низкую задержку и более равные условия для всех игроков. Выделенные игровые серверы также позволяют лучше контролировать настройки игры, такие как режимы игры, карты и ограничения игроков. Популярные игры FPS, в которых обычно используются выделенные серверы, включают Counter-Strike: Global Offensive, Call of Duty, Battlefield и Team Fortress 2.

    Игры на выживание обычно предполагают исследование открытого мира, сбор ресурсов, ремесло и взаимодействие игроков. В купе с выделенным сервером игроки получают стабильную игровую среду, в которой можно сотрудничать или соревноваться. В таких играх, как Minecraft, ARK: Survival Evolved, Rust и 7 Days to Die, есть опции выделенных серверов, которые позволяют игрокам создавать свои собственные миры, к которым могут присоединиться другие игроки.

    Строительные” игры предоставляют игрокам инструменты и свободу для создания и проектирования своих виртуальных миров. С выделенным сервером игроки могут сотрудничать над большими проектами, делиться своими творениями и наслаждаться созданным миром. Например, Garry’s Mod, Terraria, Space Engineers и Factorio.

    Ролевые игры (RPG) с многопользовательскими компонентами, такими как кооперативный геймплей или бои «игрок против игрока», могут выиграть от использования выделенных серверов. В качестве примеров можно привести Diablo 4, Path of Exile, Divinity: Original Sin 2 и The Elder Scrolls Online.

    Спортивные и гоночные игры часто включают многопользовательские режимы, в которых игроки могут соревноваться друг с другом. Выделенные серверы обеспечивают справедливую и последовательную среду для матчей, уменьшая задержки и поддерживая синхронизацию между игроками. Сюда относятся FIFA, NBA 2K, Rocket League и iRacing.

    Как настроить игровой сервер вместе со Steam через SteamCMD

    Как настроить игровой сервер вместе со Steam через SteamCMD

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

    1. Скачайте и установите SteamCMD, который является инструментом командной строки Valve для работы с игровыми серверами. Его можно загрузить с официального сайта SteamCMD.
    2. Создайте новую папку на вашем компьютере, в которую вы хотите установить игровой сервер.
    3. Откройте SteamCMD, запустив файл «steamcmd.exe».
    4. Войдите в систему через консоль SteamCMD посредством команд:
      login anonymous (для анонимного входа в систему) force_install_dir (укажите путь к созданной вами папке) app_update validate (замените на конкретный AppID игрового сервера, который вы хотите установить, например, 740 для Counter-Strike: Global Offensive)
    5. После установки игрового сервера перейдите в папку сервера и найдите файлы конфигурации (часто они находятся в папке «cfg» или «config»). Откройте эти файлы с помощью текстового редактора или Терминала и измените настройки сервера в соответствии со своими предпочтениями (например, режим игры, лимиты игроков и др.).
    6. Чтобы запустить игровой сервер, вернитесь в консоль SteamCMD и введите команду: app_run -console (замените на конкретный AppID игрового сервера).
    7. Настройте маршрутизатор так, чтобы он перенаправлял необходимые порты на IP-адрес компьютера, на котором запущен игровой сервер. Необходимые порты указаны в документации или на официальном сайте игры. Затем установите параметры брандмауэра так, чтобы разрешить входящие соединения по указанным портам.

    Популярные игры Steam и их требования к серверу

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

    Counter-Strike: Global Offensive Counter-Strike: Global Offensive

    CS:GO — популярная игра-шутер от первого лица, в которой игроки соревнуются в командах в качестве террористов или контртеррористов. Она отличается быстрым темпом игры, стратегическим командным взаимодействием и разнообразными игровыми режимами, такими как обезвреживание бомб и спасение заложников.

    Минимальные требования к выделенному серверу для CS:GO:

    • 2.8 GHz процессор (64-bit)
    • 2 GB RAM
    • 50 GB диск

    Minecraft minecraft

    AppID: 4020 (Minecraft Dedicated Server)

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

    Кстати, более подробно о настройке сервера для игры Minecraft мы описали в этой статье. Дисковое пространство стоит выбирать в зависимости от размера мира, который планируется создать. Минимальные требования к выделенному серверу для Minecraft:

    • 3 GHz процессор
    • 5 GB RAM
    • 18 GB диск

    Team Fortress 2 Team Fortress 2

    TF2 представляет собой командный многопользовательский шутер от первого лица, разработанный компанией Valve. Она отличается уникальным художественным стилем и разнообразием классов персонажей с различными способностями и игровыми стилями. Игроки могут участвовать в таких режимах игры, как «Захват флага» и «Контрольная точка». TF2 известна своей красочной эстетикой, быстрым темпом игры и акцентом на командную работу.

    Минимальные требования к выделенному серверу для Team Fortress 2:

    • 1.7 GHz процессор
    • 1 GB RAM
    • 15 GB диск
    Выделенный сервер

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

    ARK: Survival Evolved ARK: Survival Evolved

    Игра на выживание с открытым миром, действие которой происходит в доисторической среде, наполненной динозаврами и другими доисторическими существами. Речь идет об ARK: Survival Evolved, где ради выживания игроки должны собирать ресурсы, создавать оружие, строить убежища, приручать динозавров или охотиться на них. Игра предлагает как однопользовательский, так и многопользовательский режимы, с возможностью кооперативного и соревновательного геймплея. Уже виден потенциал вместе со своим игровым сервером!

    Минимальные требования к выделенному серверу для ARK: Survival Evolved:

    • 3 GHz процессор
    • 8 GB RAM
    • 30 GB диск

    Terraria Terraria

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

    Игра не требует много дискового пространства. Минимальные требования к выделенному серверу для Terraria:

    • 2 GHz процессор
    • 2 GB RAM
    • 1 GB диск (примерно 10 игроков)

    Rust rust

    Rust — это многопользовательская игра на выживание, где помимо сбора ресурсов и строительства убежищ необходимо защищаться от враждебных игроков и угроз окружающей среды. В игре суровый открытый мир с PvP-боями. Более того, Rust также предлагает постоянный мир, управляемую игроками экономику и глубокую систему ремесел.

    Минимальные требования к выделенному серверу для Rust:

    • 3 GHz процессор
    • 8 GB RAM
    • 10 GB диск

    Как настроить игровой сервер для игр вне Steam

    Как настроить игровой сервер для игр вне Steam

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

    1. На официальном сайте или форумах игры найдите файлы выделенного сервера для загрузки. Разработчик или сообщество обычно предоставляют инструкции по настройке сервера.
    2. Распакуйте скачанные файлы сервера в нужное место на вашем компьютере. Лучше всего создать для этого отдельную папку. Следуйте прилагаемой документации (инструкциям), чтобы настроить параметры сервера.
    3. Как и в случае с игровыми серверами Steam, настройте перенаправление портов на маршрутизаторе и отрегулируйте параметры брандмауэра, чтобы разрешить входящие соединения на необходимых для игры портах.
    4. После завершения настроек, запустите файл сервера или скрипт запуска. Для более подробной информации по администрированию серера, добавлении плагинов и других функций стоит изучить официальную документацию или обратиться за помощью к другим игрокам, например, на специализированных форумах.

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

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

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