;D Hola necesitaría saber el limite de timers soportados por bennu
Creo que eran 10 de Timer[0] a Timer[9].
no te deberia precupar los limites teniendo gettimer()
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
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.
ok lo probare haber que tal :)
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.
;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
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 :-)
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
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
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.
en el bennupack hay ejemplos para usar multiples timers
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
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)
;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
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.
;D supongo que también sirve para dar tiempo al servidor para procesar la información :P
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.
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.
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)
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.
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.
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