Non è professionale lasciare a vista le risorse di gioco?


43

Ho ancora problemi a impacchettare le mie risorse, dopo aver attraversato API complicate e fondamentalmente solo file zip che mi stanno esaurendo il cervello, ho pensato di poter anche imballare il gioco con le risorse visibili all'occhio umano, in una semplice cartella.

Non sarebbe professionale? Personalmente, non ho mai visto i giochi farlo, in pratica significherebbe che il giocatore potrebbe semplicemente modificare tutto ciò che vuole nel gioco, come andare in map1.txt e aggiungere una X da qualche parte per creare un muro, o cambiare lo sprite del giocatore a un pony in MS PAINT.


30
Pensa solo a una comunità di modding :)
Orin MacGregor,

1
Sei uno sviluppatore di giochi professionale con un budget? Penso che vada bene nel caso tu non abbia intenzione di guadagnare molti soldi da questo gioco. Ho alcuni suggerimenti però. Se ti fa sentire meglio, ho usato per modificare i file di salvataggio in X-COM / UFO Defense
wolfdawn

6
@ArthurWulfWhite: Penso piuttosto che fare soldi o no, il punto di divisione è quale sia l'implicazione delle risorse modificate sul gioco. Per MMORPG, un cliente / risorse modificato potrebbe dare un vantaggio sleale a determinati giocatori, quindi vorrai impedirlo il più possibile. Per molti altri giochi, il client adatto al modding rende interessante lo sviluppo della community di modding attorno al tuo gioco ed è generalmente considerato una buona cosa.
Lie Ryan,

1
L'aspetto del modding in Quake (1) è stato gestito molto bene, senza esporre i modelli e i file bsp al giocatore occasionale. Non penso che sia male nascondere le cose pur mantenendole facilmente accessibili. Mi è piaciuto il fatto di poter modificare i file di salvataggio in X-COM, l'ho visto come una caratteristica. Tuttavia, sarebbe sciocco se ci fosse un file di testo chiamato money.txt in cui potrei semplicemente digitare la quantità di denaro con cui voglio iniziare perché in qualche modo sfoca il confine tra una sandbox e un gioco.
Wolfdawn,

2
Mi piace il modo Introversion : metti i file in file zip rinominati, ad es sound.dat. L'uso di cartelle non compresse con un paio di centinaia di file rende la (de) installazione abbastanza fastidiosa.
Tobias Kienzler,

Risposte:


44

No, il cambiamento dei dati di gioco si chiama modding, che è una pratica comune e spesso visto come un effetto positivo. In realtà è utile mantenere i dati di gioco il più trasparenti possibile e modificarli il più facilmente possibile. Ancor di più se si sceglie giocatori più "avanzati" come target di riferimento.

Il motivo per cui non troverai molti giochi AAA che utilizzano una struttura di cartelle semplice per i loro dati è che usano formati di archivio ottimizzati personalizzati per ottenere tempi di caricamento migliori. Il rovescio della medaglia è la ridotta trasparenza e gli strumenti aggiuntivi richiesti nella toolchain. Tuttavia, per i giochi più piccoli o 2D, queste due cose valgono generalmente più del tempo di caricamento migliorato.

Assicurati solo che ciò che la gente vede non sia solo un enorme casino :) metti i file in una struttura di cartelle adeguata.


Le cose sono anche imballate per essere una forma di deterrente dal furto (anche se alla fine inefficace se spinto)
CobaltHex,

15

Oltre ad altre risposte, due importanti preoccupazioni da considerare:

Sorprendenti sorprese
Diciamo che sono a metà del gioco e scopri la cartella "video". Curioso, faccio clic su uno e mi capita di vedere la scena finale del gioco.

Sfida perdente
Stesso scenario, ma trovo che il formato di gioco salvato abbia un valore per "oro". Lo cambio da 250 a 999999999 e funziona. All'improvviso la tua curva di difficoltà accuratamente realizzata, massimizzando il divertimento del gioco, scompare.

Entrambi potrebbero far perdere interesse al gioco, in parte se non del tutto. Ciò potrebbe finire con un'impressione generale inferiore di quanto fosse buono il gioco (ingiusto ma vero).

