Спеціальний пакет вмісту для файлів


13

Я збираюся придбати досить багато модельних пакетів з веб-сайту для прототипування моєї гри. У договорі зазначено, що я повинен їх захищати, щоб не допустити доступу громадськості до них.

Пам’ятаю, працюючи з іграми Valve, вони використовували .gcf (файл вмісту гри), який в основному був архівом всього вмісту для кожної гри. Вони упаковані в звук / матеріали / моделі / карти / тощо. Я подумав, що це може бути не поганою ідеєю розробити щось подібне до цього, і просто написати невеликий інструмент, щоб дозволити мені додавати / видаляти файли з нього.

Проблема в тому, що я насправді не маю уявлення, як почати щось подібне. Я спробував Google, але навіть не знав, що шукати. Якщо у когось є якісь ідеї, посилання, які можуть бути корисні, чи що-небудь інше, я дуже вдячний.

Відповіді:


9

Зберігайте свої дані в дещо незрозумілому архівному форматі, наприклад 7-Zip .

Дайте їм інше розширення файлу, щоб випадковий користувач не міг легко відкрити їх за допомогою програми zip.

Використовуйте Physfs для читання та доступу до цих файлів. Це також дозволяє працювати з файлами у вашому локальному каталозі, так що ви можете легко протестувати нові ресурси без відновлення своїх пакетів. Настійно рекомендується.

Розглянемо дуже тривіальне шифрування вмісту, наприклад. Шифрування XOR . Напишіть невеликий пакетний файл або сценарій для створення ваших пакетів, шифруючи дані під час їх надходження, і використовуйте ту ж функцію, щоб розшифрувати дані у вашій грі.

Це не убереже рішучого користувача - нічого не буде. Але це буде досить добре, щоб задовольнити вимоги ваших модельних пакетів.


Хтось порекомендував мені іншої ночі фізкультуру. Приємна маленька бібліотека.
greyfade

8

Якщо ви просто прототипуєте, я б не переймався упаковкою своїх активів у файл GCF / ZIP / PAK; публіка не збирається бачити ваш прототип!

Крім того, GCF Valve забезпечує стільки ж захисту вашого вмісту, скільки і ZIP-файл - тобто нуль. Файл не шифрується; ви можете завантажити GCFScape для перегляду та вилучення його вмісту.

Це не варто покласти зусилля в створенні власного пакета файлової системи , якщо у вас є конкретні потреби прямо зараз , не задовольняються ZIP файли або власний механізм доступу до файлів в ОС; насправді єдині причини, про які я можу подумати, - це:

  • Обмеження вмісту (для збереження ваших файлів від повороту є корисним; я все-таки пропоную його надмірність для ваших поточних потреб),
  • Зберігання додаткових метаданих на файл у певному ігровому способі, щоб певним чином керувати вмістом даних,
  • Обхід обмежень файлової системи ОС, таких як необхідність швидкого доступу до тисяч невеликих файлів або забезпечення постійного доступу до даних. (Це дефактова потреба під час роботи над консолями.)

Я згоден повністю. Проблема в тому, що я не зможу випустити демонстрацію без якоїсь форми захисту. ZIP занадто добре відомий, PAK - приблизно те саме. Принаймні у користувальницькому форматі (Valve потрібен ключ CTX, який жорстко закодований в ігровий движок для доступу до файлів GCF) середній Джо не зможе просто запустити на ньому інструмент для вилучення та потрапити.
Aidan Knight,

Woops, не розуміючи, що вхід не піде на лінію. У будь-якому разі, я знайшов це nemesis.thewavelength.net/index.php?p=35, який, здається, є Lib з відкритим кодом, який забезпечує функцію GCF незалежно від ігор Valve. Проблема, яку я бачу тут, полягає в тому, що вона є надто надійною, і я шукав щось трохи простіше просто створити базову версію, яку згодом розгорнути. (Якщо чесно, то, як він кодує, мені болить голова)
Лицар

4
З цікавості, чи згадує цей договір, як ви повинні захищати їхній вміст?
Блер Холлоуей,

2
в тім-то й річ! Оскільки ви справді не можете її забезпечити, вам обов'язково (якщо ви не дурні) точно знати, що ці некомпетентні бажають зробити ви. Інакше все, що ви робите, оскільки це не спрацює, ви можете нести відповідальність (в першу чергу не робити те, що не вдалося зробити).
o0 '.

3

Ця вимога - ну, фігня.

Оскільки гра може отримати доступ до даних, а користувач має доступ до гри, якщо він достатньо кваліфікований і рішучий, йому вдасться переробити інженерний формат, який ви використовували для зберігання даних, і захопити ключовий ключ, якщо ви були досить дурними щоб зашифрувати його.

