Я хотел бы создать простой многопользовательский игровой сервер для простой игры:
Предполагается, что игра похожа на Command & Conquer, у вас есть несколько танков и несколько солдат. Вы можете выбрать одного солдата, а затем нажать на карту, куда солдат должен идти. Если солдат приходит в район, куда он не может пойти, он ходит. И солдаты могут быть сбиты врагами.
Как мне структурировать игровой сервер и что делать на клиенте?
Т.е. если солдат перемещается из X в Y, но вокруг здания Z, я думаю, сервер должен иметь возможность точно рассчитать, где находится солдат (в случае, если в него выстрелил враг), и клиент также должен знать позицию для рисует солдата.
Что должно быть сделано на сервере, и я думаю, что я должен составить протокол для этого. Я думаю, что сервер должен отслеживать состояние игры и время. У кого-нибудь есть предложения, как это сделать? или могли бы порекомендовать почитать?
Есть в основном два подхода:
Доверенный клиент немного сложнее, но имеет то преимущество, что вы можете перенести большую часть своих вычислений с сервера. Стоимость работы сервера является одной из самых больших проблем для многопользовательских игр и серьезно снизит вашу масштабируемость.
Хороший подход (для начинающих) состоит в том, чтобы позволить каждому игроку клиента обрабатывать свои собственные юниты. На следующем шаге вы можете использовать запасные циклы, чтобы позволить игрокам-клиентам проверять действия других клиентов. Серверу не нужно делать больше, чем обмениваться сообщениями, поддерживать синхронизацию и обеспечивать постоянство (например, базы данных).
Если вы планируете иметь какое-то лобби или чат, тогда обрабатывайте каждую из этих тем на дополнительном сервере. Это сделает вещи намного легче в будущем.
источник