Sanguinario_Joe

| 368 envíos |  | Desconectado | 2266 lecturas 24 respuestas | | SonSilentSea.- 2ª entrega | 04-03-2010 a las 06:40:18 |
Aqui viene la segunda entrega del SonSilentSea, un juego de codigo abierto (aun no esta abierto, pero lo va a estar) que estoy desarrollando. Son una tanda de imagenes con lo nuevo del codigo (tal vez grabe un viedeo algun dia):  Ahora se dispone de menú mediante las librerías CEGUI, muy bien integradas en OGRE. El menú se alimenta de archivos XML, lo que haara el juego personalizable (pudiendo introducir nuevos capitulos, ...).  Las sombras se han cambiado de PSSM (Parallel Split Shadow Maps) a LiSpSM (Light Space Shadow Maps), que aunque parezca un paso atrás, lo cierto es que dan menos problemas, y son más rápidas.  Se han insertado nubes volumétricas, que son una ligera modificación de las incluidas en el magnífico código de Xavier Verguín González, llamado SkyX.  He creado un gestor de audio, que mediante las librerias Vorbis, OpenAL, y ALUT, son capaces de hacer streaming de archivos OGG, y ademas de leer su información (artista y título). Por ahora sólo ase usa para insertar banda sonora.  El flujo de tiempo puede ser alterado. Han sido corregidos algunos pequeños problemas que existían.  Y una última imagen. Creo que en este momento ya hay suficiente trabajo hecho como para empezar a documentarlo un poco, y así poder liberarlo por primera vez. Me gustaria liberarlo en esta pagina, montando algun svn, o con un enlace a sourceforge o algo asi. Pero eso sera cuando tengamos area de proyectos! Saludos!!! Una causa es la causa de la siguiente. Y la suma de las causas es la causa del desastre. (Principios de la causalidad de Pepe) Responder | Citar | Moderar | Mensaje Privado |
|
zyxu

| 118 envíos |  | Conectado |
#1 |
Y esto tu solito... vaya pasada!! tío te está quedando genial la verdad se ve que manejas eh!!! joder, eres un crack! espero que a tu novia le guste porque si no... no te merece!! jaja Espero que todo ese conocimiento lo vuelques en la página...  aunque supongo que te llevaría mucho tiempo... "Quien salva una vida, salva al mundo entero" Responder | Citar | Moderar | Mensaje Privado |
Sorancio

| 307 envíos |  | Desconectado |
#2 |
Es acojonante  , un gran trabajo Sanguianario_Joe, que currada. Para publicarlo, puedes usar Git o SVN, desde mi punto de vista, los mejores (aunque Git es mejor que SVN  ). Una pregunta, ¿como se forman las nubes volumétricas?
Responder | Citar | Moderar | Mensaje Privado |
Sanguinario_Joe

| 368 envíos |  | Desconectado |
#3 |
Nunca he usado un repositorio, y no se mucho al respecto (bueno si, he usado repositorios para descaragar, pero nunca he participado activamente en uno, ya que las mejoras que he hecho a softwares siempre las he enviado por mail). De todas formas, el codigo, aunque esta muy estructurado, adolece claramente de falta de comentarios, asi que de momento no lo voy a liberar, hasta que sea legible de verdad (aunque no voy a seguir desarrollando hasta entonces). Ademas me gustaria que alguno/algunos/todos (  ) vosotros entrarais al trapo, y se convirtiera en el primer proyecto oficial (a parte de la web en si, que nunca me cansare de felicitar a Marcos) del GAP. Pero para eso primero habre de contaros algunas cositas. Las nubes volumetricas, hay 101000 formas de hacerlas, todas ellas complicadas  . Esta concretamente no la he escrito yo, yo solo la he modificado ligeramente para adecuarla a mis necesidades, y mejorarle un cierto problemilla de rendimiento que tenia. Pero la idea es crear una matriz de data (128x128x32) que controla dos cosas (aunque contiene mas datos), la densidad del punto y el scatering. Esta matriz se vuelca sobre una textura 3D. Luego esa data (la textura) se imprime sobre una geometria que consiste en unos cubos que te rodean. Este sistema es visualmente muy bueno, y se gestiona muy bien, pero tiene el problema de que no se puede atravesar las nubes. Si quieres atravesar nubes, lo más interesante es que uses particulas. Cada particula sera un plano que mira constantemente a la camara, y que tiene como textura ruido. Luego el shader creara una distribucion del alpha segun una distribucion de gauss (u, v desde -1 hasta 1). Cada particula tendrá un radio y una densidad aleatorias. El primer tipo es el que tienes en las imagenes. El segundo tipo lo estoy desarrollando en mi trabajo (da buenos resultados tambien). Si tienes algun interes especial te puedo pasar este codigo e informacion. Saludos!!! Una causa es la causa de la siguiente. Y la suma de las causas es la causa del desastre. (Principios de la causalidad de Pepe) Responder | Citar | Moderar | Mensaje Privado |
lompa

