• Jueves 28 de Marzo de 2024, 19:07

Autor Tema:  Animacion Suave  (Leído 6180 veces)

JeoV

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Animacion Suave
« en: Viernes 6 de Mayo de 2005, 18:27 »
0
hola salu2 a todos :lol:

Estoy utilizando allegro y quiero lograr una animacion suave, a los de suave me refiero a que el avance de cada cuadro sea lento, yo lo he hecho usando un timer poniendo un tiempo de avance de cuadro a cuadro, pero quiero animar a otros objetos
me pregunto, debo poner un temporizador por cada animacion??

de que manera lo puedo hacer

espero que este bien la forma que estoy utilizando para animar
bueno espero haber explicado bien. :rolleyes:

salu2

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Animacion Suave
« Respuesta #1 en: Viernes 6 de Mayo de 2005, 21:08 »
0
debes usar el timer de allegro, no recuerdo bien el como, pero ejemplos hay por monton en internet.

ok, en un nivel basico seria:
Código: Text
  1.  
  2. int tpersonaje0, tpersonaje1, tpersonaje2;
  3.  
  4. int main()
  5. {
  6.    tpersonaje0= tpersonaje1= tpersonaje2=timer.tiempoactual;
  7.    while(juego)
  8.   {
  9.       dibujarper0();
  10.       dibujarper1();
  11.       dibujarper2();
  12.   }
  13. }
  14.  
  15.  //este personaje se dibuja solo cada 100 milisegundos
  16. void dibujarper0()
  17. {
  18.    int ta = timer.tiempoactual;
  19.  
  20.    if(tpersonaje0+100 <=ta )
  21.   {
  22.      dibujar();
  23.      tpersonaje0=ta;
  24.   }
  25. }
  26.  
  27.  //este personaje se dibuja solo cada 300 milisegundos
  28. void dibujarper1()
  29. {
  30.    int ta = timer.tiempoactual;
  31.  
  32.    if(tpersonaje1+300 <=ta )
  33.   {
  34.      dibujar();
  35.      tpersonaje1=ta;
  36.   }
  37. }
  38.  
  39.  //este personaje se dibuja solo cada 10 milisegundos
  40. void dibujarper3()
  41. {
  42.    int ta = timer.tiempoactual;
  43.  
  44.    if(tpersonaje3+10 <=ta )
  45.   {
  46.      dibujar();
  47.      tpersonaje3=ta;
  48.   }
  49. }
  50.  
  51.  

Espero te sea de ayuda.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

JeoV

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Animacion Suave
« Respuesta #2 en: Sábado 7 de Mayo de 2005, 15:57 »
0
bien juank

veo que solo se usa un timer y con el se obtiene los tiempos de animacion
voy a hacerlo asi, aver como me queda

salu2 y gracias.

L1zb3th

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Animacion Suave
« Respuesta #3 en: Jueves 15 de Marzo de 2007, 20:15 »
0
Cita de: "JeoV"
hola salu2 a todos :lol:

Estoy utilizando allegro y quiero lograr una animacion suave, a los de suave me refiero a que el avance de cada cuadro sea lento, yo lo he hecho usando un timer poniendo un tiempo de avance de cuadro a cuadro, pero quiero animar a otros objetos
me pregunto, debo poner un temporizador por cada animacion??

de que manera lo puedo hacer

espero que este bien la forma que estoy utilizando para animar
bueno espero haber explicado bien. :rolleyes:

salu2
hace esto :

usando el tiempo muerto con un timer ....
usando hilos ..

asi animas los dos objetos lentamente al mismo tiempo
en este tema puse como hacer estop de los hilos :
http://foros.solocodigo.com/index.php?showtopic=24793
si aun asi no lo logras adaptar, avisame, que te enseño..
ya que no hay juego bien hecho que no use hilos ...

Au Revoir !

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Animacion Suave
« Respuesta #4 en: Jueves 15 de Marzo de 2007, 20:22 »
0
Cita de: "L1zb3th"
asi animas los dos objetos lentamente al mismo tiempo
en este tema puse como hacer estop de los hilos :
http://foros.solocodigo.com/index.php?showtopic=24793
si aun asi no lo logras adaptar, avisame, que te enseño..
ya que no hay juego bien hecho que no use hilos ...

Au Revoir !
De donde sacas eso?

por otro lado este hilo es de May 07, [/B]08:57 am
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

[EX3]

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
    • http://dxlib32.se32.com
