Particulas, SpriteBatch, no funciona la lluvia. Ayuda por favor

recox

Argentum Online Libre
Hola, hace unos meses se metio en el proyecto de ao-libre una de las mejoras que hay en este foro sobre carga de texturas dinamicas, aqui les dejo el PR que tiene toda la informacion necesaria para entender que se puso, el post y la fuente del codigo.


Y luego de esto, se pusieron las particulas ORE (si no me equivoco, ya que la liberacion de recursos de IAO 1.6.5 trae un monton de estas)

El problema esta en que lamentablemente dejo de funcionar la lluvia por esto. Estoy tratando de poder volver a ponerla (mi escaso conocimiento en motores graficos tampoco es de ayuda) y github no me deja hacer un revert de ese PR (para al menos ver si haciendo eso funciona) ya que hay mucho trabajo por encima de esto.


Personalmente hice 2 intentos para tratar de recuperar la lluvia (Con mi escaso conocimiento en DX8 y motores graficos)


1- Trate de implementar nuevamente las particulas VBGore en un PR limpio como muestro aqui:

Pero lamentablemente el cliente explota al llover


2- Trate de revertir todo tal cual estaba antes de implementar el spritebatch en ese PR, pero hay mas errores que nunca.


Hay alguien que por favor nos pueda dar una mano con esto, ya sea haciendo un revert de lo que haya que hacer en cuanto al engine e implementar algo clasico pero estable o por que no arreglar el fallo que esta provocando esto o mejor aun haciendo una mejor implementacion de estos cambios propuestos..

Yo sinceramente estoy hace como 10 dias intentando sin exito, lamentablemente.

Gracias a este error en particular implementamos en la organizacion revisiones de los PRS de al menos una persona de la organizacion antes de que pueda ser mergeado al master para que el codigo este mas sano, si quieren ser parte de la revision de PRS no duden en decir que se les dara permisos al repo, pero esta es otra historia.

Desde ya gracias.
 

Dr. Lord Fers

Legendario Inmortal Lvl 5
Miembro del equipo
Moderador
Moderador de Tecnología
¿Podrías explicar qué sucede específicamente cuando la lluvia debería aparecer? ¿Estás utilizando la lluvia clásica de Argentum? ¿No es una alternativa utilizar lluvia con partículas?

¡Saludos!

EDIT: off: Acabo de leer el change-log, en lo personal, deberían dejar al usuario elegir entre Software, Hardware o Mixed, algunos drívers viejos de videos integradas con ciertos problemas iban mejor con modo Software, y algunos en Mixed y/o Hardware directamente lanzaban excepciones y crasheaba la aplicación.
 

Franco77

THUSING
Buenas!! Yo lidie con el mismo problema, al usar spritebatch se me rompia la lluvia o todo lo que tenía que ver con partículas.. mándame mp o hablame al discord así te paso mi solución... Porque soy tan colgado que me voy a olvidar
 

recox

Argentum Online Libre
¿Podrías explicar qué sucede específicamente cuando la lluvia debería aparecer? ¿Estás utilizando la lluvia clásica de Argentum? ¿No es una alternativa utilizar lluvia con partículas?

¡Saludos!

EDIT: off: Acabo de leer el change-log, en lo personal, deberían dejar al usuario elegir entre Software, Hardware o Mixed, algunos drívers viejos de videos integradas con ciertos problemas iban mejor con modo Software, y algunos en Mixed y/o Hardware directamente lanzaban excepciones y crasheaba la aplicación.
Mañana subo el error que tira con poner las particulas vbgore ya que voy a estar haciendo un laburo y ando lejos de mi compu con windows.

Sinceramente no tengo ninguna preferencia si son las ORE o las VBGore, o por que no el sistema clasico que decis vos de lluvia, al menos desde la version que empezamos con el proyecto usa particulas la lluvia (aunque lo ideal seria tener una sola cosa para manejar estas cuestiones y que la misma funcione bien.) pero me gustaria poder dejar esto funcionando asi cualquiera que agarre esto pueda agregar climas (personalmente tengo ganas de jugar con estos efectos y tirar remolinos de arena en desiertos) y que funcione la lluvia normal.

Algo que aun no probe (por que no se hacerlo realmente, tendria que jugar un poco mas con las particulas) es poner la lluvia de nuevo como muestro en el primer PR, pero usando las particulas ORE en ves de las VBGore

Me comentaron que con esta opcion pueden bajar mucho los fps por que no tienen muy bien rendimiento, pero habria que probar cuanto baja realmente.


Buenas!! Yo lidie con el mismo problema, al usar spritebatch se me rompia la lluvia o todo lo que tenía que ver con partículas.. mándame mp o hablame al discord así te paso mi solución... Porque soy tan colgado que me voy a olvidar
Dale ahi te hable a ver si lo podemos solucionar. Muchas gracias de antemano.
 

recox

Argentum Online Libre
Todo bien con el trabajo de mierda que hicieron el con alpha y el angulo en el batch del pobre wolfa pero toma, haceme el favorcito


https://pastebin.com/B6gvadN1

besis


off: Las particulas ORE con el batch andan 100 mejor que las del gore. Besis x 2

Primero que nada muchas gracias, si bien seguro hay un monton que cambiar en el SpriteBatch ahora al menos se mejoro un poco arreglando este error: https://github.com/ao-libre/ao-server/issues/198 y al menos no explota cuando trato de poner la lluvia con vbGore (aunque aun no pude renderizarla)

Agregue esto al changelog.
* 02/12/2019: Gracias a Dr. Miqueas150 por la mejora en el manejo de Alpha y Angle. (jopiortiz)
* 02/12/2019: Gracias a @FrankoH298 por el fix de renderizado de sprites. (jopiortiz)

PR agregando estos cambios:


Pregunta.
Si bien estoy tratando de volver a poner la lluvia que estaba anteriormente con vbGore, como se puede poner un efecto de particulas en todo el render con las particulas ORE? Estoy tratando de encontrarle la vuelta pero yo solo veo estas funciones:


Ya que si el rendimiento de las mismas es mejor con lo implementado, seria lo ideal aparte de no tener dos modulos que hacen lo mismo, renderizar particulas.

Estoy buscando info sobre esto y no encuentro, me baje algunos clientes del foro para ver como se renderiza y los que me baje usan o imagenes o las vbGore.
 

Dr. Miqueas150

The Prophet
Ex-Staff
lo que podes hacer es

lluvia


lluvia = generate partiucla ( numero de la particula, coordenada X ficticia, coordenada y ficiticia, vida)


render screen


if lluvia > 0 then
Particle_render lluvia, esto va en pixeles, podes meterle que se yo -50 ,-50 depende de como este la particula creada en el archivo
end if

Eviten la linea de la particula que la guarda ene l mapdata, ya que usan una variable para eso.

cuando termina la lluvia.


if lluvia > 0 then
particula destruir lluvia
lluvia = 0
end if

chau
 
Arriba