Benutzerdefiniertes Inhaltspaket für Dateien


13

Ich bin dabei, einige Modellpakete von einer Website zu kaufen, um ein Prototyp für mein Spiel zu erstellen. In dem Vertrag heißt es, dass ich sie schützen muss, um zu verhindern, dass die Öffentlichkeit Zugang zu ihnen erhält.

Ich erinnere mich an die Arbeit mit den Valve-Spielen. Sie verwendeten .gcf (Spielinhaltsdatei), die im Grunde genommen ein Archiv aller Inhalte für jedes Spiel war. Sie packten Sound / Materialien / Modelle / Karten / etc. Ich dachte, es wäre vielleicht keine schlechte Idee, so etwas zu entwickeln, und schrieb einfach ein kleines Tool, mit dem ich Dateien hinzufügen / entfernen kann.

Das Problem ist, dass ich wirklich keine Ahnung habe, wie ich anfangen soll. Ich habe Google ausprobiert, wusste aber nicht einmal, wonach ich suchen sollte. Wenn jemand irgendwelche Ideen hat, Links, die von Nutzen sein könnten, oder irgendetwas anderes, würde ich es sehr schätzen.

Antworten:


9

Speichern Sie Ihre Daten in einem etwas undurchsichtigen Archivformat wie 7-Zip .

Geben Sie ihnen eine andere Dateierweiterung, damit ein gelegentlicher Benutzer sie nicht einfach mit ihrem Zip-Programm öffnen kann.

Verwenden Sie physfs , um diese Dateien zu lesen und darauf zuzugreifen. Sie können auch mit Dateien in Ihrem lokalen Verzeichnis arbeiten, sodass Sie neue Ressourcen problemlos testen können, ohne Ihre Pakete neu erstellen zu müssen. Sehr empfehlenswert.

Betrachten Sie eine sehr einfache Verschlüsselung des Inhalts, z. XOR-Verschlüsselung . Schreiben Sie eine kleine Batch-Datei oder ein Skript, um Ihre Pakete zu erstellen, und verschlüsseln Sie die eingehenden Daten. Verwenden Sie dieselbe Funktion, um die Daten in Ihrem Spiel zu entschlüsseln.

Dies wird einen entschlossenen Benutzer nicht davon abhalten - nichts wird es tun. Aber es wird gut genug sein, um die Anforderungen Ihrer Modellpakete zu erfüllen.


Jemand hat mir neulich Nacht Physfs empfohlen. Schöne kleine Bibliothek.
greyfade

8

Wenn Sie nur Prototypen erstellen, würde ich mir keine Gedanken darüber machen, Ihre Assets in eine GCF / ZIP / PAK-Datei zu packen. Die Öffentlichkeit wird Ihren Prototyp nicht sehen!

Darüber hinaus bietet der GCF von Valve so viel Schutz für Ihre Inhalte wie eine ZIP-Datei - also null. Die Datei ist nicht verschlüsselt. Sie können GCFScape herunterladen, um den Inhalt zu durchsuchen und zu extrahieren.

Es ist nicht wert, den Aufwand in Ihr eigenes Pack - Dateisystem zu schaffen , wenn Sie spezielle Bedürfnisse haben jetzt die nicht von ZIP - Dateien oder das eigenen Dateizugriffsmechanismus des OS erfüllt werden; Die einzigen Gründe, an die ich denken kann, sind:

  • Die Verschleierung von Inhalten (das Freihalten Ihrer Dateien vom Basteln hat seine Verwendung; ich schlage immer noch vor, dass es für Ihre aktuellen Bedürfnisse übertrieben ist),
  • Speichern zusätzlicher Metadaten pro Datei in einer spielspezifischen Weise, um die Daten in irgendeiner Weise zu optimieren.
  • Umgehen Sie die Einschränkungen des Betriebssystems im Hinblick auf das Dateisystem, z. B. den schnellen Zugriff auf Tausende kleiner Dateien oder den kontinuierlichen Datenzugriff. (Dies ist ein Defacto-Bedarf, wenn Sie an Konsolen arbeiten.)

