2012-01-18 14 views
7

Nel gioco iphone "Tiny Tower", suppongo che utilizzi una sorta di simulazione basata sul tempo trascorso tra l'ultima riproduzione e l'ora corrente, perché è possibile impostare l'ora corrente in avanti e si otterrà il beneficio da il finto periodo di tempo trascorso.Come prevenire trucchi basati sul tempo in un gioco di simulazione basato sul tempo?

C'è un algoritmo che posso usare per prevenire questo genere di cose? (O almeno renderlo abbastanza difficile da far scappare l'utente medio!)

Modifica: grazie, capisco che, nonostante la mia formulazione, non c'è modo di impedire le cose che memorizzi sul lato client, ma voglio renderlo almeno più difficile di "cambiare il tempo" per hackerarlo!

+3

Ogni volta che la correttezza si basa su una variabile che l'utente può modificare, esiste il rischio di corruzione. – corsiKa

+0

Ya, non conosco la letteratura se ci sono almeno modi per rendere le cose più difficili .. – Timmy

risposta

4

GameCube aveva un modo per fare questo, quindi deve essere possibile.

C'è un evento attivato quando è impostata l'ora iphone? In tal caso puoi reagire.

Un'altra soluzione è richiedere di essere online all'avvio del gioco, in questo modo è possibile controllare l'ora di su un server remoto.

È possibile controllare se si è verificato un evento all'accesso del telefono o attivare reagendo ad esso, salvando l'ora in quel momento nel DB. Avresti l'ultimo tempo non modificato.

Un ultimo possibile trucco è quello di controllo per un file si sa che sta per essere modificato da un'azione prima del cambiamento di orario (come login), e controllare la data 'ultima modifica'.

È possibile effettuare il controllo nella direzione GPS. Un GPS deve essere sincronizzato con il satellite che contatta, quindi deve tenere traccia del tempo in qualche modo, e forse c'è un'API per questo.

Sfortunatamente sei su un iphone, il che significa che le tue possibilità sono limitate poiché le applicazioni hanno pochi diritti e sono in modalità sandbox.

EDIT:

Basta però a questo proposito, ma, è possibile creare eventi nel calendario iPhone? E controlla se è stato truccato? Perché potresti organizzare un incontro falso o qualcosa per ogni giorno. Non pulito, ma creativo.

EDIT 2: è possibile impostare un timer come codice per IOS da eseguire in 60 minuti? Se è possibile, impostare questo timer, passare il tempo previsto per l'esecuzione di questo codice, quindi quando il codice viene eseguito, confrontare e informare il programma.

+0

grazie, rivedrò questi trucchi ..;) – Timmy

2

Un modo per impedirlo è quello di monitorare il passare del tempo controllando i timestamp per i loro accessi in un database. Non importa se il tempo dell'iPhone del cliente è spento; il database sul tuo terminale saprà ancora da quanto tempo è passato dall'ultimo accesso.

1

chiamare un servizio Web per ottenere il tempo, anziché affidarsi al telefono. Ci sono molti posti da cui puoi ottenere il tempo, di cui Google è tuo amico sono sicuro, o crearne uno da solo, e usa l'ora locale della macchina su cui il servizio viene eseguito per il tempo.

Si potrebbe anche usare il Network Time Protocol (NTP) servers per ottenere un tempo coerente

1

Penso che se si dispone di accesso a Internet è possibile prendere il tempo da un server.

Una seconda soluzione: è possibile registrare il "datetime" e ogni volta che si vede una differenza "GRANDE" tra il record di data e ora di esecuzione si sa che potrebbe esserci un problema. ma questo non è elegante, lo so.

È anche possibile registrare una piccola quantità di datimet avviata dall'applicazione e controllare la diffrenza con il datetime in esecuzione.

Inoltre è possibile utilizzare "Attività" -> "Data/ora" in modo che gli "Aggiornamenti" (livelli, ecc.) Non possano essere ripristinati.

Poiché il sistema Datetime può essere modificato dall'utente, esiste la possibilità di "hack".

+0

Ya, non sono troppo preoccupato per il fatto che il gioco venga violato se .. gli utenti motivati ​​lo faranno .. vogliono solo renderlo almeno abbastanza difficile per la maggior parte degli utenti occasionali! – Timmy

+0

Abbastanza difficile per la maggior parte degli utenti occasionali? Usando il metodo sopra penso che sia abbastanza difficile. (Seconda soluzione) – Sanosay

Problemi correlati