GameMaker:Studio dispone de un buen número de funciones y variables para leer la fecha y hora, así como calcular otros valores relacionados con el tiempo.
Las siguientes variables predefinidas se usan para valores de fecha y tiempo específicos:
Las siguientes funciones se usan para obtener valores de fecha y tiempo específicos (día, mes, año, hora, etc), así como para crear valores nuevos o conocer el lapso de tiempo (días/horas) entre dos fechas dadas, etc...
- date_create_datetime*
- date_current_datetime*
- date_compare_date*
- date_compare_datetime*
- date_compare_time*
- date_valid_datetime
- date_date_of*
- date_time_of
- date_is_today
- date_leap_year
- date_date_string*
- date_datetime_string*
- date_time_string
- date_second_span
- date_minute_span
- date_hour_span*
- date_day_span*
- date_week_span
- date_month_span
- date_year_span
- date_days_in_month*
- date_days_in_year*
- date_get_second*
- date_get_minute*
- date_get_hour
- date_get_day*
- date_get_weekday*
- date_get_week*
- date_get_month*
- date_get_year*
- date_get_second_of_year*
- date_get_minute_of_year*
- date_get_hour_of_year*
- date_get_day_of_year*
- date_inc_second
- date_inc_minute
- date_inc_hour
- date_inc_day*
- date_inc_week
- date_inc_month
- date_inc_year
Existen dos funciones de tiempo especiales que proporcionan un alto grado de precisión y control al ejecutar el juego:
current_time;
Devuelve: Real
Esta variable de sólo lectura devuelve el número de milisegundos que han transcurrido desde que la partida actual comenzó.
if current_time > 600000
{
msg = show_question_async("Would you like to rate?");
}
El código anterior revixsa si han pasado más de 10 minutos antes de formular una pregunta al usuario.
current_second;
Devuelve: Real
sta variable de sólo lectura devuelve los segundos correspondientes al momento actual.
draw_text(32, 32, "The time is " + string(current_hour) + ":" + string(current_minute) + "." + string(current_second));
El código anterior dibuja la hora internacional en pantalla.
current_minute;
Devuelve: Real
Esta variable de sólo lectura devuelve los minutos correspondientes al momento actual.
draw_text(32, 32, "The time is " + string(current_hour) + ":" + string(current_minute) + "." + string(current_second));
El código anterior dibuja la hora internacional actual.
current_hour;
Devuelves Real
Esta variable de sólo lectura devuelve la hora correspondiente al momento actual usando el Horario Universal (la hora devuelta ignora el horario de verano).
draw_text(32, 32, "The time is " + string(current_hour) + ":" + string(current_minute) + "." + string(current_second));
El código anterior dibuja la hora internacional actual.
current_day;
Devuelve: Real
Esta variable de sólo lectura devuelve el día actual como un valor entre 1 y 31 , dependiendo del mes en curso.
draw_text(32, 32, "Today is " + string(current_day) + "/" + string (current_month) + "/" + string(current_year) +".");
El código anterior dibujará en pantalla el día, mes y año.
current_month;
Returns: Real
Esta variable de sólo lectura devuelve el mes actual como un valor numérico donde 1 es Enero y 12 es Diciembre.
draw_text((32, 32, "Today is " + string(current_day) + "/" + string (current_month) + "/" + string(current_year) +".");
El código anterior dibuja el día, mes y año.
current_weekday;
Devuelve: Real
Esta variable de sólo lectura devuelve día de la semana como un valornumérico, donde el Domingo es es 0 y el Sábado es 6.
var day;
switch(current_weekday)
{
case 0: day = "Sunday"; break;
case 1: day = "Monday"; break;
case 2: day = "Tuesday"; break;
case 3: day = "Wednesday"; break;
case 4: day = "Thursday"; break;
case 5: day = "Friday"; break;
case 6: day = "Saturday"; break;
}
draw_text(32, 32, "Today is " + day +".");
Este código usa la función current_weekday para ajustar una variable al día actual en texto, y luego dibujarla para que sea vista por el usuario.
current_year
Devuelve: Real
Esta variable de sólo lectura devuelve el año encurso.
draw_text((32, 32, "Today is " + string(current_day) + "/" + string (current_month) + "/" + string(current_year) +".");
Este código dibujará el día, el mes y el año actuales.
date_create_datetime(year, month, day, hour, minute, second);
Argumento | Descripción |
---|---|
year | Define el año. |
month | Define el mes. |
day | Define el día. |
hour | Define la hora. |
minute | Define el minuto. |
second | Define los segundos. |
Devuelve: Real
Esta función crea un valor fecha-hora a partir de los componentes definidos en los argumentos.
mydatetime = date_create_datetime(2011, 9, 15, 9, 43, 30);
Esto ajusta la variable "mydatetime" al valor correspondiente a la fecha "15 de Septiembre del 2011", y la hora "9 horas, 43 minutos y 30 segundos".
date_current_datetime();
Devuelve: Real
Devuelve el valor fecha-hora del momento actual. La hora devuelta ignora el Horario de Verano (por lo que corresponde al Horario Universal) y normalmente debería ser usada en conjunto con otras funciones de manejo de Fecha y Hora.
myhour = date_get_hour(date_current_datetime());
myday = date_get_day(date_current_datetime());
Esto asigna a la variable local "myhour" el valor numérico de la hora actual, y a "myday" el valor numérico del día actual.
date_compare_date( date1, date2 );
Argumento | Descripción |
---|---|
date1 | La primer fecha. |
date2 | La fecha a comparar con la primera. |
Devuelve: Real
Mediante esta función se pueden comparar dos fechas para saber cuál de las dos es la más temprana o tarde. la función devuelve -1 si date1 es anterior a date2, 0 si ambas fechas son iguales y 1 si date1 es posterior.
d = date_compare_date(date_create_datetime(2011, 9, 15, 11, 4, 0), date_current_datetime());
Esto ajusta "d" al valor correspondiente, dependiendo de cuál de las fechas sea la más temprana. Probablemente será -1, ya que la fecha actual debería ser posterior al 15 de Septiembre del 2011.
date_compare_datetime(date1, date2);
Argumento | Descripción |
---|---|
date1 | La primera fecha-hora. |
date2 | La fecha-hora a comparar con la primera. |
Devuelve: Real
Mediante esta función se pueden comparar dos fechas y horas para saber cuál es más temprana o más tarde que la otra. La función devuelve -1 si date1 es una hora más temprana, 1 si date1 es una hora más tarde y 0 si ambas son iguales. Sin embargo, obtener 0 con esta función es muy difícil (ambas fechas deberían tener el mismo segundo, el mismo minuto, la misma hora en el mismo día del mismo mes del mismo año para que suceda).
d = date_compare_date(date_create_datetime( 2011, 9, 15, 11, 4, 0 ), date_current_datetime());
Esto ajusta "d" al valor correspondiente, dependiendo de cuál de las dos fecha-hora es más temprana. Probablemente será -1, ya que la fecha actual debería ser posterior al 15 de Septiembre del 2011.
date_compare_time(datetime1, datetime2);
Argumento | Descripción |
---|---|
datetime1 | La primera fecha-hora. |
datetime2 | La fecha-hora a comparar con la primera. |
Devuelve: Real
Con esta función puedes comparar dos fechas y horas para saber cuál tiene el componente hora más temprana o más tarde que la otra. La función devuelve -1 si datetime1 es más temprano, 1 si datetime1 es más tarde y 0 si ambas son iguales, ignorando las fechas, es decir, considerando solamente las horas, como si fuesen dentro del mismo día.
d = date_compare_time(date_create_datetime( 2011, 9, 15, 11, 4, 0 ), date_current_datetime());
Esto asigna a "d" el valor correspondiente, dependiendo cuál de las horas es más temprana. Básicamente, si la hora actual es más tarde que las 11:04 am, devuelve 1. Si es más temprana, -1. Si actualmente son las 11:04, devuelve 0.
date_date_of(date);
Argumento | Descripción |
---|---|
date | La Fecha y hora de la que se extraerá la fecha. |
Devuelve: Real
Devuelve sólo la fecha de un valor fecha-hora dado.
hoy = date_date_of(date_current_datetime());
Esto devolverá únicamente la fecha actual y guardara el valor en la variable "hoy".
date_date_string(date);
Argumento | Descripción |
---|---|
date | la fecha a usar. |
Devuelve: Cadena
Esta función permite crear una cadena que contiene la fecha indicada, con el formato del sistema o dispositivo que ejecuta el juego cuando la función es llamada.
str = date_date_string(date_current_datetime());
Este código establecerá la variable str a algo como: "Junio 12 2014", dependiendo de la configuración de la fecha y hora del sistema.
date_datetime_string(date);
Argumento | Descripción |
---|---|
date | La fecha a usar. |
Devuelve: Cadena
Esta función se utiliza para crear una cadena conteniendo la fecha especificada, formateada para el sistema o dispositivo que ejecuta el juego.
str = date_datetime_string(date_current_datetime());
Esto ajusta "str" a algo como "Mayo 20th 2014, 11:33.00", dependiendo de la configuración de fecha y hora del sistema y de la fecha y hora actuales.
date_hour_span(date1, date2);
Argumento | Descripción |
---|---|
date1 | La primer Fecha-hora.. |
date2 | La fecha-hora a comparar con la primera. |
Returns: Real
Mediante esta función puedes obtener el número de horas entre dos fechas. Este valor siempre será positivo y las horas incompletas serán devueltas como fracciones.
diff = date_hour_span(date_create_datetime( 2011, 9, 15, 11, 4, 0 ), date_current_datetime());
Este código ajustará "diferencia" al número de horas entre el 15 de septiembre de 2011, 11:04.0 y la fecha y hora actual.
date_day_span(date1, date2);
Argumento | Descripción |
---|---|
date1 | La primer fecha-hora. |
date2 | La segunda fecha-hora. |
Devuelve: Real
Mediante esta función se puede conocer el número de días entre dos fechas. El valor devuelto siempre es positivo; días incompletos se devolverán como fracción.
diff = date_day_span(date_create_datetime(2011, 9, 15, 11, 4, 0), date_current_datetime());
Este código ajusta diff al número de días entre el 15t de Septiembre de 2011, 11:04.0 y la fecha-hora actual.
date_days_in_month(date);
Argumento | Descripción |
---|---|
date | The date to use. |
Devuelve: Real
Esta función se usa para conocer el número de días que tiene el mes indicado, ya sea 28, 29, 30 ó 31.
days = date_days_in_month(date_current_datetime());
El código anterior ajusta "days" al número de días del mes actual.
date_days_in_year(date);
Argumento | Descripción |
---|---|
date | La fecha a usar. |
Esta función permite conocer el número de días que tiene el año, según la fecha indicada, devolviendo 365 para un año normal y 366 si el año es bisiesto.
days = date_days_in_year(date_current_datetime());
Esto ajusta la variable "days" al número de días del año actual.
date_get_second(date);
Argumento | Descripción |
---|---|
date | La fecha-hora a analizar. |
Devuelve: Real
Esta función devuelve el segundo correspondiente al valor fecha-hora dado.
mysecond = date_get_second(date_current_datetime());
Esto ajusta la variable mysecond al valor del segundo actual.
date_get_minute(date);
Argumento | Descripción |
---|---|
date | La fecha a revisar. |
Devuelve: Real
Esta función devuelve el minuto de la fecha especificada.
myminute = date_get_minute(date_current_datetime());
Esto ajusta "myminute" al minuto actual.
date_get_day(date);
Argumento | Descripción |
---|---|
date | La fecha-hora a revisar. |
Devuelve: Real
Esta función devuelve el día (de 1 a 31) de la fecha-hora dada.
myday = date_get_day( date_current_datetime() );
Este código ajusta la variable "myday" al día actual.
date_get_weekday(date);
Argumento | Descripción |
---|---|
date | La fecha a revisar. |
Devuelve: Real
Esta función devuelve el valor del día correspondiente a la semana, según la fecha-hora introducida. El valor del día va desde 1 hasta 7.
myweekday = date_get_weekday(date_current_datetime());
Este código ajusta "myweekday" al día actual.
date_get_week(date);
Argumento | Descripción |
---|---|
date | La fecha a revisar |
Devuelve: Real
Esta función devuelve la semana del año correspondiente a la fecha especificada (basándose en el número total de minutos transcurridos, tomando en cuenta años bisiestos).
myweek = date_get_week(date_current_datetime());
Esto ajusta myweek a la semana actual.
date_get_month(date);
Argumento | Descripción |
---|---|
date | La fecha-hora a revisar. |
Devuelve: Real
Esta función devuelve el mes correspondiente al valor fecha-hora dado.
mymonth = date_get_month(date_current_datetime());
Esto ajusta la variable mymonth al valor del mes actual.
date_get_year(date);
Argumento | Descripción |
---|---|
date | La fecha-hora a revisar. |
Devuelve: Real
Esta función devuelve el año del formato fecha-hora indicado.
myyear = date_get_year(date_current_datetime());
Este código ajusta "myyear" al año actual.
date_get_second_of_year( date );
Argumento | Descripción |
---|---|
date | La fecha a revisar. |
Devuelve: Real
Esta función devuelve el segundo del año del valor fecha-hora dado (del total de segundos del año, teniendo en cuenta años bisiestos).
mysecondyear = date_get_second_of_year(date_current_datetime());
Esto ajusta la variable "mysecondyear" al segundo actual del año en curso.
date_get_minute_of_year(date);
Argumento | Descripción |
---|---|
date | La fecha a revisar. |
Devuelve: Real
Esta funcion devuelve el minuto del año del valor fecha-hora dado (del total de minutos del año, teniendo en cuenta años bisiestos).
myminuteyear = date_get_minute_of_year(date_current_datetime());
Esto asigna a la variable myminuteyear el minuto actual del presente año.
date_get_hour_of_year(date);
Argumento | Descripción |
---|---|
date | La fecha a revisar. |
Devuelve: Real
Esta función devuelve la hora correspondiente a la fecha especificada (considerando el número total de horas del año, tomando en cuenta años bisiestos).
myhouryear = date_get_hour_of_year(date_current_datetime());
El código anterior ajusta "myhouryear" a la hora actual del año.
date_get_day_of_year( date );
Argumento | Descripción |
---|---|
date | La fecha a revisar. |
Devuelve: Real
Esta función devuelve el día (de 1 a 366) del año de la fecha dada.
mydayyear = date_get_day_of_year(date_current_datetime());
El código anterior ajusta la variable mydayyear al día actual.
date_inc_day(date, amount);
Argumento | Descripción |
---|---|
date | La fecha-hora a la que agregar días. |
amount | El número de días a agregar (debe ser un entero). |
Devuelve: Real
Esta función incrementa una fecha-hora dada, según se especifique un número de días, devolviendo el valor de la nueva fecha-hora.
mynewdatetime = date_inc_day(date_current_datetime(), 365);
Esto ajustará el valor de "minuevafecha" a la fecha actual pero ademas le añadirá 365 días.
get_timer();
Devuelve: Real
Esta función devuelve el valor del temporizador: que equivale al tiempo que el juego ha estado ejecutándose en la plataforma elegida en microsegundos (hay 1 millón de microsegundos en un segundo).
time = get_timer();
Este código almacena el valor del temporizador en la variable "time".
delta_time
Devuelve: Real
El propósito del cronometraje delta es eliminar los efectos del retrazo o ralentización en las computadoras que ejecutan gran cantidad de código o realizan tareas gráficas complejas. El tiempo delta es un valor que puede agregarse a la velocidad de los objetos para lograr que se muevan eventualmente a la misma velocidad a pesar de la ralentización. En GameMaker:Studio, esto se logra usando la variable de sólo lectura delta_time en cada paso, ya que ésta mide el tiempo que ha pasado entre un step y el próximo en microsegundos (1 microsegundo es la millonésima parte de un segundo). Por lo tanto, la variable delta_time se puede usar, por ejemplo, para calcular qué tan rápido un personaje se tiene que mover para evitar el efecto de un periodo de lag en el juego.
speed = spd * (ot - delta_time);
El código anterior ajusta la velocidad de la instancia usando delta-time para corregir el retraso. La variable "ot" se debe usar para almacenar el valor previo de delta_time, de tal modo que el factor pueda ser usado para multiplicar el valor base de la velocidad (almacenado en la variable "spd") y obtener una velocidad consistente para la instancia.