Pacchetto di contenuti personalizzati per file


13

Sto per acquistare alcuni pacchetti di modelli da un sito Web per la prototipazione del mio gioco. Nel contratto si afferma che devo proteggerli in modo da impedire al pubblico di accedervi.

Ricordo di aver lavorato con i giochi Valve, hanno usato .gcf (file di contenuto del gioco) che sostanzialmente era un archivio di tutto il contenuto di ogni gioco. Hanno imballato in suoni / materiali / modelli / mappe / ecc. Ho pensato che potrebbe non essere una cattiva idea sviluppare qualcosa di simile a questo, e basta scrivere un piccolo strumento per farmi aggiungere / rimuovere file da esso.

Il problema è che non ho davvero idea di come iniziare su qualcosa del genere. Ho provato Google ma non sapevo nemmeno cosa cercare. Se qualcuno ha qualche idea, link che potrebbero essere utili o qualsiasi altra cosa, lo apprezzerei molto.

Risposte:


9

Archivia i tuoi dati in un formato di archivio leggermente oscuro come 7-Zip .

Assegna loro un'estensione di file diversa in modo che un utente occasionale non possa facilmente aprirli con il loro programma zip.

Usa Physfs per leggere e accedere a quei file. Inoltre, consente di lavorare anche con i file nella directory locale, in modo da poter testare facilmente nuove risorse senza ricostruire i pacchetti. Altamente raccomandato.

Prendi in considerazione una crittografia molto banale sul contenuto, ad es. Crittografia XOR . Scrivi un piccolo file batch o uno script per creare i tuoi pacchetti, crittografando i dati mentre vengono inseriti e usa la stessa funzione per decrittografare i dati nel tuo gioco.

Questo non terrà fuori un determinato utente - niente lo farà. Ma sarà abbastanza buono per soddisfare i requisiti dei pacchetti di modelli.


Qualcuno mi ha consigliato i fisici l'altra sera. Bella piccola biblioteca.
Greyfade,

8

Se stai solo prototipando, non mi preoccuperei di impacchettare le tue risorse in un file GCF / ZIP / PAK; il pubblico non vedrà il tuo prototipo!

Inoltre, GCF di Valve offre la stessa protezione per il contenuto di un file ZIP, ovvero zero. Il file non è crittografato; puoi scaricare GCFScape per sfogliare ed estrarne il contenuto.

Non vale la pena impegnarsi nella creazione del proprio file system pack a meno che non si abbiano esigenze specifiche in questo momento che non sono soddisfatte dai file ZIP o dal meccanismo di accesso ai file del sistema operativo; in effetti, le uniche ragioni che mi vengono in mente sono:

  • Offuscamento dei contenuti (mantenere i file liberi da armeggiare ha i suoi usi; suggerisco ancora che sia eccessivo per le tue attuali esigenze),
  • Archiviazione di metadati per file aggiuntivi in ​​un modo specifico del gioco per aiutare i dati a guidare i tuoi contenuti in qualche modo,
  • Come aggirare le limitazioni del filesystem del sistema operativo, come la necessità di accedere rapidamente a migliaia di piccoli file o garantire l'accesso contiguo ai dati. (Questo è assolutamente necessario quando si lavora su console.)

Sono completamente d'accordo. Il problema è che non sarò in grado di rilasciare una demo senza una qualche forma di protezione in atto. ZIP è troppo noto, PAK è più o meno lo stesso. Atleast con un formato personalizzato (Valve richiede una chiave CTX che è hardcoded nel motore di gioco per accedere ai file GCF) il joe medio non sarà solo in grado di eseguire uno strumento di estrazione su di esso ed entrare.
Aidan Knight

Accidenti, non avevo capito che entrare non sarebbe andato in secondo piano. Comunque, ho trovato questo nemesis.thewavelength.net/index.php?p=35 che sembra essere un lib open source che fornisce funzionalità GCF indipendentemente dai giochi Valve. Il problema che vedo qui è che è troppo robusto, e stavo cercando qualcosa di un po 'più semplice solo per creare una versione di base da espandere in seguito. (Ad essere sincero, il modo in cui codifica mi fa male alla testa)
Aidan Knight,

4
Per curiosità, questo contratto menziona come dovresti proteggere il loro contenuto?
Blair Holloway,

2
questo è il punto! Dal momento che non puoi davvero assicurarlo, è obbligatorio per te (se non sei stupido) sapere esattamente cosa vogliono fare questi incompetenti. Altrimenti qualunque cosa tu faccia, dal momento che non funzionerà, puoi essere ritenuto responsabile (di non fare qualcosa che non poteva essere fatto in primo luogo).
o0 '.

3

Questo requisito è, beh, cazzate.

