Cómo evitar la "vista submarina" en los juegos

19

En muchos juegos donde el jugador puede ir bajo el agua, parece que cuando miras dónde está la mitad superior de la pantalla en el aire y la mitad inferior de la pantalla está en el agua, es casi como si el agua no existiera y el jugador está ... volando lentamente con sonidos de agua?

ingrese la descripción de la imagen aquí

¿Hay alguna forma lógica de resolver esto? Un algoritmo? No parece que haya surgido ninguna solución ya que muchos juegos todavía tienen esto. No quiero cometer el mismo error.

LiquidFeline
fuente
44
Los juegos modernos tienen sombreadores que son diferentes para arriba y debajo del agua. Definitivamente no se ve así hoy en día. Creo que Crysis tiene una representación subacuática bastante avanzada: youtube.com/watch?v=yXxEZJdFjeM
MartinTeeVarga
99
@ sm4: Creo que este juego también tiene esta característica. Pero el problema es que la cámara no está debajo del agua, está arriba y puede ver abajo debido al recorte cercano.
Kikaimaru
@Kikaimaru Ya veo, no entendí completamente la pregunta. Sin embargo, Crysis no parece tener este problema.
MartinTeeVarga
2
Aww, pero ¿cómo se supone que debo ver si hay perlas en el fondo del río? (Older Scrolls Oblivion): D
Singular1ty
1
Tal vez podría verificar si el personaje "cabeza" está bajo el agua en lugar de la cámara y no permitir que la cámara se sumerja a menos que el personaje también esté bajo el agua
Luke B.

Respuestas:

16

¿Qué tal simplemente no permitir esta situación?

No sé cómo estás haciendo tu juego, pero si detectas que la vista estará parcialmente bajo el agua, puedes forzar a la cámara a estar sobre el agua, y solo cuando toda la vista esté debajo del agua, puedes cambiar a vista submarina

Dependiendo de cómo lo haga, esto podría significar que hay un retraso adicional desde el momento en que comienza a bucear y cuando realmente ve la escena desde debajo de la superficie. Esto puede ser algo bueno desde una perspectiva UX, así que siéntete libre de experimentar.

En una nota separada pero relacionada, me pregunto por qué la mayoría de las escenas submarinas se vuelven cristalinas ... Si alguna vez sumerges la cabeza bajo el agua, notarás que tus ojos no están diseñados para la vista submarina y, por lo tanto, todo parece borroso. Tendría que usar gafas para ver claramente bajo el agua.

Y además, las cosas se ven (y oyen) muy diferentes bajo el agua que sobre el agua. El agua absorbe la luz mucho más rápido que el aire, por lo que cuanto más se aleja la luz, menos luz llegará a sus ojos. Esto significa que cuanto más profundizas, más azules se ven las cosas (la luz roja tiene menos energía y, por lo tanto, se absorbe más fácilmente que la luz azul). De hecho, a solo 12 metros bajo el agua, la sangre se ve negra, no roja.

Todavía no he visto un juego no especializado que incluso intente conseguir entornos subacuáticos correctamente ...

Pijama Panda
fuente
55
Muchos juegos cambian la luz y el sonido bajo el agua. Vea el video de Crysis vinculado en los comentarios anteriores. Estoy seguro de que no es perfectamente realista, pero (a) la mayoría de las personas no tienen experiencia directa con entornos submarinos profundos y (b) en juegos que te sumergen bajo el agua, presumiblemente necesitas poder ver para jugar. .
Nathan Reed
Creo que la mayoría de los juegos no hacen esto simplemente porque a nadie le gustaría sumergirse si no ven nada allí. ¡O tal vez todos los personajes principales del juego fueron entrenados por personas Moken! news.nationalgeographic.com/news/2004/05/…
MartinTeeVarga
1
En el desarrollo de juegos, este tipo de solución "médico, me duele cuando hago esto" suele ser la óptima.
Trevor Powell
1
@TrevorPowell: leí tu comentario una docena de veces y todavía no entiendo tu punto. Tal vez te gustaría elaborar?
Panda Pyjama
2
Disculpas! Es una referencia a un viejo chiste de vodevil . La broma dice algo como esto: Paciente: "¡Doctor, me duele cuando hago esto!". Doctor: "¡No hagas eso!" Solo quería decir que en los juegos, a menudo la forma más simple de resolver un problema es evitar que el juego llegue a un estado en el que el problema debe resolverse. (por ejemplo: la forma más fácil de arreglar "los gráficos se ven mal cuando el plano cercano al clip se cruza con la superficie del agua" es "no permita que el plano cercano al clip se cruce con la superficie del agua")
Trevor Powell
7

