Форум программистов, компьютерный форум, киберфорум
Программирование игр
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/55: Рейтинг темы: голосов - 55, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 06.12.2018
Сообщений: 2

Как работают игровые сервера?

06.12.2018, 09:23. Показов 10199. Ответов 3

Author24 — интернет-сервис помощи студентам
К примеру я разработчик Unity или UE4 или Frostbite и т.д. в среде разработки можно создавать целые миры, вот у меня несколько вопросов:

Как работают MMO игры?
- а точнее как реализуются у них игровые сервера?
какая ОС у сервера? какой софт? что там запущенно? какая база данных?
находится ли вся карта на сервере или на клиенте? К примеру как прогружается мир когда я бегу по карте (разным локациям)?
откуда такая мощность? за счет чего? как это все обрабатывается?

и еще тот же тип вопроса, если это мобильная игра на Android или iOS как хранятся данные на сервере?
как происходит обмен данных между игрой и сервером в real-tim'e?
что если серверов несколько? как они работают?
как работает мультиплеер? он использует один внешний сервер?

В общем к примеру я в среде разработки создал игровой мир, есть персонажи, всё есть - как сделать это играбельным через игровой сервер? Как его сделать? если среда разработки билдить только клиентскую часть и то под Windows.

Буду очень благодарен получить ответ хоть на пару из этих вопросов, может направит кто-то где можно про это почитать подробнее!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2018, 09:23
Ответы с готовыми решениями:

как работают игровые p2p сервера?
как работают игровые p2p сервера? как в гта онлайн например или в колде

Некорректно работают игровые приложения на Win 7
Доброго времени суток, господа. У меня проблема вот в чем - абсолютно все игры, что я устанавливаю на Win 7 жутко лагают, хотя не должны...

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

3
 Аватар для COKPOWEHEU
4051 / 2602 / 432
Регистрация: 09.09.2017
Сообщений: 11,577
12.12.2018, 10:57
Если на пальцах (глубже я все равно не знаю).
ОС у сервера любая, под которую собственно сервер написан. Хоть DOS используйте если сумеете написать под нее.
База данных любая, хоть набор xml файлов, опять же зависит от реализации.
Карта может находиться как на клиенте, так и на сервере. Преимущество второго варианта в возможности разведки игроком (если у него и так есть карта, какой смысл разведывать?), зато придется помимо остальной информации передавать еще и фрагменты карты.
Для прогрузки мира как раз и придуманы локации. Обычно загружаются только те, что видны игроку.
Если серверов несколько, возможно несколько вариантов. Либо сервера выступают как кластер и обмениваются данным между собой, либо игрок сам выбирает сервер при начале игры и не может его изменить впоследствии.
Подробнее про сетевое взаимодействие, протоколы и прочее можно почитать, как ни странно, в литературе по сетевому взаимодействию. Начните с простого "два байта переслать" обмена, без игровой логики.
1
43 / 31 / 3
Регистрация: 27.03.2016
Сообщений: 116
12.12.2018, 16:28
Цитата Сообщение от мафиози Посмотреть сообщение
находится ли вся карта на сервере или на клиенте?
Разные варианты бывают. Чем больше расчётов на сервере, тем меньше читов возможно. Но тем больше нагрузка на связь и больше вероятность пинга. Часты гибриды (карта хранится и там, и там) - для прорисовки берётся с клиента, для предотвращения взлома регулярно проверяется с серверной моделью
Цитата Сообщение от мафиози Посмотреть сообщение
откуда такая мощность? за счет чего? как это все обрабатывается?
В результате комп берёт всю сложную работу про прорисовке, серверу остаются лишь схематичные карты на уровне точек и плоскостей.
Конкретные технологии - ноухау конкретных игр.
Цитата Сообщение от мафиози Посмотреть сообщение
и еще тот же тип вопроса, если это мобильная игра на Android или iOS как хранятся данные на сервере?
как происходит обмен данных между игрой и сервером в real-tim'e?
Без разницы мобильная игра или для РС.
Цитата Сообщение от мафиози Посмотреть сообщение
что если серверов несколько? как они работают?
Смотря что за игра. Разные сервера обычно отвечают за разное. В одних играх разные сервера обрабатывают разные бои. В других играх разные сервера обрабатывают разные локации. В третьих просто всех игроков сортируют и не дают собраться более чем надо на одном сервере (игроки играют в одинаковые, но параллельные игры, без шансов пересачься).
Цитата Сообщение от мафиози Посмотреть сообщение
В общем к примеру я в среде разработки создал игровой мир, есть персонажи, всё есть - как сделать это играбельным через игровой сервер? Как его сделать? если среда разработки билдить только клиентскую часть и то под Windows.
Нужно изначально писать:
- клиентскую часть игры
- серверную часть игры
- в обоих частях должны быть продуманы способы взаимодействия друг с другом.
Ну а подробности на форуме не опишешь, это надо несколько книг изучить.
Для обучения не гонись пока за персонажами и мирами. Создай что-то предельно простое типа онлайн шашек или мультионлайн рисовалки. Или типа игры agar.io.
1
7967 / 2917 / 489
Регистрация: 05.10.2013
Сообщений: 7,799
Записей в блоге: 209
13.12.2018, 13:33
Лучший ответ Сообщение было отмечено мафиози как решение