Poiché il gioco può accedere ai dati e l'utente ha accesso al gioco, se è abile e determinato abbastanza, riuscirà a decodificare il formato che hai usato per archiviare i dati e afferrare l'eventuale chiave se fossi abbastanza stupido per crittografarlo.

Non è possibile aggiungere sicurezza. Ripeto: NON PUOI solo aggiungere sicurezza . Puoi solo aggiungere oscurità, e l'oscurità è totalmente inutile, poiché - come ho detto - un utente con abbastanza abilità e determinazione lo distruggerà.

Non firmare nulla che ti chieda qualcosa che non può essere fatto.


1
L'oscurità non è inutile perché la maggior parte degli utenti non ha "sufficiente competenza e determinazione". Lo stesso vale per proteggere la tua casa: chiunque voglia davvero entrarci può farlo, ma è comunque considerato utile renderlo imbarazzante per loro.
Kylotan,

Contrappunto: l'oscurità è inutile perché a differenza di irrompere nella tua casa, una volta che qualcuno ha fatto irruzione nel tuo gioco può renderlo banale per chiunque lo faccia. (D'altra parte - L'oscurità non è inutile, perché Brett ha bisogno dei modelli. Non credo proprio che l'analogia regge bene.)

Se qualcuno ruba un pezzo d'oro da casa tua, ha il tuo pezzo d'oro. Se qualcuno prende il tuo prezioso modello dal tuo file di dati, può fare tutte le copie che desidera. Quindi, no, questo esempio non funziona dal momento che qui non importa quante persone creino la tua inutile protezione: ne basta uno.
o0 '.

Uno è sufficiente, supponendo che gli altri si preoccupino abbastanza di smettere di guardare i loro file locali e di andare online per guardare, e fornire a qualcuno è andato lo sforzo di pubblicare le cose online (che è illegale, mentre non è la visualizzazione della tua copia locale), o la pubblicazione istruzioni, che presuppongono che tu abbia la pazienza di seguirle. Ogni piccolo aiuto.
Kylotan,

1
Ogni piccolo aiuta per cosa ? Impedire agli utenti di guardare i tuoi dati e non fare nulla al riguardo è così totalmente inutile che mi rende triste. Questo requisito idiota esiste sicuramente per impedire ad altre persone di riutilizzare quei dati, quindi devi solo preoccuparti di determinate persone che si impegneranno duramente e avranno successo (perché, come ho detto, a lungo andare non possono proprio fallire) .
o0 '.

1

Molte volte noto che i pacchetti di contenuti personalizzati tendono ad essere un archivio .zip o .rar con un'estensione diversa. Ovviamente, questo non va bene se il sito Web desidera una crittografia personalizzata di qualche tipo.


Sì, Ogre supporta già il caricamento di risorse tramite file zip. Qualcuno ha menzionato in una chat room solo la password del file zip, ma con la quantità di strumenti in giro per decifrarli, non è davvero la mia prima scelta. Mi piacerebbe davvero fare qualcosa di simile ai file .gcf utilizzati da Valve, ma non so nemmeno cosa cercare per iniziare.
Aidan Knight,

Se qualcuno rompe il tuo file zip, qual è il tuo problema? Veramente. Possono rompere tutto ciò che puoi lanciare contro di loro. Hai provato. Dove traccia la linea per ciò che questi licenziatari possono ritenere responsabili?
Neverender,

1

Alcune idee:

1] Hai usato un formato modello standard (ad es. .Obj o .x) o usi un formato modello personalizzato quando carichi direttamente nel tuo gioco? Se hai un formato personalizzato e dovresti decodificare il formato del tuo modello per farlo diventare una forma utile, allora hai già un certo livello di protezione contro lo sfrutatore di risorse opportunistico.

2] Il punto di Kylotan sulla crittografia XOR è eccellente, tranne per notare che è possibile crittografare utilizzando una sequenza generata da numeri pseudo-casuali (possibilmente seminata da un hash sul nome file) per evitare lunghe sequenze di zero nei dati di origine che mostrano la stringa di crittografia. Ovviamente dovresti decodificare sul posto i tuoi file immediatamente dopo che sono stati caricati, ma suddividere il tuo file crittografato in blocchi riavviabili ti consentirà di avviare la decrittografia sul posto su più thread se questo diventa davvero un carico di caricamento . Ma dubito seriamente che questo livello di "protezione" sia necessario - in particolare, come altri hanno già detto, lo scarificatore determinato lo aggirerà. per esempio. intercettando le chiamate di disegno usando una libreria di deviazioni DLL e rileggendo direttamente i buffer dei vertici / buffer degli indici.

3] Dovresti chiedere al fornitore di risorse originale i loro requisiti di protezione, ma potrebbe essere solo una questione di aggiungere una confusione sui diritti d'autore alla schermata iniziale del programma e / o al tuo EULA.

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.