Nascondere i dati di gioco dal giocatore?


13

Sto lavorando al mio primo gioco (C ++) e voglio usare un design basato su componenti. Ho letto molto su questo ultimamente e ieri ho deciso di voler archiviare i dati degli oggetti in file JSON esterni, per consentire maggiore flessibilità e facilità di accesso.

Poi mi sono reso conto che lasciare questi file nell'albero delle directory del gioco avrebbe permesso ai giocatori di modificare tutto ciò che desideravano molto facilmente.

Non sono preoccupato di mostrare il codice agli sviluppatori, perché il gioco sarà open source, ma temo che un giocatore inesperto potrebbe interrompere il gioco o almeno rovinare il divertimento.

Mi sto perdendo qualcosa? Qual è la politica di nascondere i dati di gioco (nei giochi open source)? È normale lasciare tutto chiaramente accessibile a chiunque?

In caso contrario, qual è un buon modo per nascondere i dati?


3
Di solito la possibilità di modificare il gioco è una caratteristica, non un bug, specialmente per i giochi a giocatore singolo.
giovedì

8
Non mi preoccuperei, davvero. Il tuo tempo è meglio speso per fare un buon gioco. =)
Jari Komppa,

1
Sono propenso a pensare che (quasi) chiunque scarichi un gioco open source ne sappia abbastanza per divertirsi a armeggiare con i dati di gioco e interrompere il gioco in corso. Se è un buon gioco, vedresti apparire una wiki che spiega il tuo formato JSON in pochissimo tempo!
Nevermind,

Risposte:


33

Se i giocatori armeggiano e rovinano il divertimento, direi che è il loro problema. Per gli armeggiatori metà del divertimento è vedere cosa si rompe.

È come preoccuparsi che i giocatori usino un cheat code in modalità god ed essere preoccupati che il giocatore non sia sfidato.

Non farei altro che mettere quei file di configurazione in un file zip (cosa che dovresti probabilmente fare comunque per i tempi di caricamento) e assicurarmi che il tuo codice possa gestire i dati corrotti con garbo.


20

Temo che un giocatore inesperto potrebbe interrompere il gioco o almeno rovinare il divertimento.

Se si intromettono con i dati di gioco, questo è ciò che considerano "divertente". Non è necessario proteggerli da questo. Dopotutto, i dati dei componenti delle entità non sono quasi uno spoiler. Forse se avessi dati di dialogo o di ricerca lì dentro, sarebbe un problema, ma probabilmente no. La maggior parte dei giocatori non sa nemmeno dove cercare questo genere di cose, non importa se cercarla deliberatamente o modificarla.

Il mio consiglio è di comprimerlo e rinominare l'estensione del file. Ciò manterrà lo sguardo casual ma non sarà difficile per te lavorare. Puoi usare qualcosa come PhysicsFS per lavorare con i file.


5
Sì. Ricordo di aver giocato a Colonization su Amiga. I parametri delle unità sono stati memorizzati in un semplice file di testo con txtestensione standard . Dopo aver giocato parecchio ho deciso che avrei reso il gioco più difficile regolando quei parametri. Successivamente ho condiviso queste impostazioni con gli amici. È stato divertente ...
liori

3

È possibile archiviare i dati crittografati , utilizzando uno schema di crittografia simmetrica (AES), ma questo è inutile: il software è open source , quindi tutti possono leggere la chiave e quindi decrittografare i dati. Ciò "fermerebbe" il truffatore del giocatore occasionale.

E sarebbe in qualche modo inutile anche nei progetti a sorgente chiuso, dal momento che è abbastanza facile trovare la chiave nel binario del gioco.

Quindi, hai due possibilità:

  1. lascia le cose non crittografate (ma almeno raccogli l'hash md5 di ogni file, in modo da poterlo controllare in fase di esecuzione contro eventuali danni nella distribuzione del tuo gioco);
  2. vai a sorgente chiuso , rimescola i dati (con un algoritmo multiplo reversibile segreto come stringa inversa + scambio di byte + xor con una stringa costante, ecc ...) e quindi cripta tutto con AES. Sarà più difficile per chiunque recuperare i dati. Molto più difficile.

1
Anche il tuo metodo a sorgente chiuso non è poi così difficile. Le stesse persone che interrompono sistematicamente gli schemi utilizzati per la protezione dalla copia possono probabilmente anche rompere quello. La differenza principale è che non si preoccuperanno.
giovedì

@jprete: di sicuro. È solo una questione di tempo, ma il tempo è fondamentale per le persone, quindi renderlo difficile e non redditizio, a volte, è appena sufficiente.
gd1,

3

Lo lascerei. C'è un'enorme community di mod e ai giocatori piacciono i giochi di modifica / modifica. Se rompono qualcosa, è su di loro. Potrebbero sempre reinstallare.

Inoltre, rende più facile lavorare con altri sviluppatori.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.