Как синхронизировать мини-игру в реальном времени 1 на 1? - PullRequest
0 голосов
/ 05 июня 2019

Что я пытаюсь сделать

Привет, новичок в разработке игр здесь.Игра, которую я пытаюсь сделать, довольно проста.Это почти как старая игра ФК «Битва баллонов», за исключением того, что я пытаюсь сделать это онлайн, где игроки могут пройти состязание, чтобы найти противников.

BalloonFight:

Ballon-Fight

Что я прочитал

Я прочитал несколько статей и обнаружил, что большинство из них приводят к двум подходам:

  1. Разместите всю игровую логику на клиенте , и клиент отправляет входные данные игрока на сервер при каждом обновлении кадра.Сервер действует как диспетчер, который только гарантирует, что вход игрока А получен как клиентом А, так и В. Я понимаю, что если мы увидим клиента в этом случае как чистую функцию, и если входы двух игроков будут получены каждымВ остальном игра должна давать одинаковые результаты на обоих клиентах.Таким образом достигается синхронизация.

  2. Поместите всю игровую логику на сервер , и пусть сервер выполняет вычисления и отправляет результаты обоим клиентам.В этом случае клиенты беспокоятся только об отображении.

Мои страхи

Решение 1 показалось мне более простым, но я сразу понял, когда возникла проблема с сетью.счет, это становится невероятно сложным.Потеря соединения игрока А на несколько секунд означает, что все данные были потеряны за этот период.Я могу догадаться, что в противовес этому сервер должен определить, отстает ли игрок А, и накапливать ли вклад игрока В, пока игрок А не вернется, а затем передать все накопленные данные клиенту игрока А.Клиент Игрока А затем должен сделать перемотку вперед, чтобы наверстать упущенное.Это звучит так, как будто есть огромное количество инфра работы как на стороне клиента, так и на стороне сервера.

С другой стороны, решение 2 выглядит для меня очень устрашающе, поскольку на данный момент я написал только некоторые игры на стороне клиента.

Мои вопросы

  1. Для того, чтобы сделать простую онлайн-игру, подобную этой, какой способ синхронизации состояния игры наиболее удобен для новичков?
  2. Если бы я использовал решение 1, указанное выше, существует ли какая-либо инфраструктура, которая обеспечивает такую ​​инфраструктуру, чтобы мне не приходилось самостоятельно решать проблемы с сетью?

ЗаранееСпасибо гуру игры Dev.

...