Bennu Game Development

Foros en Español => General => Topic started by: syous on June 25, 2009, 09:24:25 PM

Title: Timers
Post by: syous on June 25, 2009, 09:24:25 PM
 ;D Hola necesitaría saber el limite de timers soportados por bennu
Title: Re: Timers
Post by: kim-elet-o on June 25, 2009, 10:27:43 PM
Creo que eran 10 de Timer[0] a Timer[9].

Title: Re: Timers
Post by: SplinterGU on June 25, 2009, 10:40:00 PM
no te deberia precupar los limites teniendo gettimer()
Title: Re: Timers
Post by: syous on June 26, 2009, 08:01:04 AM
Quote from: SplinterGU on June 25, 2009, 10:40:00 PM
no te deberia precupar los limites teniendo gettimer()

necesito hacer muchos contadores de cuenta atras o tiempos para poder reutilizar un objeto o hechizo et ;Dc
Title: Re: Timers
Post by: SplinterGU on June 26, 2009, 10:50:34 AM
Quote from: syous on June 26, 2009, 08:01:04 AM
Quote from: SplinterGU on June 25, 2009, 10:40:00 PM
no te deberia precupar los limites teniendo gettimer()

necesito hacer muchos contadores de cuenta atras o tiempos para poder reutilizar un objeto o hechizo et ;Dc

Los timers son algo siniestro, si me preguntas, no deberian estar... tenes dentro de mod_time, la funcion get_timer() y te olvidas de los limites, los timers los armas vos.
Title: Re: Timers
Post by: syous on June 26, 2009, 12:56:17 PM
ok lo probare haber que tal :)
Title: Re: Timers
Post by: splinter_work on June 26, 2009, 01:13:46 PM
get_timer() devuelve tiempo en milisegundos, no recuerdo si son desde que arranco el proceso o arranco la pc... creo que es la primera... como sea, lo importante es que si tomas una muestra inicial (T0) y a esta le sumas un X tiempo en milesegundos, obtenes un tiempo objetivo (Tf)... y luego interrogando cada cierto tiempo get_timer() y comparando este contra Tf, podes saber si tu timer expiro o no... y si haces get_timer() - T0, obtenes tiempo transcurrido.
Es demasiado simple, los timers[] para mi, son un error.
Title: Re: Timers
Post by: syous on June 26, 2009, 01:25:44 PM
 ;D gracias,


La idea es muy basica  necesito establecer tiempo de cast para lanzar un hechizo y tiempo cuando se puede volver a lanzar de nuevo

tiempo de recuperacion de vida y mana solo o duracion de los efectos de hechizos o pociones temporales etc
Title: Re: Timers
Post by: MythomizeR on June 26, 2009, 01:38:13 PM
El array de timers era Dios en tiempos DIV... y aun todavía será la perfecta solución para gente que no se quiere complicar demasiao la vida, pero claro, la flexibilidad y potencia que ofrecen los nuevos fichajes de funciones Ceras (como el presente, get_timer()) en Bennu es la caña :-)
Title: Re: Timers
Post by: laghengar on June 26, 2009, 04:25:10 PM
Se podría hacer usando variables como tiempos limite.

inicias la variable tiempo_limite=get_timer()+40000; para dar 40 segundos por ejemplo.

y luego lo empleas en condicional, si tiempo_limite<get_timer(); realizar_accion; end
Title: Re: Timers
Post by: syous on June 26, 2009, 04:43:51 PM
Quote from: laghengar on June 26, 2009, 04:25:10 PM
Se podría hacer usando variables como tiempos limite.

inicias la variable tiempo_limite=get_timer()+40000; para dar 40 segundos por ejemplo.

y luego lo empleas en condicional, si tiempo_limite<get_timer(); realizar_accion; end

;D algo similar barajaba pero la cantidad de variables va ser bestial
Title: Re: Timers
Post by: splinter_work on June 26, 2009, 04:53:18 PM
no necesariamente, usa un arreglo o array... igual no se como tenes organizado tu codigo, pero estas deberian ser variables/propiedades locales al objeto/accion en cuestion.
Title: Re: Timers
Post by: l1nk3rn3l on June 26, 2009, 10:11:32 PM
en el bennupack hay ejemplos para usar multiples timers
Title: Re: Timers
Post by: syous on June 26, 2009, 10:34:45 PM
Quote from: splinter_work on June 26, 2009, 04:53:18 PM
no necesariamente, usa un arreglo o array... igual no se como tenes organizado tu codigo, pero estas deberian ser variables/propiedades locales al objeto/accion en cuestion.

cada objeto tiene su proceso con sus cualidades mas un proceso común a todos los elementos y luego están los procesos modificadores que modifican las propiedades de un objeto , hechizo o elemento
Title: Re: Timers
Post by: Drumpi on June 27, 2009, 08:07:06 PM
Pues yo no entiendo esa manía de usar los timers, corres el peligro de que se pierda la sincronización entre el juego y el jugador.

Supon un sistema limitado en recursos, o una tarea en background (o simultanea), de repente se pone a hacer cálculos por lo que sea, y el PC se queda "bloqueado" (es decir, ocuapdo con esa nueva tarea), los timers siguen funcionando y cuando recuperas el control ya han pasado varios eventos, cosa que no sucedería usando contadores soft. Con timers pasa lo que con los juegos en red y los lags.