Re: Animacion Suave
« Respuesta #5 en: Martes 20 de Marzo de 2007, 21:31 »
0
Cita de: "L1zb3th"
hace esto :

usando el tiempo muerto con un timer ....
usando hilos ..

asi animas los dos objetos lentamente al mismo tiempo
en este tema puse como hacer estop de los hilos :
http://foros.solocodigo.com/index.php?showtopic=24793
si aun asi no lo logras adaptar, avisame, que te enseño..
ya que no hay juego bien hecho que no use hilos ...
Los unicos juegos que aprovechan programacion multihilo son en las consolas multiprocesador actuales como la xBox 360 y la recien PS3. Ningun juego comercial para PC o consola monoprocesador implementa multihilo para todas las tareas y raro es el caso que lo usan para la IA, y esto ultimo en juegos muy recientes y que solo funcionan bien aprovechando los procesadores de doble nucleo y similares, los unicos sistemas multiprocesador que veras en PC para el hogar por el momento.

Los juegos se programan estructuradamente y en secuencias de ciclos, donde se puede controlar la coherencia en la actualizacion de los valores de cada objeto o proceso del juego. Implementar un juego todo a base de hilos no solo lo haria inestable y complicado de programar (se nota que no has programado mucho en multihilo) si no que ahogarias al procesador (recuerda que tu juego corre junto a mas programas y procesos del sistema operativo).

La programacion multihilo como ha comentado Juank se usa para operaciones puntuales pero que necesitan cierta prioridad frente al hilo principal del programa. Para lo unico que uso yo multihilo en mis proyectos es para los tiempos de carga donde alojo la carga de archivos en un hilo y la pantalla de carga animada en el principal actualizandose independientemente para que se vea fluida, pero uso un hilo, no 300.

Salu2...

L1zb3th

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Animacion Suave
« Respuesta #6 en: Lunes 2 de Abril de 2007, 05:48 »
0
el que uds no sepan manejar hilos es otro tema, para algo estan la variables globales como ej..
ademas he corrido hasta 6 hilos sin problemas en una P3 770 Mhz 128 de ram ...
con winxp ...
el doble nucleo y hiperthreading no tienen nada que ver en lo que decia ya que el so reparte el acceso a los recursos, ademas no consumen tanta maquina...
caso que debas pausar uno tenes un Suspend o mediante una variable global haces un Sleep, no es tanto el drama de los hilos....

si uds no lo saben usar, cosa suya, a mi me sirvieron de 10....
y lo secuencial si bien es seguro es mas embrollado para mi ...
yo divido todo en funciones aparte y es mas facil...
por que sino te queda un while mas grande que la mierda y ademas de que es poco viable si alguna funcion es bloqueante ..........

Au Revoir !

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Animacion Suave
« Respuesta #7 en: Lunes 2 de Abril de 2007, 06:38 »
0
LAMENTO DECIRTE QUE ESTAS EQUIVOCAD@.

El problema con los hilos es que solo funcionaran en juegos pequeños y te exigirán mucho mas trabajo en tiempo de codificación y recursos de máquina... nada de eso es bueno.

Los hilos no se usan como tu dices ni en los juegos 2d mas básicos ni en los juegos 3d mas complejos, de que fucionan... puede que si... pero solo en juegos pequeños y realmente la relacion costo beneficio se va a perdidas.

Te recomiendo que te asesores mas acerca de fundamentos de programación de videojuegos para que evites invertir mucho esfuerzo en algo que realmente no vale la pena.


www.vjuegos.org
www.gamedev.net
http://www.gamasutra.com/
www.gamedev.org
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Animacion Suave
« Respuesta #8 en: Lunes 2 de Abril de 2007, 06:42 »
0
Cita de: "L1zb3th"

ademas he corrido hasta 6 hilos sin problemas en una P3 770 Mhz 128 de ram ...
con winxp ...
el doble nucleo y hiperthreading no tienen nada que ver en lo que decia ya que el so reparte el acceso a los recursos, ademas no consumen tanta maquina...
caso que debas pausar uno tenes un Suspend o mediante una variable global haces un Sleep, no es tanto el drama de los hilos....

 
Lamento decirte...
pero eres muy ignorante respecto al tema... demasiado ignorante.

Ese conocimiento teorico es  basico y estas demostrando que no lo sabes.
Citar
y lo secuencial si bien es seguro es mas embrollado para mi ...
yo divido todo en funciones aparte y es mas facil...
por que sino te queda un while mas grande que la mierda y ademas de que es poco viable si alguna funcion es bloqueante ..........