Ich stimme vollkommen zu. Das Problem ist, dass ich keine Demo veröffentlichen kann, ohne dass ein Schutz vorhanden ist. ZIP ist zu bekannt, PAK ist in etwa gleich. Zumindest mit einem benutzerdefinierten Format (Valve benötigt einen CTX-Schlüssel, der in der Game-Engine fest codiert ist, um auf GCF-Dateien zuzugreifen), kann der durchschnittliche Joe nicht einfach ein Extraktionstool ausführen und einsteigen.
Aidan Knight

Woops, wusste nicht, dass Enter nicht eine Zeile weitergehen würde. Wie auch immer, ich habe diese nemesis.thewavelength.net/index.php?p=35 gefunden, die anscheinend eine Open-Source- Bibliothek ist, die unabhängig von Valve-Spielen GCF-Funktionen bietet. Das Problem, das ich hier sehe, ist, dass es viel zu robust ist, und ich suchte nach etwas Einfacherem, nur um eine Basisversion zu erstellen, die später erweitert werden kann. (Um ehrlich zu sein, macht die Art, wie er codiert, meinen Kopf weh)
Aidan Knight

4
Erwähnt dieser Vertrag aus Neugier, wie Sie deren Inhalt schützen sollen?
Blair Holloway

2
das ist der Punkt! Da Sie es nicht wirklich sichern können, müssen Sie (wenn Sie nicht dumm sind) genau wissen, was diese Inkompetenten von Ihnen erwarten. Andernfalls, was auch immer Sie tun, da es nicht funktioniert, können Sie dafür verantwortlich gemacht werden (etwas nicht zu tun, was an erster Stelle nicht möglich war).
o0 '.

3

Diese Forderung ist Bullshit.

Da das Spiel auf die Daten zugreifen kann und der Benutzer Zugriff auf das Spiel hat, gelingt es ihm, das Format, in dem Sie die Daten gespeichert haben, rückgängig zu machen, wenn Sie dumm genug waren um es zu verschlüsseln.

Sie können keine Sicherheit hinzufügen. Ich wiederhole: Sie können einfach keine Sicherheit hinzufügen . Sie können nur Dunkelheit hinzufügen, und Dunkelheit ist völlig sinnlos, da - wie gesagt - ein Benutzer mit genügend Geschick und Entschlossenheit es einfach kaputt machen wird.

Unterschreiben Sie nichts, was Sie nach etwas fragt, was nicht getan werden kann.


1
Unklarheit ist nicht sinnlos, weil die meisten Benutzer nicht "genug Geschick und Entschlossenheit" haben. Gleiches gilt für die Sicherung Ihres Eigenheims: Jeder, der wirklich einsteigen möchte, kann dies, aber es lohnt sich immer noch, es für ihn umständlich zu machen.
Kylotan

Kontrapunkt: Unklarheit ist sinnlos, denn im Gegensatz zum Eindringen in Ihr Zuhause kann jemand, der einmal in Ihr Spiel eingebrochen ist, es für andere unbedeutend machen, dies zu tun. (Auf der anderen Seite - Dunkelheit ist nicht sinnlos, weil Brett die Modelle braucht. Ich denke nur, dass die Analogie nicht gut hält.)

Wenn jemand bei Ihnen zu Hause ein Stück Gold stiehlt, hat er Ihr Stück Gold. Wenn jemand Ihr kostbares Modell aus Ihrer Datendatei entnimmt, kann er so viele Kopien anfertigen, wie er möchte. Also, nein, dieses Beispiel funktioniert nicht, da es hier völlig egal ist, wie viele Menschen Ihren wertlosen Schutz durchbrechen: Einer ist genug.
o0 '.

