2012-01-18 15 views
7

En el juego de iPhone "Tiny Tower", supongo que usa algún tipo de simulación basada en el tiempo transcurrido entre la última jugada y la hora actual, porque puede establecer la hora actual y obtendrá el beneficio de el lapso de tiempo transcurrido falso.¿Cómo prevenir los trucos basados ​​en el tiempo en un juego de simulación basado en el tiempo?

¿Hay algún algoritmo que pueda usar para evitar este tipo de cosas? (¡O al menos haga que sea lo suficientemente difícil para el usuario promedio!)

Editar: gracias, entiendo que, a pesar de mi redacción, no hay forma de evitar cosas que almacena en el lado del cliente, pero quiero ¡haz que sea al menos más difícil que "cambiar el tiempo" para hackearlo!

+3

Cada vez que la corrección se basa en una variable que el usuario puede cambiar, existe la posibilidad de corrupción. – corsiKa

+0

Ya, no sé la literatura sobre si hay al menos formas de hacer las cosas más difíciles ... – Timmy

Respuesta

4

GameCube tenía una manera de hacer esto por lo que debe ser posible.

¿Hay un evento activado cuando se establece el tiempo de iphone? En ese caso, puedes reaccionar eso.

Otra solución es requerir estar en línea cuando se inicia el juego, de esta manera puede verificar el tiempo en un servidor remoto.

Podría verificar si se produjo un evento en el inicio de sesión del teléfono o si se despierta, ahorrándose tiempo en ese momento en su base de datos. Tendría la última vez no modificada.

Un último truco posible es buscar un archivo que sabe que va a modificarse mediante una acción anterior al cambio de hora (como el inicio de sesión) y verificar la fecha de la "última modificación".

Puede investigar en la dirección del GPS también. Un GPS necesita estar sincronizado con el satélite con el que entra en contacto, por lo que debe hacer un seguimiento del tiempo de alguna manera, y tal vez haya una API para eso.

Desafortunadamente, usted está en un iphone, lo que significa que sus posibilidades son limitadas, ya que las aplicaciones tienen muy pocos derechos y son de espacio aislado.

EDIT:

Sólo aunque sobre ello, pero, se puede crear eventos en el calendario del iPhone? Y comprueba si ha sido trigered? Porque puedes establecer una reunión falsa o algo por cada día. No limpio, pero creativo.

EDIT 2: ¿se puede configurar un temporizador como código para que IOS se ejecute en 60 minutos? Si puede, configure este temporizador, pase el tiempo que se espera que sea cuando se ejecute este código, luego, cuando se ejecute el código, compare e informe a su programa.

+0

gracias, revisaré estos trucos ...;) – Timmy

2

Una forma de evitarlo es controlar el paso del tiempo verificando las marcas de tiempo para sus inicios de sesión en una base de datos. No importa si el tiempo del iPhone del cliente está apagado; la base de datos de su lado sabrá cuánto tiempo ha pasado desde el último inicio de sesión.

1

llame a un servicio web para obtener el tiempo, en lugar de depender del teléfono. Hay varios lugares donde puede obtener tiempo, google es su amigo, estoy seguro, o cree uno usted mismo, y use la hora local de la máquina en la que se ejecuta el servicio por el momento.

También podría utilizar el Network Time Protocol (NTP) servers para conseguir un tiempo consistente

1

Creo que si tiene acceso a Internet, puede tomar el tiempo de un servidor.

Una segunda solución: puede registrar la "fecha y hora" y cada vez que vea una diferencia "GRANDE" entre la fecha de grabación y la fecha de ejecución, sabe que podría haber un problema. pero esto no es elegante, lo sé.

También puede registrar una pequeña cantidad de las fechas de inicio de la aplicación y verificar la diferencia con la fecha de ejecución.

También puede usar "Actividad" -> "Fecha y hora" para que las "Actualizaciones" (niveles, etc.) no se puedan volver a tomar.

Debido a que el sistema Fecha y hora puede ser cambiado por el usuario, existe la posibilidad de "piratear".

+0

Ya, no estoy demasiado preocupado por el pirateo del juego por se ... usuarios motivados harán eso ... ¡solo quieren que al menos sea lo suficientemente difícil para la mayoría de los usuarios casuales! – Timmy

+0

lo suficientemente duro para la mayoría de los usuarios casuales? Al usar el método anterior, creo que es bastante difícil. (Segunda solución) – Sanosay

Cuestiones relacionadas