Что я пытаюсь сделать
Привет, новичок в разработке игр здесь.Игра, которую я пытаюсь сделать, довольно проста.Это почти как старая игра ФК «Битва баллонов», за исключением того, что я пытаюсь сделать это онлайн, где игроки могут пройти состязание, чтобы найти противников.
BalloonFight:
Что я прочитал
Я прочитал несколько статей и обнаружил, что большинство из них приводят к двум подходам:
Разместите всю игровую логику на клиенте , и клиент отправляет входные данные игрока на сервер при каждом обновлении кадра.Сервер действует как диспетчер, который только гарантирует, что вход игрока А получен как клиентом А, так и В. Я понимаю, что если мы увидим клиента в этом случае как чистую функцию, и если входы двух игроков будут получены каждымВ остальном игра должна давать одинаковые результаты на обоих клиентах.Таким образом достигается синхронизация.
Поместите всю игровую логику на сервер , и пусть сервер выполняет вычисления и отправляет результаты обоим клиентам.В этом случае клиенты беспокоятся только об отображении.
Мои страхи
Решение 1 показалось мне более простым, но я сразу понял, когда возникла проблема с сетью.счет, это становится невероятно сложным.Потеря соединения игрока А на несколько секунд означает, что все данные были потеряны за этот период.Я могу догадаться, что в противовес этому сервер должен определить, отстает ли игрок А, и накапливать ли вклад игрока В, пока игрок А не вернется, а затем передать все накопленные данные клиенту игрока А.Клиент Игрока А затем должен сделать перемотку вперед, чтобы наверстать упущенное.Это звучит так, как будто есть огромное количество инфра работы как на стороне клиента, так и на стороне сервера.
С другой стороны, решение 2 выглядит для меня очень устрашающе, поскольку на данный момент я написал только некоторые игры на стороне клиента.
Мои вопросы
- Для того, чтобы сделать простую онлайн-игру, подобную этой, какой способ синхронизации состояния игры наиболее удобен для новичков?
- Если бы я использовал решение 1, указанное выше, существует ли какая-либо инфраструктура, которая обеспечивает такую инфраструктуру, чтобы мне не приходилось самостоятельно решать проблемы с сетью?
ЗаранееСпасибо гуру игры Dev.