Решение

Цитата Сообщение от мафиози Посмотреть сообщение
Как работают MMO игры?
Я сейчас плотно начал работать над созданием простой ММО игры. MMO - это когда кликнул по земле и ГГ бежит в точку клика. Этот тип игр один из самых нетребовательных с сетевым задержкам. Значит, можно пока не тратить время на изучение множества техник и алгоритмов по компенсации сетевых задержек. Я на практике активно изучаю написание authoritative сервера с клиентом на Unity по этому туториалу для начинающих: Unity Multiplayer Game Development with Node. Туториал хотя и на английском, но там всё показывают, поэтому если плохо с английским, то ничего страшного. Туториал отличный. Очень рекомендую. Я во всём туториале разобрался, можете мне задавать любые вопросы по нему. Показаны общие базовые принципы написания authoritative сервера. Эти принципы можно будет перенести в будущем на другие языки и технологии: C#, Java, C++ и т.д. Если заинтересовало, то смотрите, спрашивайте. Если нет, то проигнорируйте.

Чтобы сразу пробовать знания на практике, я свои наработки забрасываю на бесплатный хостинг Heroku.

Скриншот из туториала:



Я написал маленький сервер на TypeScript и Node.js. Развернул сервер на Heroku. Сервер создаёт отдельный мнимый поток для подсоединившегося клиента с помощью библиотеки Socket.io. Создаёт в этом потоке таймер - отдельный для каждого клиента в своём мнимом потоке и посылает клиенту каждую секунду сообщение "hello, world from server" + значение счётчика. Клиент для скачивания для Windows на Unity: UnitClient.zip На Unity можно собрать в один клик под 25 платформ, в том числе под 6 основных: Windows, Mac, Linux, Android, iOS, WebGL. Должно всё работать.



Цитата Сообщение от мафиози Посмотреть сообщение
К примеру я разработчик Unity
Я с Unity очень давно плотно работаю ещё с тех пор, как вышла первая бесплатная версия Unity 5 в 2015 году. Unity кроме как движок, ещё включает в себя фреймворки, в том числе для сетевого программирования. Есть два варианта организации сети встроенных в Unity:
  • HLAPI. Сервер находится на клиенте. Если клиент с сервером отключается, то права сервера переходят к другому клиенту: Unity - Manual: Host Migration. Команда Unity предоставляет сервис, где бесплатно до 20 человек: https://unity3d.com/unity/features/multiplayer
  • LLAPI - позволяет создавать authoritative сервер, но его можно собрать только для Linux. Не имеет ограничений по количеству людей. Является бесплатным, но значительно больше времени требует для разработки, чем HLAPI

P.S. Ничего себе, я смотрю, что неожиданно, то что я написал выше теперь deprecated. Надо будет поизучать это вопрос и если вам интересно, читайте здесь: UNet Deprecation FAQ
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2018, 13:33
Помогаю со студенческими работами здесь

Не работают стили при смене сервера
Делал отладку на сервере с такими данными Apache version: 2.4.178 PHP version: 5.6.23 MySQL version: 5.6.30 Operating System...

Не работают задние USB а передние работают как по маслу в чем дело.
Здравствуйте.Включил комп и заметил что не работает принтер подумал что отключил от питания а оказалось что не работают задние usb,передние...

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

Мои сервера сломали (и сейчас они денег требует) как очистить сервера?
Вчера мои сервер стала жертва вымогателей после этого сейчас сервер не заходит с никакой учётные запись кроме Administrator такие ошибки...

Игровые движки пишут сначала на c++ без использования WinAPI объясните как?
Здравствуйте!Модераторы похожих вопросов у меня много но конкретного ответа я не получил. Пожалуйста спецы ответьте я много изучаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Работа с объемным DOM в javascript
Htext 04.04.2025
Сегодня прочитал статью тут о расходах памяти в JS, ее утечках и т. п. И вот что вспомнил из своей недавней практики. Может, кому пригодится. Хотя, в той статье об этом тоже есть. Дело в том, что я. . .
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер