LINUX.ORG.RU

Сетевые игры с клиентскими частями


0

1

Вот делают разные игры на многих игроков.

Клиентские части быстро ломают, допиливают, скриптуют и т.д.
Это происходит, если используется flash/javafx/moonlight
А особенно будет происходить, если распространять клиентскую часть в исходниках (у нас же тут опенсорсный форум).

Понятно, что в таком случае и стейт и все проверки надо дублировать на сервере.

Как обеспечить игру без читов, чтобы они не давали преимуществ одним игрокам перед другими?

У меня пока только такие идеи:
1) специфицировать набор возможных действий и специфицировать время (временнУю стоимость) их выполнения. В таком случае можно контролировать нагрузку на сервер от одного аватара и ограничить выгоду от автоматизации действий;
2) контролировать количество аватаров на одного пользователя (например привязкой к телефонному номеру, как у гуглмейла);

>если распространять клиентскую часть в исходниках
Клиенты к IGS распространяются именно так. Можешь попробовать прикрутить читы.

x3al ★★★★★
()

Не посылать клиенту лишних данных.

Считать всё на сервере тем же движком, которым считает клиент. Соответственно, если пропатчить клиент и заставить его считать, что можно бегать со скоростью 10x и проходить сквозь стены, то на сервере он всё равно будет бегать с 1x и бампаться от стен.

http://www.eveonline.com/devblog.asp?a=blog&bid=694

INFOMAN ★★★★★
()

> и ограничить выгоду от автоматизации действий;

не нужно.

примером является WoW, в котором сейчас без плагинов вообще нельзя играть. Потому что на чистом клиенте как дурак будешь нарезать круги по местности и искать, а где же персонаж которому нужно отнести сделанный квест. Ну да, люди с плагинами автоквестов имеют преимущество над блуждающими в неведении - и это правильно.

Как обеспечить игру без читов, чтобы они не давали преимуществ одним игрокам перед другими?


ответ: нужно придумать такие правила игры, в которых бы нормальные действия (типа колчиества аватаров или модифицированных клиентов) не становились читами.

Понятно, что в таком случае и стейт и все проверки надо дублировать на сервере.


можно оставить проверки логики вообще только на сервере. Клиент оправляет заявку на действие, а сервер отвечает возможно ли ее выполнить. На клиенте проверять только логику элементарных действий, которые имеют значение внутри клиента, и на заявку к серверу никак не повлияют. Например, можно ли перетащить в ячейку «оружие» предмет «трусы» - это можно проверять на клиенте. И даже если клиент модифицированный/собственный/писанный на коленке, то на финальную заявку «назначить трусы оружием номер 1» сервер ответит «нельзя».

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

stevejobs ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.