En casi todos los juegos que he encontrado que incluyen una situación oscura diseñada para cambiar la forma en que un usuario interactúa con el entorno, siempre hay algunos jugadores que activan la corrección gamma de su monitor para negar el efecto deseado.
¿Hay alguna manera de evitar que los usuarios ajusten su corrección gamma para 'hacer trampa' y salir de un desafío? (la oscuridad)
Me imagino que si pudiera recuperar de manera confiable la corrección gamma actual del monitor del usuario, podría usar eso para evitar más o menos la ventaja que de otro modo otorgaría sin causar inconvenientes a los usuarios normales.
rendering
anti-cheat
Athix
fuente
fuente
Respuestas:
Si absolutamente necesitas controlar si el jugador puede ver algo o no, posiblemente para el anti-trampa de multijugador o si es clave para la mecánica de tu juego, entonces obscurece completamente . De esta manera, ninguna cantidad de corrección gamma los hará visibles.
No es el mejor ejemplo, pero en Closure , las áreas que no están iluminadas están en completa oscuridad:
Por favor, no sigas este camino; hay muchas razones, además de hacer trampa, para corregir la gamma; tal vez el jugador tiene mala vista, o un monitor malo, o está jugando durante el día. ¡Respeta a tus usuarios! No dejes que algunos tramposos / piratas / lo que has arruinado la experiencia para todos los demás.
fuente
Lo que sugeriría es agregar una pequeña cantidad de ruido blanco a la salida renderizada. En escenas brillantes, esto no será visible, en escenas oscuras con configuración de gamma normal es similar a lo que las cámaras o el ojo humano realmente hacen en realidad. Pero para alguien que aumenta la gama, este ruido sería una gran molestia. No solo los objetos oscuros no se verán correctamente, sino que el aumento del ruido de bajo rango también distraerá de los objetos brillantes; por lo tanto, debería disuadir lo suficiente a las personas de hacerlo.
(Por supuesto, los muchachos muy inteligentes aún pueden desarrollar técnicas sofisticadas de eliminación de ruido, pero al menos no están disponibles en monitores comunes)
fuente
Hay un par de funciones de la API de Windows que pueden ser útiles : SetMonitorBrightness y SetDeviceGammaRamp . Sin embargo, esto dependerá del hardware; probablemente no todos los monitores admitan la configuración del brillo mediante programación, y diferentes monitores pueden producir resultados diferentes, etc.
Además, no parece una muy buena idea. Bloquear el valor gamma / brillo a un valor fijo seguramente molestará a sus jugadores, y muy probablemente hará que el juego no se pueda jugar para algunos, porque resulta demasiado oscuro (o demasiado brillante) en su configuración.
En última instancia, si se trata de un juego para un solo jugador y el jugador quiere facilitar el juego para sí mismo, es su derecho. ¿Por qué deberías detenerlos? Si se trata de un juego multijugador, entonces se necesitan otras estrategias, como enviarle al jugador información sobre eventos lo suficientemente cerca para que puedan ver o dentro de su haz de luz, o algo por el estilo.
fuente
Dado el brillo / contraste / gamma aleatorio de las pantallas del usuario, sin mencionar la iluminación de la habitación donde se sienta el usuario, no hay una manera confiable de hacer algo que sea "lo suficientemente visible" o "lo suficientemente invisible". Si quieres que algo sea invisible, hazlo negro. Si quieres hacer algo ambiguamente perceptible, debes aceptar que algunos jugadores tendrán una mejor oportunidad de verlo.
fuente
Si es un jugador, realmente no importa.
En el modo multijugador, ¿qué hay de tener un cuadro de colisión que muestra lo que pueden ver? Si están en un área oscura, dígale al cliente que no dibuje otros jugadores / objetos del escenario / etc. en absoluto hasta que estén en el cuadro de colisión de la vista de campo.
fuente