Aparte de eso, usando un único timer hacer muchísimas tareas (basta con guardar el tiempo inicial y ver cuanto ha pasado desde ese momento, es lo mismo que se hace con varios, solo que en ese caso se comprueba la diferencia respecto a cero).
La única utilidad que le veo a los timers son para eventos asíncronos (por ejemplo, operaciones muyyyyyyyyyyy largas que no usan frame, para dar "avisos" cada segundo de que no se ha atascado, como leyendo un fichero de 5MB byte a byte)
Title: Re: Timers
Post by: syous on June 27, 2009, 08:58:40 PM
 ;D hola llevo mucho  tiempo jugando a los MMORPG y todos usan tiempos para el lanzamiento de un evento , reutilización del mismo o para efectos temporales

Un ejemplo, estoy jugando al World of Warcraft y todos los hechizos tienes unos segundos para lanzar el hechizo o ralentizas alguien o lo congelas alguien unos segs y así muchos juegos del genero pero intento algo innovador partiendo de esa base
Title: Re: Timers
Post by: SplinterGU on June 27, 2009, 10:16:23 PM
asincronos segun desde donde lo mires...
es cierto que para el caso que mencionas no sirve, pero para casos donde se basa en tiempo y no en frames si es util, no digo de usar timers, sino el get_timer.
Title: Re: Timers
Post by: syous on June 28, 2009, 12:04:09 AM
 ;D  supongo que también sirve para dar tiempo al servidor para procesar la información :P
Title: Re: Timers
Post by: Drumpi on June 28, 2009, 01:37:25 AM
Es que verás, syous: si hace set_fps(50,0) sabes que al hacer 50 frames han pasado un segundo DE JUEGO, si usas timers sabes que pasa un segundo REAL, la diferencia está en si el juego ha conseguido funcionar en tiempo real o no.
Imagina que un enemigo empieza a cargar un ataque que tarda cinco segundos, tu te dispones a esquivarlo, y apenas empiezas a moverte se dispara la tarea automática de limpieza, el ordenador se "congela". Cuando termina han pasado los cinco segundos, pero tu jugador no se ha movido, y recibes un ataque que, en tiempo de juego, ha tardado medio segundo.

Obviamente me refiero a asincronía del mismo modo que las interrupciones HW: su ejecución sigue los tiempos de reloj, pero se activan en cualquier instante de tiempo, no predecible.
Title: Re: Timers
Post by: SplinterGU on June 28, 2009, 01:58:30 AM
estas pensando a nivel juego basado en frames... en algunos casos no interesa cuantos frames se ejecutaron...
Por ejemplo, un juego que debe ser completado en 1 hora... o que tenes que sensar un dispositivo para 200ms minimo... o un reloj en tiempo real donde tenes que mostrar milesimas de segundo... o un protocolo de comunicacion donde el protocolo requiere que cada cierta cantidad de milisegundos envies un paquete de ECHO o HELLO.
tambien esta lo que decis, pero no aplica a todos los casos... en ocaciones es util.
Title: Re: Timers
Post by: Drumpi on June 28, 2009, 12:21:02 PM
No digo que no sean útiles, por ejemplo, para lo que dices.
Lo que me pone los pelos de punta es que la gente usa los timers como contadores para los juegos, más que nada, porque, según mi forma de ver, no se tiene en cuenta a los equipos más modestos, que pueden generar los "retrasos" mencionados.
Pero vamos, que no voy a crucificar a nadie por eso, sólo expongo mi opinión, cada uno es libre de programar como quiera (porque si no, sería yo el primer apedreado ;D)
Title: Re: Timers
Post by: SplinterGU on June 28, 2009, 02:30:52 PM
pero syous esta haciendo un juego online, que segun entiendo sera realtime, o basado en tiempo.

como sea, al ser online la componente tiempo debe prevalecer sobre frame... no podes penalizar a todos los jugadores porque uno tenga una carreta.
Title: Re: Timers
Post by: Drumpi on June 29, 2009, 12:20:28 AM
Pues en eso si que te doy la razon.
Tambien dependería de cómo esté implementado el juego, si el servidor se encarga de todos los cálculos y los clientes sólo transmiten la pulsación de sus teclas, se supone que el servidor es el rápido y es el único que debe ir a golpe de frame. Si las tareas se reparten sólo penalizaría al que tiene el PC movido por hamster en su rueda.
Title: Re: Timers
Post by: syous on June 29, 2009, 08:26:26 AM
Quote from: Drumpi on June 29, 2009, 12:20:28 AM
Pues en eso si que te doy la razon.
Tambien dependería de cómo esté implementado el juego, si el servidor se encarga de todos los cálculos y los clientes sólo transmiten la pulsación de sus teclas, se supone que el servidor es el rápido y es el único que debe ir a golpe de frame. Si las tareas se reparten sólo penalizaría al que tiene el PC movido por hamster en su rueda.

esa es la idea  ;D pero hasta el que tiene el PC movido por hamster en su rueda va poder jugar