Полезное

Мы Вконтакте

Discord канал

#
Аватара пользователя
Пользователь
Сообщения: 2
Решил попробовать создать что-то в ММО сфере и столкнулся, полистав форумы, с тем, что требуется грамотно построенная клиент-серверная модель (сам факт я как бы знал, но то, что у меня будет обширный выбор из вариантов даже не предполагал).
Для простоты я опишу общий принцип, который для себя выбрал и очень надеюсь, что если есть варианты проще (не в написании кода, а менее затратные по ресурсам), то меня пнут в их сторону.
В клиенте использовать возможности UE4 и нужную информацию посылать пакетами через UDP соединение.
Сервер писать как отдельный объект. Программу обработки, которая ловит пакеты, проверяет и отправляет конечный результат.
Это во-первых.
Второе - это хранение данных.
Подумал, что хранить данные каждого пользователя
(а нужно будет знать о его предметах, валюте и.т.п) в бд не очень удобно, а скорее даже очень не. Решил, что проще будет создать бд только для основной информации об аккаунтах, а под каждого персонажа выделить память на сервере, где будет все храниться в файлах. 1 файл = 1 персонаж. Думаю много места не займет, но могу ошибаться.
Кидайте тапки(желательно не тяжелые).
Аватара пользователя
Пользователь
Сообщения: 564
Можно во всех сетевых настройках (частоты синхронизации и все такое) снизить до необходимого минимума. По дефолту кажись 100 герц частота синхронизации.
Аватара пользователя
Тех. администратор
Сообщения: 367
UDP - это правильно, не так хорошо как SCTP конечно, но вполне неплохо. Однако, вам придётся реализовывать какой-нибудь алгоритм управления потоком (см https://en.wikipedia.org/wiki/Network_congestion), что может быть непросто осилить.
С другой стороны, если вы действительно будете использовать возможности UE4 на клиенте - то писать придётся заметно меньше, так как там уже есть много чего - нужно будет просто использовать код.
Использовать файлы для хранения данных не рекомендую категорически - не пытайтесь изобрести свою базу данных, а именно это вы и собираетесь сделать. Взаимодействие с базой из анриала напрямую делать также не рекомендую, в силу того, что с таким решением могут возникнуть сложности при скейле под нагрузками.
Для хранения информации о персонажах и подобных вещах хорошо бы иметь отдельный слой архитектуры, желательно с формализованным и строгим API. При таком подходе можно легко организовать унифицированное взаимодействие различных подсистем вашей игры (включая и сами сервера игрового мира).
Аватара пользователя
Пользователь
Сообщения: 2
Почитал про SCTP. Достаточно удобный протокол, думаю лучше сделать будет на нем, но подумаю еще. Можно подробнее по поводу слоя архитектуры? Если есть скайп или иная "болталка", в которой имеется возможность пообщаться и вы согласитесь объяснить там, буду признателен.
Аватара пользователя
Тех. администратор
Сообщения: 367
SCTP хорош, но есть проблема - он сейчас плохо работает с NAT-ами (вот у вас к примеру в роутере есть проброс чего-то, кроме TCP/UDP/ICMP?). А за ними сейчас сидит не меньше 30% адресного пространства IPv4. Так что для использования в играх, играть в которые нужно уже сейчас он, пока, не очень хорошо подходит. И, честно говоря, не знаю, какие действия сейчас предпринимаются для улучшения ситуации.

Сами эпики в своё время (конкретно - во время разработки третьего гирс ов вара) отказались от SCTP именно по этой причине.
Аватара пользователя
Пользователь
Сообщения: 71
почему выбрали UDP ?

насколько я помню UDP в MMO используют только Wargaming со своими танками.

Все остальные Blizzard(WOW) NCSoft(Lineage2, Aion) XL Games(ArcheAge) CCP Games (EVE Online) используют TCP соединение.


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 54

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница