Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Vandalism en 07 de Febrero de 2006, 09:42:41 PM

Título: Sistema De Partículas 2d
Publicado por: Vandalism en 07 de Febrero de 2006, 09:42:41 PM
 Pues eso...necesito implementar un sistema de partículas para trabajar conjunto con sdl, que puedo usar ??? es para hacer sacar fuego a las naves que sean impactadas con misiles, en un juego que estoy haciendo .

gracias de antemano!!!
Título: Sistema De Partículas 2d
Publicado por: TheAzazel en 07 de Febrero de 2006, 09:51:21 PM
 hace unos meses colson estuvo con un sistema de particulas... no era para SDL pero eso da igual.

lo mismo si nos lee nos puede enseñar lo que hizo porque por mi parte, quiero incluir un sistema de particulas a CRM32Pro....
Título: Sistema De Partículas 2d
Publicado por: Capiflash en 07 de Febrero de 2006, 10:45:46 PM
 Yo tb estaria interesado en un sistema de particulas 2D para SDL , a ver si alguno alumbra un poco
Título: Sistema De Partículas 2d
Publicado por: TheAzazel en 09 de Febrero de 2006, 10:49:12 AM
 Nadie dice nada????

:(  
Título: Sistema De Partículas 2d
Publicado por: javiel en 09 de Febrero de 2006, 11:11:44 AM
 Yo tb estoy liado con eso. Estoy programando desde hace un tiempo en SDL y ahora me he pasado a SDL con OpenGL. Creo que un sistema de particulas mas o menos decente en 2D necesita de OpenGL para poder hacerlo. Llevo poco tiempo con OpenGL pero creo que es lo mejor. No se que opináis al respecto. A lo mejor lo que necesitas lo haces con SDL directamente pero sobretodo a la hora de colorear las imágenes, OpenGL puede hacer unos efectos muy chulos. El otro día por aqui me pasaron esto:

http://pagina.de/fx-code

en descagas tienes un fuego hecho con OpenGL. Espero que te sirva. No se si has pensado el pasar tu juego a SDL+OpenGL, pero puede ser una buena idea si no lo has hecho ya. Yo llevo haciendo un juego (matamarcianos) desde hace dos años en SDL y portarlo a SDL+OpenGL es demasiado, pero estoy liado con otro juego más pequeño y lo he portado en 1 semana y estoy bastante contento pq el rendimiento es mucho mejor y me das más posibilidades (rotar, escalar, etc...)

Lo digo desde mi poca esperiencia en estos temas, sólo es lo que me parece ¿que os parece usar OpenGL para 2d?

un saludo
Título: Sistema De Partículas 2d
Publicado por: [EX3] en 10 de Febrero de 2006, 12:34:42 AM
 
Cita de: "javiel"Creo que un sistema de particulas mas o menos decente en 2D necesita de OpenGL para poder hacerlo.
Imagino que esto lo diras en caso de tener que desarrollar con SDL, no? por que saliendo de SDL, Direct3D tampoco es mala opcion (no vayamos a iniciar otro flame sin fin OGL Vs DX :P)

Aun con todo esto, SDL por si misma (modo software, sin aceleracion via OGL) no generaba tambien efectos de alphablending como aditivos y sustrativos entre otros? Fenix por ejemplo usa SDL y sin aceleracion via OGL y genera tales efectos con resultados mas que decentes.

No se, pero creo que la parte grafica no es lo esencial en un sistema de particulas si no el propio sistema de particulas en si, el codigo que genera las coordenadas de donde tiene que ir cada particula, me explico, no?

Salu2...
Título: Sistema De Partículas 2d
Publicado por: ZüNdFoLGe en 10 de Febrero de 2006, 02:33:11 AM
 
Cita de: "[EX3"]
Cita de: "javiel"Creo que un sistema de particulas mas o menos decente en 2D necesita de OpenGL para poder hacerlo.
Imagino que esto lo diras en caso de tener que desarrollar con SDL, no? por que saliendo de SDL, Direct3D tampoco es mala opcion (no vayamos a iniciar otro flame sin fin OGL Vs DX :P)
Un sistema de partículas "mas o menos decente en 2d" no necesita para nada de OGL para poder hacerlo. Dependiendo de la implementación, el motor influye solamente a la hora de desplegar la posición de la partícula por pantalla, al intercambiar una partícula por un sprite o un modelo 3d o a la hora de detectar colisiones de partículas con objetos. En muchos casos la partícula es tan solo un pixel.

Citar
No se, pero creo que la parte grafica no es lo esencial en un sistema de particulas si no el propio sistema de particulas en si, el codigo que genera las coordenadas de donde tiene que ir cada particula, me explico, no?

Exactamente, luego de crear una partícula el proceso de animación se basa en actualizar la posición en base a la velocidad, aceleración y dirección que haya tomado inicialmente, y obviamente modificar la velocidad y energía de cada partícula. La energía podría considerarse para el tiempo de vida de una partícula, asi cuando la energía sea menor que la tolerancia ("energía mínima") la partícula en cuestión dejará de existir. Otra parte importante y que también ifluye el motor es a la hora de detectar la colisión de la partícula con algún objeto (hablando de un sistema de particulas "decente"), habrá que modificar la posicion, dirección, velocidad y energía de cada partícula. Al final del ciclo anterior se muestra la partícula en base a su posición resultante. Esto no es nada de otro mundo.

Las partículas son animadas en base a reglas que dependen del modelo en particular. No es lo mismo una explosión de un misil contra una pared que una explosión aérea, y también dependiendo del modelo en particular pueden variar las características de cada partícula.

Tengo unas clases de un sistema de partículas que usé para explosiones de un juego 2d, podría mejorarlo y adaptarlo mismo a sdl para que sea facil de entender. Avisaré por aquí cuando lo haga  (ole) . Para adaptarlo a 3d simplemente hay que considerar otra coordenada, pero los algoritmos son exactamente iguales.
Título: Sistema De Partículas 2d
Publicado por: javiel en 10 de Febrero de 2006, 08:30:48 AM
 
CitarTengo unas clases de un sistema de partículas que usé para explosiones de un juego 2d, podría mejorarlo y adaptarlo mismo a sdl para que sea facil de entender.

Eso sería muy interesante. Yo por lo menos espero con inpaciencia ;-)

Por lo demás cuando dije lo de OGL era por el tema de rendimiento. SDL tiene sus cosas, pero por ejemplo en las rotaciones y para escalar son muy chungos y no se puede abusar de ellos, por lo menos es mi experiencia

De todas formas era la opinión de mi corta experiencia en esto de los videojuegos, seguiré aprendiendo ;-)

saludos a todos
Título: Sistema De Partículas 2d
Publicado por: TheAzazel en 10 de Febrero de 2006, 10:42:07 AM
 Tambien espero esas clases de particulas...mas q nada para no reinventar la rueda :)


javiel, obviamente hacer rotaciones y escalados con SDL no es lo mas optimo ya que se tendra que hacer por software.... pero vamos, con un par de trukis puedes conseguir velocidades decentes siempre y cuando al escalado le pongas restricciones(por ejemplo q solo sea 2x,4x,8x,etc..)
Ademas, SDL tiene integrado un backend que utiliza OpenGL para acelerar lo 2D, se llama glSDL y es la leche, yo estoy agregando este backend a CRM32Pro que sera, junto con lo que estoy ahora y quizas un sistema de particulas el final de su desarrollo.

saludos
Título: Sistema De Partículas 2d
Publicado por: javiel en 10 de Febrero de 2006, 11:56:36 AM
 no conocía lo de glSDL. ¿como va eso? ¿para que sirve exactamente?

Yo estoy trabajando SDL+OGL, uso SDL para la creación de la ventana, reconocimiento de eventos y esas cosas, y OpenGL para poder trabajar con texturas y las cosas van muy rápidas. Pero tengo un juego que espero terminar en breve y pasarlo todo a esta forma de trabajo es muy costoso ya que está casi finalizado

¿glSDL me ayudaría a mejorar el rendimiento del juego sin tener que hacer demasiado cambios? Supongo que no será sencillo pero ¿que opinas?

Me puedes pasar algo de información, voy a buscar en google

saludos

Título: Sistema De Partículas 2d
Publicado por: TheAzazel en 10 de Febrero de 2006, 11:44:59 PM
 En teoria, usar glSDL es muy sencillo y no hay q cambiar casi nada....

puedes encontrar mas detalles aqui:

http://icps.u-strasbg.fr/~marchesin/sdl/glsdl.html


