He estado pensando en implementar el sigilo en un juego multijugador. Es un juego de estilo MOBA, así que piensa en League of Legends (LoL) y Heroes of the Storm (HotS). Varios clientes se conectan a un solo servidor, que transmite el estado del juego a todos los clientes. Los clientes envían sus datos de entrada al servidor, que pueden rechazarlos cuando encuentran comandos no válidos, lo que hace que la trampa sea imposible (bueno, en teoría).
Ahora, menciono estos juegos a propósito porque ambos implementaron sigilo de manera diferente. LoL tiene sigilo con dos estados posibles: eres completamente visible o completamente invisible. HotS, por otro lado, implementa el sigilo de tal manera que se puede ver por un brillo en el aire:
Creo que esta es una mecánica ordenada, ya que promueve / recompensa prestando atención a su entorno. Sin embargo, al ser un juego multijugador, me di cuenta de que podría resultar fácilmente explotable.
Cuando implementa el sigilo en la forma 'LoL', simplemente puede dejar de enviar coordenadas de jugador a los otros clientes. Cuando el personaje del jugador rompe el sigilo, el servidor puede transmitir la ubicación nuevamente. Sin embargo, con el modelo HotS, se puede ver un brillo en el aire donde se mueve el personaje. Esto significa que el servidor debe enviar la ubicación del jugador a los otros clientes. Lo que significa que los jugadores que cambian la textura o el modelo o incluso el código del juego en sí mismo podrían hacer que la mecánica de la capa sea inútil. Aquí hay un hilo en los foros de HotS al respecto.
Mi pregunta es si hay alguna forma de implementar el encubrimiento (con un 'brillo', al estilo HotS), sin tener el problema de que los jugadores astutos pueden modificar el juego (datos) y 'vencer al sistema'. ¿Es esto posible, y si no, cómo otros juegos multijugador con esta mecánica lidian con esto? ¿Solo el estilo de invisibilidad LoL es incontrolable?
Pensé en hacer que el servidor enviara ubicaciones falsas de 'capa' de vez en cuando, pero esto también perjudica a los jugadores justos que solo están prestando atención, por lo que no funcionará.
fuente
Respuestas:
No puedes implementar un efecto de brillo sin hacer que sea fácil de explotar ... pero ¿qué pasa si usas un medio indirecto de mostrar que alguien está cerca, un medio que también se aplica a los jugadores visibles?
Por ejemplo, ¿qué sucede si los jugadores dejan huellas y se envían mensajes de "huella creada" desde el servidor independientemente de la ubicación del jugador? Cada jugador deja huellas, por lo que no puede hacer que el modelo de huella sea más visible sin cubrir la arena en ellas y hacer que cada impresión individual sea menos notable, pero si un jugador ve aparecer una huella sin un personaje visible, saben que hay alguien allí.
También puede hacer cosas como tener pequeños guijarros que se golpean, susurrar el césped cuando alguien lo atraviesa o las ondas que aparecen cuando alguien se mueve a través del agua. Si los 'signos' solo se aplican a ciertos lugares o materiales, esto podría agregar una estrategia adicional que obligue a los personajes invisibles a moverse con cuidado y evitar cosas que delaten sus posiciones.
fuente
without making it easy to exploit
-> Esto se aplica a todas las mecánicas de juego, no solo a esta en particular.Cuando miras las innumerables otras preguntas sobre cómo evitar las trampas en los juegos multijugador que se encuentran en este sitio, verás fácilmente que realmente no hay una medida técnica para evitar las trampas del lado del cliente.
Todo lo que puede hacer es proporcionar menos información sobre la entidad oculta. Todo lo que el cliente necesita saber para generar el efecto de distorsión es que hay algo oculto en esa posición. Pero no necesita saber nada específico al respecto, como qué es exactamente, cuánta salud le queda y qué está haciendo en este momento. Dependiendo de su juego, eso solo puede ser un déficit de información que cambia el juego para el jugador.
fuente
Sí, cualquier información que envíe al cliente puede mostrarse más obviamente de lo que pretendía. Pero aquí está el truco:
Mitigar el impacto
Claro, el cliente puede tener alguna información, pero al pensar cuidadosamente en qué información está dispuesto a compartir, y en lo que los jugadores pueden hacer con ella, al menos puede mitigar el impacto de los ataques de los clientes.
1. ¿Qué observa el jugador?
a. Ves algo pero no está en el lugar (el puente o el arbusto se mueve, pero es grande, por lo que no sabes a dónde apuntar; los pasos solo se hacen visibles con un retraso de 2 segundos): en este caso, el cliente solo sabe que hay algo, pero no dónde / qué exactamente.
si. Observa algo de una manera diferente (sonido si hay algo en el área; indicación de proximidad como un radar con o sin dirección)
La captura de pantalla en la pregunta parece estar entre 1 y 2, ya que probablemente se basa en información limitada, pero aún puede ver el esquema que podría revelar cierta información.
2. ¿Qué puede hacer el jugador?
Suponga que cree que alguien está en la coordenada XY, ¿qué puede hacer? Aquí hay algunas opciones típicas:
Agresor
Moviente
Si la selección de ruta normalmente se realiza del lado del cliente
fuente
El efecto dominó podría hacerse a través del código de sombreador. Puede deshabilitar el uso de textura en este modo para que el simple cambio de textura ya no sea un problema.
En 3D, cuando el modelo entra en juego, aún puede cambiar el sombreador a uno que simule la refracción, utilizando solo la superficie del modelo, descartando el color. Incluso cuando el modelo se reemplaza de alguna manera, el efecto permanece.
Modificar el sombreador precompilado sería tan difícil como modificar el código del juego y creo que es un nivel más difícil que algunas búsquedas de textura en los archivos del juego.
fuente
Which means that players that change the texture or model or even the game code itself could render the cloak mechanic useless
. Y no veo por qué me perdí la preguntawhether 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: anuncia camuflaje con brillo, B: es más difícil de modificar que el simple cambio de textura. DONDE renderizar realmente es otro lado. Si la posición es lo único que necesitamos para aplicar el efecto dominó, debería ser la única información enviada al jugador.