Pensa a questi in termini di pubblico target: soprattutto i giocatori più giovani sono suscettibili di rovinare il proprio divertimento senza capire davvero che è quello che stanno facendo.

Anche se vuoi incoraggiare il modding, potresti comunque voler proteggere gli utenti dal rovinare la loro esperienza con il gioco "per caso".


4
Completamente giusto. Non fa male se devi superare alcuni ostacoli prima di poter modificare il gioco. +1 per lo scenario video
wolfdawn,

14

Forse non professionale è la parola sbagliata. Dipende molto dal gioco se lasciare o meno i file esposti è una brutta cosa.

Per un semplice gioco a giocatore singolo, giocatori e modder ti adoreranno. Daresti loro la possibilità di cambiare facilmente il tuo gioco e fare quello che vogliono. E tieni presente che ci saranno sempre modder per un gioco, non importa quanto sia piccolo il gioco. Molti giocatori si sentiranno offesi se il modding è difficile, dopo tutto, hanno acquistato il tuo gioco e dovrebbero essere in grado di fare tutto ciò che vogliono in esso.

D'altra parte, modificare facilmente le risorse del gioco è dannoso per una partita multiplayer, poiché è considerato un imbroglio. I giocatori malintenzionati possono sostituire i contenuti per rendere i nemici più evidenti, i muri trasparenti, ecc. Sebbene il codice di gioco dovrebbe davvero imporre che le risorse non siano state manomesse, l'approccio del "pacchetto di risorse" ha il vantaggio di aiutare a scoraggiare questa attività (sicurezza attraverso oscurità).


1
Se sei abbastanza bravo da bypassare un test di checksum, sei abbastanza bravo da confondere anche con le risorse in pacchetto. Non credo che il packaging sia più sicuro.
mmyers,

11

C'è una soluzione semplice per questo .. Potresti semplicemente rinominare in batch le estensioni in un prompt dei comandi usando qualcosa di simile

rename *.txt *.map

E poi inseriscili in una cartella \ map

È possibile accedere a un prompt dei comandi da Windows che esegue cmd

Questo non fermerà i modder che sanno di voler modificare il gioco e lascerà un'impressione meno sciatta sulle persone che vogliono solo giocare senza tutto il contenuto in giro.

Sì, sarà comunque modificabile .. Le persone avranno meno probabilità di accorgersene.

Per rispondere al commento di Eric Robertson

Se desideri nascondere correttamente il contenuto del tuo gioco ai giocatori, puoi utilizzare la crittografia RSA su quei file di testo e unirli in un file di testo mentre ci sei. Questo non dovrebbe essere troppo disturbo, anche se sospetto che sia molto più che esagerare.


1
-1 Questa non è davvero una "correzione". Le risorse sono ancora disponibili per gli occhi.
Erick Robertson,

6
@Eric Robertson Beh, si potrebbe dire anche dell'imballaggio di Quake (1). Non esiste una soluzione magica per nascondere completamente le risorse. Questo ha lo scopo di nasconderli al giocatore occasionale e di eludere in qualche modo i problemi che ha citato. Detto questo, inserirli in una struttura di cartelle o in un pacchetto di risorse non significa che le risorse non siano presenti (disponibili alla vista) a meno che non si utilizzi la crittografia.
Wolfdawn,

So che le estensioni dei file non contano su Linux, ma sei sicuro che funzionerebbe su Windows?
jcora,