El problema al que te refieres tiene que ver con el recorte del volumen de visión de la cámara a través del plano de agua; Los "efectos subacuáticos" típicos se realizan a través de los efectos posteriores al proceso de pantalla completa, y no se verían correctos si la vista se recortara de esta manera (sería el problema opuesto).

Incluso si te molestas en detectar el caso de recorte (potencialmente difícil) y tijeras o recortes el efecto subacuático de pantalla completa para que solo se aplique a la escena subacuática (que es una posible solución que podrías explorar), aún tendrías el problema del propio plano de agua en sí. La transición allí todavía sería un artefacto visual discordante. Podías detectar ese avión y difuminarlo fuertemente; Esto es probablemente lo más cercano que puede llegar a una analogía del mundo real de lo que puede ser la vista a través de una lente de cámara parcialmente sumergida.

Alternativamente, evite que esto suceda por completo: no deje que la cámara vaya debajo del plano de agua si el jugador está "por encima" del agua o por encima del plano de agua cuando el jugador está "debajo" del agua. Esto solo funcionará realmente si tiene modos de operación discretos del jugador para arriba / debajo del agua, y funciona mejor si hay un botón físico u otra acción clara y obvia que el jugador puede tomar para la transición entre "nadar en la superficie" y "nadar debajo la superficie."

En lugar de presionar una tecla explícitamente para bucear, puede interpretar el movimiento hacia adelante mientras la cámara está inclinada lo suficiente como para significar "bucear". Luego puede usar un efecto gráfico (salpicaduras o lo que sea) para ocultar la transición de la cámara a través del plano del agua, que normalmente no podría cruzar.

Utilizamos una técnica como esta en Guild Wars 2.


fuente
3

Los juegos suelen activar algún tipo de efectos, principalmente niebla azul, cuando la cámara está bajo el agua. Para manejar la situación en la que el plano cercano atraviesa la superficie del agua, puede encender el sombreador de niebla cuando la cámara se acerca a la superficie del agua, pero luego agregar un código al sombreador de píxeles que calcula el punto en el plano cercano correspondiente a ese píxel, y activa la niebla solo si ese punto está debajo de la superficie del agua.

Si la niebla se realiza como un proceso posterior, al hacer un pase de pantalla completa, esto es especialmente fácil: solo tiene que calcular la posición en el espacio mundial de cada vértice del quad o triángulo de pantalla completa en el plano cercano (con el inverso ver / matriz de proyección) e interpolar este valor al sombreador de píxeles; entonces puede verificar su componente vertical y ver si está por encima o por debajo del plano de agua.

Para obtener puntos de bonificación, puede usar la misma técnica para agregar una textura de unos pocos píxeles de grosor para representar el menisco en la superficie del agua, por lo que no se parece tanto a una línea afilada.

Nathan Reed
fuente
(tiene problemas si la superficie del agua es una malla, pero sigue siendo una gran respuesta general)
Será el
0

Tengo dos métodos; Uno usa un sombreador, el otro podría usar una GUI. Ambos comenzarán igual:

"Simplificado" - If, Object(Camera) is in 3d Space(Water bounding box/whatever you choose) trigger a shader/GUI.

Shader le dará más realismo, puede aplicar una distorsión como esta

Niebla como Com. Boy declaró, se puede aplicar a través de GUI. Cree una foto, con una transparencia parcial y úsela como GUI en toda la vista de la cámara. Para la foto que proporcionaste, probaría un color marrón.

Esto se ha utilizado en un juego de terror llamado Drea D Out. Si el jugador se acercara a un fantasma, la pantalla se nublaría. Aunque no se usó bajo el agua, dio un efecto similar :)

Siempre puede elegir ambos métodos o hacer un sombreador que cambie el color.

http://media.indiedb.com/images/games/1/21/20833/Demo_update_SS01.png

Taken from : http://sahdan-share.blogspot.com/2013/04/dreadout.html
Mikolaj Marcisz
fuente