Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: internauta en Mayo 14, 2013, 09:04:06 PM

Título: Reloj contador de segundos (SOLUCIONADO)
Publicado por: internauta en Mayo 14, 2013, 09:04:06 PM
Hola de nuevo gente !!

Estoy intentando poner un contador en mi juego para que el jugador sepa el tiempo que tarda en hacer una acción, pero estoy trabado.

Lo he intentado de varias formas, con alarmas, con Steps...

Os dejo lo que mejor se aproxima. En un objeto que uso SOLO para el contador tengo:

CREATE
nTiempo = 0;

STEP
nTiempo +=1;

DRAW
draw_set_color(c_white);
draw_set_font(font0);
draw_text(180,160,nTiempo/30);


Más sencillo no se puede, ¿no?

Pues a partir del segundo 15 o así, el tiempo lo empieza a contar cada vez más lento. Es como si se le fueran acabando las pilas al reloj  :-)

Lo he probado con un proyecto vacío y va bien, pero en el mío no...

¿Alguna idea?


Un saludo.
Título: Re:Reloj contador de segundos
Publicado por: brunoxzx en Mayo 14, 2013, 09:33:36 PM
Que raro, haz revisado en el modo debug a ver si tus fps se quedan estáticos en 30?.

Como sea el modo más exacto de crear un contador es usando el reloj de la computadora. Para esto se usan las funciones date_get que dependiendo del tipo puedes obtener el año, mes, día, hora, minuto, segundo, o milisegundo actual.

[gml]
//Create, game start o donde sea que el contador inicie o reinicie.
global.segundoInicial=date_get_second( date_current_time() );

//Draw
tiempo=date_get_current_second-global.segundoInicial;
draw_text_ext_color(180,160,string(tiempo),-1,250,global.blanco,global.blanco,global.blanco,global.blanco,1);
[/gml]
Título: Re:Reloj contador de segundos
Publicado por: internauta en Mayo 14, 2013, 09:49:56 PM
He probado lo que me pasas, pero he cambiado

date_current_time() por date_current_datetime()

porque la primera función no la tengo...


Y la segunda: date_get_current_second
tiempo=date_get_second(date_current_datetime())-global.segundoInicial;

El problema es que algunos segundo NO los pinta. Parece que no va mal, pero se los salta...
1 -> 3 -> 4 -> 5 -> 7 ....
Título: Re:Reloj contador de segundos
Publicado por: internauta en Mayo 14, 2013, 10:14:30 PM
Volviendo a mi idea original (la del post original), he hecho una prueba más...

He cambiado a 10 el speed room. Parece que así el retardo que tiene el reloj es menor. Al menos llego al minuto con todos los segundos más o menos iguales. Lo malo es que cuento décimas en lugar de las milésimas...

Si a alguien se le ocurre un por qué pasa esto, soy todo oídos...
Título: Re:Reloj contador de segundos
Publicado por: brunoxzx en Mayo 14, 2013, 10:35:42 PM
Tienes puesto lo que te dije en draw?. Sinceramente no tiene sentido a menos que gm:studio tenga un bug, o que tu juego tarde más de un segundo en procesar un frame  :o.

Hombre revisa tus fps lo de que funcione mejor poniendo la room speed baja es una prueba de que seguramente tu juego varia mucho su velocidad.

Intenta usando la variable current_time, que devuelve la cantidad de milisegundos que han pasado desde que abriste el juego.

[gml]
//Create, game start o donde sea que el contador inicie o reinicie.
global.miliSInicial=current_time;

//Draw
tiempo=current_time-global.miliSInicial;
draw_text_ext_color(180,160,string(tiempo/1000),-1,250,global.blanco,global.blanco,global.blanco,global.blanco,1);
[/gml]
Título: Re:Reloj contador de segundos
Publicado por: internauta en Mayo 14, 2013, 10:51:31 PM
Ya está solucionado...

Fallo mío, y de los grandes  :-)

Tenía en el DRAW puestos 25 create_instance que tenía que tener en el CREATE.

Así se iba quedando sin memoria el sistema... jajjajaja

Casi me da vergüenza confesar esto... jajajaja...  ¡¡ Qué fuerte !!

En fin, todo solucionado...

Es que incluso lo pasé a la tablet, reinicié el PC, de todo... Y al final em dio por verificar el DRAW porque pensé lo que tú decías, que igual estaba tardando mucho en repintar, y claro que tardaba !!!!  Cuanto más tiempo pasaba más instancias había  :-)


En fin, gracias por ayudarme !!!

Un saludo.
Título: Re:Reloj contador de segundos (SOLUCIONADO)
Publicado por: brunoxzx en Mayo 15, 2013, 12:47:17 AM
Jaja xD que raro que no hayas notado que tu juego se alentaba periódicamente o que después de unos 5 minutos de juego tu juego colapsaría  XD.