Практически в каждой игре, с которой я сталкивался, есть мрачная ситуация, предназначенная для изменения способа взаимодействия пользователя с окружающей средой, всегда есть некоторые игроки, которые включают гамма-коррекцию монитора, чтобы свести на нет желаемый эффект.
Есть ли способ запретить пользователям корректировать гамма-коррекцию, чтобы «обмануть» их выход из проблемы? (темнота)
Я полагаю, что если бы вы могли надежно получить текущую гамма-коррекцию монитора пользователя, вы могли бы использовать ее для более или менее предотвращения преимущества, которое оно могло бы дать, не причиняя обычным пользователям каких-либо неудобств.
rendering
anti-cheat
Athix
источник
источник
Ответы:
Если вам абсолютно необходимо контролировать, может ли игрок что-то видеть или нет, возможно, для многопользовательских античитов или это является ключом к вашей игровой механике, то полностью затемните их . Таким образом, никакая гамма-коррекция не сделает их видимыми.
Не лучший пример, но в Closure области, которые не освещены, находятся в полной темноте:
Пожалуйста, не иди по этому пути; Есть много причин - кроме обмана - для исправления гаммы; возможно, у игрока плохое зрение или плохой монитор, или он играет в течение дня. Пожалуйста, уважайте своих пользователей! Не позволяйте нескольким мошенникам / пиратам / «что у вас» испортить опыт для всех остальных.
источник
То, что я бы предложил, это добавить небольшое количество белого шума к визуализированному выводу. В ярких сценах это не будет видно, в темных сценах с обычной гамма-настройкой это похоже на то, что на самом деле делают камеры или человеческий глаз. Но для кого-то, кто заводит гамму, этот шум был бы очень неприятным. Мало того, что темные объекты не станут должным образом видимыми, усиление шума низкого диапазона будет также отвлекать от ярких объектов; так что это должно достаточно отговаривать людей от этого.
(Конечно, очень умные ребята все еще могут придумать сложные методы шумоподавления, но они, по крайней мере, недоступны в обычных мониторах)
источник
Есть пара функций API Windows, которые могут сделать свое дело : SetMonitorBrightness и SetDeviceGammaRamp . Однако это будет зависеть от оборудования; вероятно, не все мониторы поддерживают настройку яркости программно, и разные мониторы могут давать разные результаты и т. д.
Более того, это не очень хорошая идея. Если привязать гамму / яркость к некоторому фиксированному значению, это, несомненно, вызовет раздражение у ваших игроков, и, скорее всего, сделает игру непригодной для некоторых, потому что в их настройках получается слишком темно (или слишком ярко).
В конечном счете, если это однопользовательская игра, и игрок хочет сделать игру проще для себя, это их право. Почему вы должны их остановить? Если это многопользовательская игра, то нужны другие стратегии, такие как отправка игроку информации о событиях, достаточно близких для того, чтобы они могли видеть или в луче их фонарика, или что-то в этом роде.
источник
Учитывая случайную яркость / контрастность / гамму экранов пользователя, не говоря уже о освещении комнаты, где сидит пользователь, нет надежного способа сделать что-то, что будет «достаточно видимым» или «просто невидимым». Если вы хотите, чтобы что-то было невидимым, сделайте это черным. Если вы хотите сделать что-то неоднозначно приемлемым, вы должны признать, что у некоторых игроков будет лучшая возможность увидеть это.
источник
Если это один игрок, это не имеет значения.
В многопользовательской игре просто иметь окно столкновения, показывающее, что они могут видеть. Если они находятся в темной области, скажите клиенту вообще не рисовать других игроков / сценические объекты и т. Д., Пока они не окажутся в поле столкновения поля обзора.
источник