eso solo es cierto si programas como se hacia hace 20 o 30 años es decir programación secuencial, ya eso no se usa
Se programa estructurado por módulos y sino mil veces y preferible POO...

para dejar de usar secuencial no necesitas hilos, necesitas cambiar de paradigma y pensar diferente.

Deja ya el orgullo y la soberbia y date cuenta que andas en pañales no solo en vgames sino en conceptos de programación y de SO.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

[EX3]

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
    • http://dxlib32.se32.com
Re: Animacion Suave
« Respuesta #9 en: Miércoles 4 de Abril de 2007, 18:35 »
0
Cita de: "L1zb3th"
el que uds no sepan manejar hilos es otro tema, para algo estan la variables globales como ej..
ademas he corrido hasta 6 hilos sin problemas en una P3 770 Mhz 128 de ram ...
con winxp ...
Genial, yo logre 16 hilos en un programa mediante cronometros de sistema en un Pentium 2 400 mhz y para colmo escrito en Visual Basic 6.0, lenguaje que no se lleva nada bien con la programacion multihilo. Beneficio? Ninguno, mas consumo de procesador y menos control del codigo ejecutado (y en mi caso, peor organizacion de codigo ya que desde VB 6.0 ni si quiera puedo lanzar funciones de clases en hilos paralelos lo que no me permitia la reultilizacion de codigo)

Cita de: "L1zb3th"
el doble nucleo y hiperthreading no tienen nada que ver en lo que decia ya que el so reparte el acceso a los recursos, ademas no consumen tanta maquina...
caso que debas pausar uno tenes un Suspend o mediante una variable global haces un Sleep, no es tanto el drama de los hilos....
Para nada, claro. El drama se resume en que pierdes la eficacia y el beneficio de la ejecucion separada por hilos al hacer las pausas. Al final acabas obteniendo el mismo resultado que ejecutaras un solo hilo pero complicandote la vida y gastando mas procesador. Eso en una consola quizas de igual ya que tienes el/los procesador/es dedicados totalmente al juego y no a centenas de programas en segundo plano.

Cita de: "L1zb3th"
si uds no lo saben usar, cosa suya, a mi me sirvieron de 10....
y lo secuencial si bien es seguro es mas embrollado para mi ...

yo divido todo en funciones aparte y es mas facil...
por que sino te queda un while mas grande que la mierda y ademas de que es poco viable si alguna funcion es bloqueante ..........
Si programaras con clases y objetos no te quedaria un While tan grande como dices. El while principal de mi motor no supera las 3 lineas contando la declaracion del propio bucle ya que solo efectua dos llamadas, una al metodo principal de actualizacion de logica del motor y otra al metodo principal de dibujo. Estas a su vez no llegaran a las 10 lineas ya que solo ejecutan sus respectivas llamadas a los metodos Update() y Draw() en un bucle For/Next por cada familia de objetos (tiles de la escena, entidades y gui). Queda como resultado un codigo jerarquico entre clases que es facil de seguir o trazarlo sin necesidad de ejecutarlo tan si quiera. Dudo mucho que amontonar funciones en hilos separados sea tan claro como esto.

En serio, el unico que esta demostrando no tener mucha idea de programacion multihilo, nula idea sobre la diferencia de consumo en sistemas monoprocesador frente a los multiprocesador, y la falta de organizacion de codigo a la hora de programar me temo que eres tu. Harias bien en leerte unos cuantos libros sobre el tema antes de dartelas de guru frente a los novatos, amigo, por que solo logras confundirles.

JeoV

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Animacion Suave
« Respuesta #10 en: Lunes 16 de Abril de 2007, 03:00 »
0
salu2.. vaya se me hizo rraro que alguien haya respondido a este post el cual ya tiene desde el 07 de Mayo 2005

Citar
hace esto :

usando el tiempo muerto con un timer ....
usando hilos ..

asi animas los dos objetos lentamente al mismo tiempo
en este tema puse como hacer estop de los hilos :
http://foros.solocodigo.com/index.php?showtopic=24793
si aun asi no lo logras adaptar, avisame, que te enseño..
ya que no hay juego bien hecho que no use hilos ...

Au Revoir !

Gracias pero la duda que tenia ya la he resuelto desde hace mucho tiempo.. :lol:

Tambien me parece erroneo lo que dises acerca de los hilos.

Salu2..