| 150 envíos |  | Desconectado |
#4 |
M'encanta! Eres muy bueno! Me gustaria llegar algun dia a tu nivel, impresionante. Saludos!
Responder | Citar | Moderar | Mensaje Privado |
Sorancio

| 307 envíos |  | Desconectado |
#5 |
Siendo tu caso no necesitas la segunda opción, entonces, Sanguinario_Joe. Ya que los submarinos no vuelan y no pasan por las nubes. Aún así, es muy interesante lo que he conseguido entender (voy muy pez (já, que casualidad que sea un juego en el agua) en el tema gráfico). Pensando en peces, se podría añadir entidades que sean naturaleza y que se comporten como tal. Los peces que purulen por ahí y que se asusten al verte, algas que solo se muevan como muñecos que saludan como idiotas (si no se ha visto el capítulo de padre de familia no se entiende  ). Y estando un poquito en las nubes, no sería mejor hacer una superficie formada por triángulos X triangulos, y que cada triangulo fuese ruido? Al no tener que interactuar con ellas sería más eficiente ya que son solo 20 triángulos como mucho. No se, yo pienso así, puedo estar equivocado y pecando de poca información  .
Responder | Citar | Moderar | Mensaje Privado |
Sanguinario_Joe

| 368 envíos |  | Desconectado |
#6 |
No claro, las nubes por particulas no las voy a usar aqui, pero es que en el trabajo hacemos simuladores de vuelo (y alli si toca poner nubes que se puedan atravesar).
De todas formas aqui si van a aparecer aviones (el avion era el peor enemigo del submarino de la segunda guerra mundial), pero ya lidiare con ellos (probablemente no haya demasiado problema con objetos que no sean la propia camara).
Si se pueden hacer peces? Of course! Y mu�ecos de esos que por un escedente en el pedido estan de oferta. Al final se tratan como particulas (algo parecido, un plano que va nadando por ahi, y cuya textura es un pez aleteando). Las algas se pueden pintar como decals sobre el agua.
Pero claro, hay que hacerlo... Y no esta entre mis prioridades.
----
Lo que planteas de usar triangulos el problema que tiene basicamente es que para eso tienes que, al menos, crean tres nubes (una dentro de otra). Los resultados no son excesivamente buenos, y la textura de la nube la tienes que aportar tu (un dibujo de una nube).
Eso resta toda posibilidad de que las nubes evolucionen.
----
Hay otra alternativa bastante chula, que yo estuve a punto de usar, y es una evolucion de las nubes planares. Creas un plano grandote, y le aplicas una textura, que es donde metes el calculo de la nube, y como?
Pues haces un RTT, y alli calculas la nube (se hace mediante GP-GPU). las nubes al final siempre son:
Que probabilidad tiene un punto de convertirse en nube. Que probabilidad tiene un punto de dejar de ser nube. Que densidad trafica con los puntos de alrededor suyo.
Saludos!!!
----
PD.- Con particulas, 250 particulas por nube es suficiente (frente a los triangulos, no va muy jodido) Una causa es la causa de la siguiente. Y la suma de las causas es la causa del desastre. (Principios de la causalidad de Pepe) Responder | Citar | Moderar | Mensaje Privado |
Sorancio