Eine ist ausreichend, vorausgesetzt, die anderen kümmern sich genug darum, die lokalen Dateien nicht mehr zu durchsuchen und online zu gehen, und jemandem die Mühe zu geben, die Inhalte online zu veröffentlichen (was illegal ist, während das Anzeigen Ihrer lokalen Kopie nicht) oder zu veröffentlichen Anweisungen, bei denen davon ausgegangen wird, dass Sie die Geduld haben, mit ihnen umzugehen. Jedes bisschen hilft.
Kylotan,

1
Jedes bisschen hilft wofür ? Es ist so völlig sinnlos, zu verhindern, dass Benutzer Ihre Daten überwachen und nichts dagegen tun, dass ich traurig bin. Diese idiotische Anforderung besteht mit Sicherheit darin, andere daran zu hindern, diese Daten erneut zu verwenden, sodass Sie sich nur um entschlossene Personen kümmern müssen, die sich bemühen und Erfolg haben werden (weil sie, wie gesagt, auf lange Sicht einfach nicht scheitern können). .
o0 '.

1

Oft stelle ich fest, dass es sich bei benutzerdefinierten Inhaltspaketen in der Regel um ein ZIP- oder ein RAR-Archiv mit einer anderen Erweiterung handelt. Dies ist natürlich nicht gut, wenn die Website eine benutzerdefinierte Verschlüsselung möchte.


Ja, Ogre unterstützt bereits das Laden von Ressourcen per Zip-Datei. Jemand, der in einem Chatroom erwähnt wurde, hat nur die Zip-Datei mit einem Passwort versehen, aber mit der Menge an Werkzeugen, um sie zu knacken, ist es wirklich nicht meine erste Wahl. Ich würde wirklich gerne etwas Ähnliches wie die von Valve verwendeten .gcf-Dateien tun, aber ich weiß noch nicht einmal, wonach ich suchen soll, bevor ich anfange.
Aidan Knight

Wenn jemand Ihre Zip-Datei knackt, wie ist das Ihr Problem? Ja wirklich. Sie können alles knacken, was Sie auf sie werfen können. Du versuchtest. Wo ziehen Sie die Grenze für das, wofür diese Lizenzgeber Sie verantwortlich machen können?
Neverender

1

Ein paar Ideen:

1] Haben Sie ein Standardmodellformat (z. B. .obj oder .x) verwendet oder verwenden Sie ein benutzerdefiniertes Modellformat, wenn Sie direkt in Ihr Spiel laden? Wenn Sie ein benutzerdefiniertes Format haben und Ihr Modellformat rückentwickeln müssen, um es in eine nützliche Form zu bringen, haben Sie bereits ein gewisses Maß an Schutz gegen den opportunistischen Asset-Ripper.

2] Kylotans Argument zur XOR-Verschlüsselung ist exzellent, mit der Ausnahme, dass Sie mit einer von einer Pseudozufallszahl generierten Sequenz (möglicherweise durch einen Hash auf den Dateinamen gesetzt) ​​verschlüsseln können, um lange Folgen von Nullen in Ihren Quelldaten zu vermeiden, die Ihre Verschlüsselungszeichenfolge anzeigen. Natürlich müssten Sie Ihre Dateien sofort nach dem Laden an Ort und Stelle entschlüsseln, aber wenn Sie Ihre verschlüsselte Datei in neu startbare Blöcke aufteilen, können Sie die Entschlüsselung an Ort und Stelle für mehrere Threads starten, wenn dies wirklich zu einer Belastung beim Laden wird . Aber ich bezweifle ernsthaft, dass dieses Maß an "Schutz" erforderlich ist - insbesondere, wie andere gesagt haben, wird der entschlossene Ripper es umgehen. z.B. durch Abfangen der Draw-Aufrufe mithilfe einer DLL-Umleitungsbibliothek und direktes Zurücklesen der Vertex-Puffer / Index-Puffer.

3] Sie müssten den ursprünglichen Asset-Anbieter nach den Anforderungen an den Schutz fragen, aber es könnte auch nur darum gehen, Ihrem Programm-Begrüßungsbildschirm und / oder Ihrer EULA einen Hinweis auf die Urheberrechte für Assets hinzuzufügen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.