Я думал о реализации стелс в многопользовательской игре. Это игра в стиле MOBA, так что подумайте о League of Legends (LoL) и Heroes of the Storm (HotS). Несколько клиентов подключаются к одному серверу, который передает состояние игры всем клиентам. Клиенты отправляют свои входные данные на сервер, который может отклонить их при обнаружении недопустимых команд, что делает мошенничество невозможным (ну, в теории).
Теперь я специально упоминаю эти игры, потому что обе они по-разному реализовали стелс. У LoL есть скрытность с двумя возможными состояниями: вы либо полностью видимы, либо совершенно невидимы. HotS, с другой стороны, реализует скрытность таким образом, что вы можете сказать, мерцая в воздухе:
Я думаю, что это аккуратный механик, поскольку он продвигает / награждает внимание, обращая внимание на ваше окружение. Тем не менее, многопользовательская игра заставила меня понять, что это легко может быть использовано.
Когда вы реализуете скрытность способом LoL, вы можете просто прекратить отправку координат игрока другим клиентам. Когда персонаж игрока нарушает скрытность, сервер может снова транслировать местоположение. Тем не менее, с моделью HotS, в воздухе, где персонаж движется, можно увидеть мерцание. Это означает, что сервер должен отправлять местоположение игрока другим клиентам. Это означает, что игроки, которые изменяют текстуру или модель или даже сам код игры, могут сделать механику плаща бесполезной. Вот ветка на досках HotS по этому поводу.
Мой вопрос заключается в том, есть ли какой-нибудь способ реализовать маскировку (с «мерцанием», как у HotS), не имея проблемы с тем, что хитроумные игроки могут модифицировать игру (данные) и «побить систему». Возможно ли это, а если нет, как другие многопользовательские игры с этой механикой справляются с этим? Является ли только стиль невидимости LoL не поддающийся проверке?
Я думал о том, чтобы сервер время от времени отправлял фиктивные «плащевые» локации, но это также вредит честным игрокам, которые просто обращают внимание, так что это не сработает.
источник
Ответы:
Вы не можете реализовать эффект мерцания, не делая его легким в использовании ... но что, если вы использовали косвенный способ показать, что кто-то рядом, средство, которое также применимо к видимым игрокам?
Например, что если игроки оставляют следы, а сообщения «созданные следы» отправляются с сервера независимо от местоположения игрока? Каждый игрок оставляет следы, поэтому вы не можете сделать модель следа более видимой, не закрывая арены на них и не делая каждый отдельный отпечаток менее заметным, но если игрок видит след, не видный символ, он знает, что кто-то там есть.
Вы также можете делать такие вещи, как мелкая галька, которая разбросана вокруг, шелест травы, когда кто-то идет по ней, или рябь, которая появляется, когда кто-то движется по воде. Если «знаки» применяются только к определенным локациям или материалам, это может добавить дополнительную стратегию, которая заставляет невидимых персонажей двигаться осторожно и избегать вещей, которые откажутся от их позиций.
источник
without making it easy to exploit
-> Это относится ко всей игровой механике, а не только к этой конкретной.Если вы посмотрите на бесчисленные другие вопросы о предотвращении мошенничества в многопользовательских играх, представленные на этом сайте, вы легко увидите, что на самом деле не существует технических мер для предотвращения мошенничества на стороне клиента.
Все, что вы можете сделать, это предоставить меньше информации о скрытой сущности. Все, что нужно знать клиенту для получения эффекта искажения, - это то, что в этой позиции что- то скрыто. Но ему не нужно знать что-то конкретное об этом, например, что это такое, сколько у него осталось здоровья и что он делает сейчас. В зависимости от вашей игры, это само по себе может изменить игровой дефицит информации для игрока.
источник
Да, любая информация, которую вы отправляете клиенту, может показаться более очевидной, чем вы предполагали. Но вот хитрость:
Смягчить воздействие
Конечно, у клиента может быть некоторая информация, но, тщательно продумав, какой информацией вы готовы поделиться, и что игроки могут с ней сделать, вы можете, по крайней мере, смягчить влияние хаков клиента.
1. Что наблюдает игрок?
а. Вы видите что-то, но оно не на месте (мост или куст движутся, но оно большое, поэтому вы не знаете, куда стремиться; шаги становятся видимыми только с задержкой в 2 секунды): в этом случае клиент знает только, что есть что-то, но не где / что именно.
б. Вы наблюдаете что-то по-другому (звук, если что-то находится в области; индикация близости как радар с или без направления)
Снимок экрана в вопросе кажется между 1 и 2, так как он, вероятно, основан на ограниченной информации, но вы все равно видите схему, которая может выдавать некоторую информацию.
2. Что может сделать игрок?
Предположим, вы думаете, что кто-то находится по координатам XY, что вы можете сделать? Вот несколько типичных вариантов:
нападающий
перемещение
Если выбор маршрута обычно выполняется на стороне клиента
источник
Эффект пульсации может быть сделан с помощью кода шейдера. В этом режиме вы можете отключить использование текстур, чтобы простое изменение текстуры больше не было проблемой.
В 3D, когда модель вступает в игру, вы все равно можете просто изменить шейдер на симуляцию преломления, используя только поверхность модели, отбрасывая цвет. Даже когда модель заменяется каким-либо образом, эффект остается.
Модификация предварительно скомпилированного шейдера будет такой же сложной, как модификация игрового кода, и я думаю, что это на один уровень сложнее, чем поиск текстур в файлах игры.
источник
Which means that players that change the texture or model or even the game code itself could render the cloak mechanic useless
. И я не понимаю, почему я пропустил вопросwhether there is some way to implement cloaking (with a 'shimmer', à la HotS), without having the issue that crafty players can modify the game (data)
. A: Это реклама маскировки с мерцанием, B: это сложнее изменить, чем простое изменение текстуры. ГДЕ реально визуализировать это другая сторона. Если позиция - это единственное, что нам нужно, чтобы применить волновой эффект, то это должны быть единственные данные, отправляемые игроку.