| 307 envíos |  | Desconectado |
#7 |
Como mola tu trabajo  El problema que encuentro con los aviones es la luz y el agua. Me explico, cuándo ocurre una explosión en el agua o entra un misíl, se crean ondas y esto se debe de ver, lo mismo ocurre con la luz, que es dinámica y debe cambiar cada dos por tres. ¿No necesitaría mucha CPU y GPU? Es que el tema de los simuladores y videojuegos me fascina  . Entiendo, ¿y dependiendo del punto de vista se ve de distinto angulo la textura del pez aleteando? ¿Es que por partículas no necesitará demasiada demanda para un juego en que las nubes (personalmente creo) pasan a segundo plano? Deberás siempre vigilar el agua, no el cielo. Además si no me equivoco, los submarinos de la época tenían detectores, así que no hacía falta vigilar constantemente. Parece fascinante el sistema, pero no tendrá mucha demanda de la CPU? Hay que hacer el cálculo de la densidad a través de cada partícula de cada nube, ¿no? ¿El tamaño de cada partícula es fijo o variable?
Responder | Citar | Moderar | Mensaje Privado |
Sanguinario_Joe

| 368 envíos |  | Desconectado |
#8 |
Bueno, es como todo, tiene sus cosas buenas, y sus cosas malas, pero no me quejo! estoy agusto! De todas formas aqui si van a aparecer aviones (el avion era el peor enemigo del submarino de la segunda guerra mundial), pero ya lidiare con ellos (probablemente no haya demasiado problema con objetos que no sean la propia camara).
El problema que encuentro con los aviones es la luz y el agua. Me explico, cuando ocurre una explosión en el agua o entra un misíl, se crean ondas y esto se debe de ver, lo mismo ocurre con la luz, que es dinámica y debe cambiar cada dos por tres. ¿No necesitaría mucha CPU y GPU? Es que el tema de los simuladores y videojuegos me fascina .
Bien, cuando un objeto entra en el agua, y planeas simularlo, tienes dos opciones: 1.- Lo escondes con las particulas de agua que salpican. 2.- Haces menos particulas y creas ondas. Para mi lo de crear ondas no es una alternativa muy buena, ya que no encaja muy bien con hydrax tratar de manipular la superficie libre (malla que simula el agua). Respecto a si una vez manipulada la superficie afectaría, pues es un problema añadido, ya que los reflejos en el agua se hacen de una forma absolutamente "patatera", pero muy eficiente. Se pone una camara simetrica respecto del plano del agua, y se hace una foto, y luego se pinta sobre la superficie deformandola con algun tipo de ruido (Perlin en este caso). Claro, si metes ondas se te va todo a la mierda a toda velocidad. Si se pueden hacer peces? Of course! Y muñecos de esos que por un escedente en el pedido estan de oferta. Al final se tratan como particulas (algo parecido, un plano que va nadando por ahi, y cuya textura es un pez aleteando). Las algas se pueden pintar como decals sobre el agua.
Pero claro, hay que hacerlo... Y no esta entre mis prioridades.
Entiendo, ¿y dependiendo del punto de vista se ve de distinto angulo la textura del pez aleteando?
El plano siempre es vertical (en realidad no del todo, se vuelca un poco, y se corrige segun la posicion de la camara, para que siempre se vea), y los peces son unos bichos bastante finos, como para que mezclado con el efecto fresnel no de ningun problema. Lo que planteas de usar triangulos el problema que tiene basicamente es que para eso tienes que, al menos, crean tres nubes (una dentro de otra). Los resultados no son excesivamente buenos, y la textura de la nube la tienes que aportar tu (un dibujo de una nube). Eso resta toda posibilidad de que las nubes evolucionen.
¿Es que por partículas no necesitará demasiada demanda para un juego en que las nubes (personalmente creo) pasan a segundo plano? Deberás siempre vigilar el agua, no el cielo. Además si no me equivoco, los submarinos de la ¿poca tenían detectores, así que no hacía falta vigilar constantemente.
Joder, cuantas cosas... Bueno, en un principio, cielos normalitos no dan problemas, si la cosa se complica, mandas el cálculo a otros procesador (a la GPU las partículas no les hace mucho daño). Si se complica más, ya tienes que usar técnicas avanzadas, como por ejemplo, impostors. Básicamente consiste en hacer evolucionar sólo las entidades que se ven desde la cámara (con especial cuidado de los reflejos). Respecto a si los submarinos tenían detectores... 1.- Casi ningún buque de la segunda guerra mundial dispuso de algún tipo de sistema de radar hasta bien avanzada ésta. 2.- Aun cuando disponían de radar, el radar no funcionaba cuando llovía, y no era demasiado fiable (era dificil distinguir un acorazado de una isla). 3.- Otro tema era el sonar. Los submarinos de siempre contaron con un sonar, aunque los destructores tardaron un poco mas, pero aun asi: 3.1.- El submarino pocas veces podia emplear el sonar activo (el tipico pulso que se ve en las peliculas), ya que eso delataba su presencia y posicion (la principal arma del submarino era el sigilo). 3.2.- Las baterias de los submarinos eran limitadas, y el oxigeno tambien, razon por la que navegaban por superficie hasta, o tener un contacto, o saber a ciencia cierta que se encontraban cerca de un blanco/amenaza. Y ese ultimo punto es el curioso, mejor que el radar, funcionaba el ver el humo de los barcos. El submarino era un cacharro pequeñito, que tampoco consumia demasiado, asi que apenas emitia humo. Pero los barcos si que lo hacian, asi que si un submarino divisaba humo en el horizonte, se metia bajo el agua y se acercaba para guiarse por el sonar pasivo. Una vez estuviera cerca sacaban el periscopio, y pum!
Hay otra alternativa bastante chula, que yo estuve a punto de usar, y es una evolucion de las nubes planares. Creas un plano grandote, y le aplicas una textura, que es donde metes el calculo de la nube, y como?
Pues haces un RTT, y alli calculas la nube (se hace mediante GP-GPU). las nubes al final siempre son:
Que probabilidad tiene un punto de convertirse en nube. Que probabilidad tiene un punto de dejar de ser nube. Que densidad trafica con los puntos de alrededor suyo.
Parece fascinante el sistema, pero no tendrá mucha demanda de la CPU? Hay que hacer el cálculo de la densidad a través de cada partícula de cada nube, ¿no?
No, tendrá mucha demanda de la GPU, pero las GPU son mucho mas potentes que las CPU (actualmente 480 vs 8 cores).
PD.- Con particulas, 250 particulas por nube es suficiente (frente a los triangulos, no va muy jodido)
¿El tamaño de cada partícula es fijo o variable?
Cada partícula tiene un tamaño, posición y densidad aleatorios, no obstante, para garantizar que toma aspecto de nube, yo creo las particulas del centro para fuera, es decir, la primera particula siempre está invariablemente en el centro de la nube, y luego las voy permitiendo que el random las aleje progresivamente. La mera probabilidad consigue un aspecto muy bueno. Saludos!!! Una causa es la causa de la siguiente. Y la suma de las causas es la causa del desastre. (Principios de la causalidad de Pepe) Responder | Citar | Moderar | Mensaje Privado |
Sorancio

| 307 envíos |  | Desconectado |
#9 |
Es fascinante como se trabaja con gráficos en un videojuego. Ya estoy deseando aprender OpenGL aún más.
Por cierto, ¿cuándo tendremos la primera beta pública jugable? :D
Responder | Citar | Moderar | Mensaje Privado |
Sawyer

| 62 envíos |  | Desconectado |
#10 |
Wow, Sanguinario, genial tu trabajo, esta demasiado bueno te felicito, la pregunta es como has llegado a saber hasta ese punto tantas cosas, me encantaría llegar a saber todo eso, no se como aún pero algo se me ocurrirá para seguir aprendiendo. "Las mejores cosas ocurren, cuando menos las esperamos" Responder | Citar | Moderar | Mensaje Privado |