1
@Bane Il nome di un file non ha importanza per il periodo, provare questo, rinominare un file .txt in .zip, .bmp o .xyz e riaprirlo con il blocco note. il nome del file è importante solo quando si sfogliano file sul PC, ad esempio .xyz ha una certa icona associata ad essi, se si desidera aprire un file con xsoftware, mostrerà solo i file * .x per impostazione predefinita, il blocco note mostrerà. file txt, mspaint mostrerà gif, jpeg, bmps, pngs, tiffs, icos e così via. I nomi dei file sono solo una comoda convenzione (quindi non è necessario esaminare e analizzare i dati all'interno del file per identificare la natura del suo contenuto
wolfdawn,

1
Grazie per aver spiegato! Quindi Windows non sembra molto diverso da Linux in quel dominio
jcora,

3

Se mai fosse stato poco professionale, potrebbe non esserlo più. All'inizio i giochi usavano i loro formati di pacchetti, principalmente per preservare la loro proprietà intellettuale (IP).

È possibile superare alcune limitazioni come la frammentazione e le invocazioni di funzioni non necessarie del file system nativo sottostante, comprimendo tutte le risorse in un singolo archivio. Ciò rende meno probabili gli eventi di frammentazione durante la distribuzione del pacchetto sul PC del client.
Nel peggiore dei casi potresti finire per avere minuscole risorse di file individuali sparse per i tuoi settori del disco rigido. (Con l'arrivo di SSD questo punto viene spesso reso discutibile)

Ma tutti questi vantaggi possono anche essere ottenuti con il .tarformato di archivio gratuito (Unix) .

Inoltre, utilizzando il proprio formato di pacchetto, è possibile superare limitazioni quali la mancanza di controllo delle versioni, hash dei file, codifica e puntatori / collegamenti all'interno dei file, per citarne solo alcuni.

Concludendo , vorrei discutere per la trasparenza nello sviluppo dell'Indie, a meno che tu non abbia esplicitamente bisogno di proteggere il tuo IP.


Per quanto riguarda i grandi punti sollevati da MGOwen: Per evitare sorprese Spoiling è possibile rinominare l'estensione del file, modificare gli attributi del file, utilizzare formati multimediali non comuni, asportare l'intestazione multimediale e archiviarla altrove, ecc ... Per evitare la perdita di sfida utilizzare una serializzazione binaria per salvare lo stato del tuo gioco, con crittografia aggiuntiva e variabili di richiamo, se necessario.

Disclaimer: non sono uno sviluppatore di giochi. Considera questo post solo come un punto di partenza ...


1
"Per evitare la perdita di sfida, usa uno scrittore di serializzazione binario per memorizzare lo stato del tuo gioco, con crittografia aggiuntiva e variabili di richiamo, se necessario." Se le persone vogliono imbrogliare, imbrogliano. Con un debugger in-memory che cerca quali quattro byte in memoria sono correlati al tuo gold e tiene traccia delle modifiche ad esso, se necessario.
Casuale 832,

1
@ Random832 Amen a quello.
Lorenz Lo Sauer,

La tua risposta è sbagliata L'accesso al contenuto di 6000 file piccoli è tra 5 e 10 volte più lento nella mia esperienza rispetto all'accesso allo stesso contenuto da 1 file. Nel caso in cui il caricamento richieda 5 secondi su un SSD, 15 secondi da un normale disco rigido rompono gli stessi dati in file modificabili e caricano i salti per oltre 30 secondi su entrambi (HDD e SSD). Quindi, per qualche motivo, l'aumento è più pronunciato sull'SSD che sull'HDD. (Nessun RAID in entrambi i casi)
Coyote,

@Coyote Avevo l'impressione di aver litigato per lo stesso punto nel post ...? Frammentazione (ovvero limitazioni dell'hardware controller, limitazioni fisiche dei piatti ...) + molte invocazioni API del file system (spesso tramite wrapper) = Lento
Lorenz Lo Sauer,

Questa frase particolare è sbagliata quindi: "Con l'arrivo di SSD questo punto è reso discutibile"
Coyote,

1

È facile da risolvere e altrimenti l'indicizzazione della ricerca troverà i tuoi video finali, ecc. Quindi,

Per i file di dati: capovolgere i bit con xor

   realByte_cpp = readByte_cpp ^ 0x44; // xor

Per nascondere "Oro: 250" da GREP.

Basta codificare con lo stesso valore xor (casuale).

Per tenere le scene lontane dagli utenti occasionali, prova questo: Machinarium ha tradotto i nomi dei file in modo che \ videos diventasse \ 0101 e tutti i file avessero quindi un ID di 8 cifre binarie seguito da .101 per fermare le associazioni di file.

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.