Ви не можете додати безпеку. Повторюю: ви просто НЕ МОЖЕТЕ додати безпеку . Ви можете лише додати незрозумілості, а незрозумілість абсолютно безглузда, оскільки - як я вже сказав - користувач з достатньою майстерністю та рішучістю просто зламає її.

Не підписуйте нічого, що вимагає від вас чогось, чого неможливо зробити.


1
Непомітність не є безглуздим, оскільки більшість користувачів не мають "достатньої кількості навичок та рішучості". Те саме стосується і забезпечення вашого будинку: кожен, хто дійсно хоче ввійти, може зробити це, але все ж вважається, що варто зробити це незручно для них.
Килотан

Контрпункт: Непрозорість безглузда, тому що на відміну від проникнення у ваш будинок, коли хтось увірвався у вашу гру, вони можуть зробити це тривіальним для будь-кого іншого. (З іншого боку - затемнення не є безглуздим, оскільки Бретту потрібні моделі. Я просто не думаю, що аналогія тримається добре.)

Якщо хтось вкраде шматочок золота з вашого будинку, він має ваш золотий шматок. Якщо хтось захопить вашу дорогоцінну модель з вашого файлу даних, він може зробити стільки копій, скільки захоче. Отже, ні, цей приклад не працює, оскільки тут абсолютно не має значення, скільки людей тріщить через ваш нікчемний захист: одного достатньо.
o0 '.

Одного достатньо, якщо припустити, що інші достатньо дбайливі, щоб перестати переглядати їхні локальні файли та перейти в Інтернет, щоб подивитися, і забезпечити когось, хто намагався розмістити речі в Інтернеті (що незаконно, тоді як перегляд вашої локальної копії не є) або публікацію інструкції, які передбачають, що у вас є терпіння пройти з ними. Кожен маленький допомагає.
Килотан

1
Кожна маленька допомагає для чого ? Забороняти користувачам переглядати ваші дані і нічого не робити з цим настільки безглуздо, що мене сумує. Ця ідіотична вимога, безумовно, існує для того, щоб інші люди не могли повторно використовувати ці дані, тому вам потрібно дбати лише про рішучих людей, які будуть намагатися і досягати успіху (тому що, як я вже сказав, в кінцевому рахунку вони просто не можуть зірватися) .
o0 '.

1

Я багато разів помічаю, що власні пакети вмісту мають тенденцію бути .zip або .rar архівом з іншим розширенням. Звичайно, це не корисно, якщо веб-сайт хоче певне шифрування на замовлення.


Так, Ogre вже підтримує завантаження ресурсів через zip-файл. Хтось згадав у кімнаті для чату лише паролі поштового файлу, але кількість інструментів для їх зламування - це справді не мій перший вибір. Мені б дуже хотілося зробити щось подібне до файлів .gcf, якими користується Valve, але я навіть не знаю, що шукати, що стосується початку роботи.
Айдан Лицар,

Якщо хтось зламає ваш поштовий файл, як це у вас проблема? Дійсно. Вони можуть тріснути все, що ви можете кинути на них. Ти намагався. Де ви проводите межу за те, що ці ліцензіари можуть нести вас за відповідальність?
Неверендер

1

Кілька ідей:

1] Ви використовували стандартний формат моделі (наприклад, .obj або .x) або використовуєте нестандартний формат моделі під час завантаження безпосередньо у грі? Якщо у вас є власний формат, і вам доведеться змінити формат вашої моделі, щоб перетворити його в корисну форму, тоді ви вже отримали певний рівень захисту від умовно-прибуткового активізатора активів.

2] Точка Kylotan щодо шифрування XOR є відмінною, за винятком зауваження, що ви можете зашифрувати за допомогою псевдовипадкової послідовності, що генерується числом (можливо, посіяне хешем на ім'я файлу), щоб уникнути довгих послідовностей нулів у вихідних даних, що показують ваш рядок шифрування. Звичайно, вам доведеться розшифрувати свої файли відразу після завантаження, але розбиття зашифрованого файлу на блоки, що перезавантажуються, дозволить вам почати розшифрування на місці на декількох потоках, якщо це дійсно стане тягарем часу завантаження . Але я серйозно сумніваюся, що цей рівень "захисту" потрібен - особливо, як уже говорили інші, рішучий ріппер обійде його. напр. перехоплюючи дзвінки виклику, використовуючи бібліотеку обходу DLL, і безпосередньо зчитуючи вершинні буфери / індексні буфери.

3] Вам потрібно буде запитати постачальника активів щодо їхніх вимог щодо захисту, але це може бути лише питанням розмиття щодо авторських прав на активи на екрані зриву програми та / або в ваш EULA.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.