0 / 0 / 0
Регистрация: 06.12.2018
Сообщений: 2
|
|
Как работают игровые сервера?06.12.2018, 09:23. Показов 10199. Ответов 3
Метки android, cloud, ios, linux, mmo, rpg, unity, unreal engine 4, базы данных, игры, программирование игр, сервера (Все метки)
К примеру я разработчик Unity или UE4 или Frostbite и т.д. в среде разработки можно создавать целые миры, вот у меня несколько вопросов:
Как работают MMO игры? - а точнее как реализуются у них игровые сервера? какая ОС у сервера? какой софт? что там запущенно? какая база данных? находится ли вся карта на сервере или на клиенте? К примеру как прогружается мир когда я бегу по карте (разным локациям)? откуда такая мощность? за счет чего? как это все обрабатывается? и еще тот же тип вопроса, если это мобильная игра на Android или iOS как хранятся данные на сервере? как происходит обмен данных между игрой и сервером в real-tim'e? что если серверов несколько? как они работают? как работает мультиплеер? он использует один внешний сервер? В общем к примеру я в среде разработки создал игровой мир, есть персонажи, всё есть - как сделать это играбельным через игровой сервер? Как его сделать? если среда разработки билдить только клиентскую часть и то под Windows. Буду очень благодарен получить ответ хоть на пару из этих вопросов, может направит кто-то где можно про это почитать подробнее!
0
|
06.12.2018, 09:23 | |
Ответы с готовыми решениями:
3
как работают игровые p2p сервера? Некорректно работают игровые приложения на Win 7 Как работают почтовые сервера, вернее правильность запроса к DNS |
![]() 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 | |
Разные варианты бывают. Чем больше расчётов на сервере, тем меньше читов возможно. Но тем больше нагрузка на связь и больше вероятность пинга. Часты гибриды (карта хранится и там, и там) - для прорисовки берётся с клиента, для предотвращения взлома регулярно проверяется с серверной моделью
В результате комп берёт всю сложную работу про прорисовке, серверу остаются лишь схематичные карты на уровне точек и плоскостей. Конкретные технологии - ноухау конкретных игр. Без разницы мобильная игра или для РС. Смотря что за игра. Разные сервера обычно отвечают за разное. В одних играх разные сервера обрабатывают разные бои. В других играх разные сервера обрабатывают разные локации. В третьих просто всех игроков сортируют и не дают собраться более чем надо на одном сервере (игроки играют в одинаковые, но параллельные игры, без шансов пересачься). Нужно изначально писать: - клиентскую часть игры - серверную часть игры - в обоих частях должны быть продуманы способы взаимодействия друг с другом. Ну а подробности на форуме не опишешь, это надо несколько книг изучить. Для обучения не гонись пока за персонажами и мирами. Создай что-то предельно простое типа онлайн шашек или мультионлайн рисовалки. Или типа игры agar.io.
1
|
13.12.2018, 13:33 | |
![]() Решение
Я сейчас плотно начал работать над созданием простой ММО игры. 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 5 в 2015 году. Unity кроме как движок, ещё включает в себя фреймворки, в том числе для сетевого программирования. Есть два варианта организации сети встроенных в Unity:
P.S. Ничего себе, я смотрю, что неожиданно, то что я написал выше теперь deprecated. Надо будет поизучать это вопрос и если вам интересно, читайте здесь: UNet Deprecation FAQ
1
|
13.12.2018, 13:33 | ||||||
Помогаю со студенческими работами здесь
4
Не работают стили при смене сервера Не работают задние USB а передние работают как по маслу в чем дело. Как редактировать игровые файлы? Мои сервера сломали (и сейчас они денег требует) как очистить сервера?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Работа с объемным 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
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
|