Пошаговые ссылки на серверы настольных игр? [закрыто]

12

Есть ли хорошие рекомендации / книги, которые можно порекомендовать о том, как создать игровой сервер на основе поворота? Это что-то вроде шахматного сервера для объединения игроков в шахматы и поддержания игровых состояний. В прошлом, например, IGS (для go, weiqi) была реализацией на основе сокетов. Какие современные технологии можно изучить? Благодарность!

ohho
источник
есть соответствующая тема на форуме gdev gamedev.net/topic/565319-turn-based-game-design-help
zinking
Вы можете узнать из следующего дизайна игрового сервера: developers.google.com/games/services/android/…
tomash

Ответы:

5

Я не думаю, что есть какая-то конкретная книга об этом, поскольку эта тема довольно тривиальна.

Представьте себе почтовый сервер, на который игроки могут отправлять свои действия по почте. На сервере есть все действия, выполненные до сих пор (как по почте), что означает, что у вас есть состояние игры. Если вы хотите перезагрузить игровое состояние, просто выполните все действия внутри почты в хронологическом порядке. Единственное, что вам нужно сделать, это убедиться, чей это ход ... но это тоже легко (например, номера ходов). Нет необходимости в современных технологиях ... модифицированный почтовый сервер / клиентское решение подойдет.

Соединение с паролем может быть сделано через Эло ... но я думаю, ты знал, что

zhengtonic
источник
Может быть, вы можете объяснить немного больше, яйцо. Я не знаю, «Эло»
звон
Я отредактировал пост, чтобы включить ссылку на систему Эло.
Kylotan
2

Если бы это был я, я бы построил его с нуля с розетками. Количество отправляемых данных очень мало, а пошаговый характер делает небольшую задержку незаметной.

На мой взгляд, вопрос в том, какие дополнительные функции вам нужны. Продолжаются ли сеансы игры (кто-то может бросить и присоединиться, можно ли сохранить игру и т. Д.)? Если вы выполняете сохранение в стиле Civilization, вы, вероятно, захотите отправить данные сохранения всем клиентам или иметь встроенную клиентскую сторону для сохранения с предоставленным сервером ключом для проверки.

Вам нужны какие-либо отчеты между ходами, например, «Игрок 2 перемещает юнит» или «Ваш противник может быть АФК»? Если это так, вы можете в конечном итоге захотеть оставить соединения сокетов открытыми.

Вообще говоря, если нет какой-либо веской причины отклоняться, я бы сделал сервер как можно более тупым и простым. Оставляет меньше для отладки. Мне также нравится использовать простые текстовые протоколы, так как я могу тестировать свои серверы, используя telnet без реального игрового клиента (что может быть подозрительно в данной проблеме), но это как бы поощряет манипулирование данными Wireshark (что вы, вероятно, будете проверить в любом случае).

Изменить: Если игра поддерживает только игры 1-на-1, одноранговые соединения, возможно, стоит посмотреть.

gkimsey
источник
1

Важно не задумываться о том, что такое сервер и каковы его обязанности. В этом случае у вас относительно медленная игра, поэтому архитектура сервера не будет невероятно сложной (по сравнению с более быстрой игрой, в которой вы рассчитываете и т. Д.). Ваш сервер должен прослушивать порт TCP (может также пропустить UDP, если вам все равно не требуется скорость), чтобы подключенные клиенты могли отправлять ему пакеты информации. Он принимает пакеты, проверяет их на основе правил игры и отправляет ответ. В вашем конкретном случае ваш сервер должен знать, чья очередь в данный момент, и отвергать любые попытки других игроков выполнять действия, пока не наступит их очередь.

Я не знаю, какую технологию вы имели в виду, но кое-что было бы достаточно просто сделать на Java с библиотекой Kyronet. Просто отправьте свои игровые действия на центральный сервер (также может быть одним из двух игроков), обработайте его и отправьте обновление игры обоим игрокам. Я уверен, что нечто подобное существует для .NET.

JPRO
источник