Jump to content
UnitySpain
Sign in to follow this  
MotoSierraProducciones

Tiempo Corre de Forma Real

Recommended Posts

Hola, Quisiera encontrar la manera de hacer que el contador de tiempo siga contando aun cuando la app este cerrada, Ejemplo:

 

Un juego tipo Mascota virtual, lo que se busca es que al cerrar el juego, el tiempo siga corriendo de forma real, si en 6 horas no abren el juego y alimentan a la mascota, esta muere de hambre.

Espero haberme explicado correctamente.

Share this post


Link to post
Share on other sites

Buenas,

La mejor forma de hacer lo que dices es checkear la hora en un servidor. Un llamada a un .php con algo así ya te serviría:

 

<?php
 date_default_timezone_set('Europe/Madrid');
 $currenttime = date("m-d-Y H:i:s");
 list($ddd,$ttt) = split(' ',$currenttime);
 echo "$ddd $ttt\n";

 

Share this post


Link to post
Share on other sites

Pregunto, algunos juegos con los que he experimentado este "efecto de tiempo real" usan (al parecer) el reloj del SO, me pasó en el cookieClicker que se me fue el año de la PC al 2040 (por vaya a saber que virus) y me encontre con algunos "dodecillions" (10^12) cookies de más jajaj. Supongo que la solución del servidor es la ideal.

Share this post


Link to post
Share on other sites
On 2/1/2019 at 1:54 AM, OldGuy said:

Buenas,

La mejor forma de hacer lo que dices es checkear la hora en un servidor. Un llamada a un .php con algo así ya te serviría:

 


<?php
 date_default_timezone_set('Europe/Madrid');
 $currenttime = date("m-d-Y H:i:s");
 list($ddd,$ttt) = split(' ',$currenttime);
 echo "$ddd $ttt\n";

 

Disculpa mi ignorancia, pero no se como hacerlo, no se como usar un archivo php.... podrias ayudarme un poco mas con eso??

Share this post


Link to post
Share on other sites
On 2/1/2019 at 4:50 AM, MotoSierraProducciones said:

Hola, Quisiera encontrar la manera de hacer que el contador de tiempo siga contando aun cuando la app este cerrada, Ejemplo:

 

Un juego tipo Mascota virtual, lo que se busca es que al cerrar el juego, el tiempo siga corriendo de forma real, si en 6 horas no abren el juego y alimentan a la mascota, esta muere de hambre.

Espero haberme explicado correctamente.

Buenas!

Sino quieres/puedes llamar a un servidor, siempre puedes usar la última hora local, y comprobar la diferencia entre la última fecha global guardada y la nueva:

 

DateTime time = DateTime.Now;

Saludos!

Share this post


Link to post
Share on other sites
On 2/5/2019 at 5:07 AM, MotoSierraProducciones said:

Disculpa mi ignorancia, pero no se como hacerlo, no se como usar un archivo php.... podrias ayudarme un poco mas con eso??

 

Buenas,

hay muchas formas de llamarlo, una podría ser algo así:

 

void Start()
{
 	StartCoroutine(GetTime()); 
}

public IEnumerator GetTime()
{
  UnityWebRequest www = UnityWebRequest.Get(URL_SERVER); // URL_SERVER, es la dirección donde está alojado el archivo .php: http://servidor.com/archivo.php
  yield return www.SendWebRequest();

  if (www.isNetworkError || www.isHttpError)
  {
  	// Ha habido un error al obtener el tiempo
  }
  else
  {
    Debug.Log("La hora del servidor es: " + www.downloadHandle.text);
  }
}

 

 

On 2/5/2019 at 8:45 AM, Casum said:

Buenas!

Sino quieres/puedes llamar a un servidor, siempre puedes usar la última hora local, y comprobar la diferencia entre la última fecha global guardada y la nueva:

 


DateTime time = DateTime.Now;

Saludos!

Eso sirve si solo necesitas mirar la hora, pero para un juego que funciona según el tiempo que pasa, se podría romper muy fácil solo cambiando la hora del dispositivo. Por ejemplo en los juegos tipo Clash of Clans, que construyes algo y tiene que pasar 5 horas para que se termine de construir, podrías ir a configuración de tú móvil, adelantar tu reloj 5 horas, y volver al juego y el juego detectaría que ya han pasado esas 5 horas, por lo que el juego estaría roto...

Edited by OldGuy

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...