pero vamos, si ya te has metido con OpenGL+SDL lo mismo muy util no te es...todo es cuestion de para que lo vas a usar...por ejemplo, portar un proyecto es muy sencillo, yo he pasado los mios con solo recompilar :) y ahora utilizan aceleracion opengl en 2d por todo el morro :P
Título: Sistema De Partículas 2d
Publicado por: javiel en 11 de Febrero de 2006, 01:00:27 PM
 cuando hablabas de glSDL pensaba que era una librería que había que agregar al proyecto. Este artículo que dices parece que es como una serie de criterios a seguir pero no tienes que instalarle nada al juego.

Muchas de las cosas que pone ya las hago, pero me lío un poco pq no se realmente lo tengo todo bien hecho.

En tu proyeto ¿que haces? ¿Sigues esos pasos y ya está?

Otra cosa es esto:

export SDL_VIDEODRIVER=glSDL

que yo no lo pongo en Linux. La verdad que estoy un poco liado con el glSDL, seguiré buscando

gracias por todo
Título: Sistema De Partículas 2d
Publicado por: TheAzazel en 14 de Febrero de 2006, 11:30:41 AM
 Es facil javiel, SDL es una API de alto nivel que proporciona funciones genericas para por ejemplo y en el caso que nos ocupa, volcar una superficie a video. Pues bien, en las entrañas de SDL utiliza lo que llama backend que no son mas que renderers especificos para cada plataforma, para windows tienes los backend de directx y windib, para linux x11, dga, fbcon entre otros... y que significa todo esto? que cuando tu haces un SDL_BlitSurface() dependiendo del backend que estas utilizando, hara el bliteo con directx,windib,x11,dga...

Cuando compilas SDL puedes indicar que backends incluir, por defecto en la lib que te puedes bajar tiene soporte en windows para directx y para windib pero si quieres, puedes deshabilitar alguno o poner alguno por defecto ya que para cambiar de un backend a otro se utiliza eso que has puesto de:

set SDL_VIDEODRIVER=glSDL o ddraw o windib

digamos que el sistema que tiene SDL para cambiar de backend es usando esta variable de entorno.

Pues bien, hablando de windows... el backend de windib lo hace todo por software y ddraw puedes hacerlo por software o por hardware, cuando utilizas esto ultimo, tu tarjeta grafica realizara todo el bliteo y eso es mucha velocidad...pero desafortunadamente, no hay(o no conozco) ningun driver de ningun fabricante que soporte en ddraw operaciones con alpha, luego todas las transparencias y demas...seran lentisimas al margen de q ya nadie desarrolla nada para ddraw...es algo a extinguir (de hecho en Win64 yo he tenido que deshabilitar todos los backends de directx porque daba problemas) y aqui es donde entra glSDL.

Es un backend mas.. vamos, que no tienes que cambiar casi nada en tu codigo, tan solo seguir un poco las indicaciones del enlace que te di y que es lo que hace esto? pues utiliza aceleracion hardware OpenGL en modo 2D y por tanto todo vuela y ademas... con soporte completo para alpha!!!.

Por el momento, glSDL NO esta incluida en SDL, pero en futuro muy cercano lo estara, por la lista de distribucion que ya hemos pedido varios que lo incluyan porque esta bastante probado, ademas, yo tengo un benchmark en mi web que compara glSDL,ddraw y d3d(gracias a zupervaca jeje) por lo que es bastante posible que para la proxima revision de SDL 1.3 que traera algunos cambios importantes...tambien lo incluya por defecto. Por ahora, si estas interesado en probar glSDL te puedo pasar el link donde te puedes descargar SDL con glSDL incluido pero no es oficial.

bueno, espero que se hayan despejado tus dudas...cualquier cosa ya sabes, dimelo. Por cierto, una curiosidad...porque no utilizaste CRM32Pro? a ti te iria como anillo al dedo...

Saludos
Título: Sistema De Partículas 2d
Publicado por: CoLSoN2 en 14 de Febrero de 2006, 12:27:40 PM
 Oops, no se cómo se me había pasado este thread por alto.

Efectivamente escribí un artículo sobre cómo lo tengo yo montado para crear sistemas de partículas en mi engine 2D. Después de hacerlo descubrí cómo lo hace Torque2D y se me cayeron los cojones al suelo de la envidia, pero realmente yo no necesito nada tan complejo, así que ya me está bien algo sencillo como lo que tengo.  
Título: Sistema De Partículas 2d
Publicado por: TheAzazel en 17 de Febrero de 2006, 04:49:52 PM
 Muchas gracias Colson2, nunca habia leido nada de tu web pero el documento sobre particulas me va a ser util mas que nada para ni reinventar la rueda ni cometer errores tontos jeje

hasta luego!