Anubis
@Anubis
Люблю корейскую кухню и веб-разработку

Как реализовать реалтаймовый игровой сервер?

Есть некоторый опыт в создании браузерных сетевых игр без реалтайма в прошлом (php & flash), за плечами парочка небольших однопользовательских игр для мобилок, реализованных на Unity, с недавних пор освоен node.js.

И теперь очень хочется создать реалтаймовую многопользовательскую игрушку. Что-то комнатное на небольшое количество игроков в одном месте, с видом сверху как в Diablo, tap-to-move передвижением, атаками ближнего радиуса действия, стрельбой из луков/арбалетов/etc и кастованием магических атак, которые могут лететь по заданной траектории, реагируя на столкновения на пути, либо активироваться сразу в заданной точке, применяя урон в заданном радиусе. Также обсчёт физики понадобится для предотвращения движения персонажей в одну точку, т.е. у них должны быть некоторые габариты, благодаря которым они должны держаться на некотором расстоянии друг от друга.

То есть необходима реализация базовой физики в реальном времени. Скорей всего, будет достаточно 2д физики на плоской карте. И очень много вопросов:
  • Синхронизация, движений, физики и анимации между клиентами и сервером
  • Поиск пути при расчёте траектории движения к целевой точки, обходя препятствия
  • Вебсокеты или udp? Требовать ли от игроков подключения по wi-fi или позволить играть по сотовому соединению?


Хотелось бы реализовать серверную часть на ноде ввиду того, что уже знаком с платформой (ввод-вывод, работа с бд, хорошее быстродействие). Есть ли подходящие готовые реализации, от которых можно отталкиваться? Если нет, буду также признателен за ссылки на описание алгоритмов реализации необходимого функционала. Хотелось бы не использовать платные реализации типа Фотона, чтобы не завязываться на оплату сервисов.
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 1
Anubis
@Anubis Автор вопроса
Люблю корейскую кухню и веб-разработку
В итоге смотрю в сторону различных реализаций Photon: PUN, Bolt, Quantum. Похоже, лучше всего для синхронизации между игроками задействовать один из этих сервисов, берущих на себя все вопросы синхронизации и учёта сетевых задержек. А на своём сервере реализовать инициализацию состояния игрока при загрузке игры и вопросы его прокачки и инвентаря.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы