Paket Konten Kustom untuk File

13

Saya akan membeli beberapa paket model dari sebuah situs web untuk membuat prototip permainan saya. Dalam kontrak itu disebutkan bahwa saya harus melindungi mereka untuk mencegah publik mendapatkan akses kepada mereka.

Saya ingat bekerja dengan game Valve, mereka menggunakan .gcf (file konten game) yang pada dasarnya adalah arsip semua konten untuk setiap game. Mereka dikemas dalam suara / bahan / model / peta / dll. Saya pikir itu mungkin bukan ide yang buruk untuk mengembangkan sesuatu yang mirip dengan ini, dan hanya menulis alat kecil untuk membiarkan saya menambah / menghapus file dari itu.

Masalahnya adalah saya benar-benar tidak tahu bagaimana cara memulai sesuatu seperti ini. Saya mencoba Google tetapi saya bahkan tidak tahu apa yang harus dicari. Jika ada yang punya ide, tautan yang mungkin berguna, atau apa pun, saya akan sangat menghargainya.

Aidan Knight
sumber

Jawaban:

9

Simpan data Anda dalam format arsip yang sedikit tidak jelas seperti 7-Zip .

Berikan mereka ekstensi file yang berbeda sehingga pengguna biasa tidak dapat dengan mudah membukanya dengan program zip mereka.

Gunakan PhysFs untuk membaca dan mengakses file-file itu. Ini juga memungkinkan Anda bekerja dengan file di direktori lokal Anda juga, sehingga Anda dapat dengan mudah menguji sumber daya baru tanpa membangun kembali paket Anda. Sangat dianjurkan.

Pertimbangkan enkripsi yang sangat sepele pada konten, misalnya. Enkripsi XOR . Tulis file batch kecil atau skrip untuk membangun paket Anda, mengenkripsi data saat masuk, dan menggunakan fungsi yang sama untuk mendekripsi data dalam game Anda.

Ini tidak akan membuat pengguna yang ditentukan keluar - tidak ada yang bisa. Tapi itu akan cukup baik untuk memenuhi persyaratan paket model Anda.

Kylotan
sumber
Seseorang merekomendasikan physfs kepada saya malam itu. Perpustakaan kecil yang bagus.
greyfade
8

Jika Anda hanya membuat prototipe, maka saya tidak akan khawatir tentang mengemas aset Anda menjadi file GCF / ZIP / PAK; publik tidak akan melihat prototipe Anda!

Selain itu, GCF Valve menyediakan perlindungan sebanyak mungkin untuk konten Anda seperti halnya file ZIP - yaitu nol. File tidak dienkripsi; Anda dapat mengunduh GCFScape untuk menelusuri dan mengekstrak isinya.

Tidak ada gunanya berupaya menciptakan sistem file paket Anda sendiri kecuali Anda memiliki kebutuhan spesifik saat ini ini yang tidak terpenuhi oleh file ZIP atau mekanisme akses file OS sendiri; pada kenyataannya, satu-satunya alasan yang dapat saya pikirkan adalah:

  • Kebingungan konten (menjaga file Anda bebas dari mengutak-atik memiliki kegunaannya; Saya masih menyarankan berlebihan untuk kebutuhan Anda saat ini),
  • Menyimpan metadata per-file tambahan dalam cara khusus gim untuk membantu mendorong data dengan konten Anda dengan cara tertentu,
  • Mengatasi keterbatasan sistem file OS, seperti perlu mengakses ribuan file kecil dengan cepat, atau memastikan akses data yang berdekatan. (Ini adalah kebutuhan defacto ketika mengerjakan konsol.)
Blair Holloway
sumber
Aku sangat setuju. Masalahnya adalah, saya tidak akan dapat merilis demo tanpa perlindungan. ZIP terlalu terkenal, PAK hampir sama. Atleast dengan format khusus (Valve membutuhkan kunci CTX yang di-hardcode ke mesin gim untuk mengakses file GCF) rata-rata joe tidak akan hanya dapat menjalankan alat ekstraksi di atasnya dan masuk.
Aidan Knight
Woops, tidak menyadari masuk tidak akan turun garis. Bagaimanapun, saya menemukan nemesis.thewavelength.net/index.php?p=35 ini yang tampaknya merupakan sumber terbuka Lib yang menyediakan fungsionalitas GCF yang independen dari game Valve. Masalah yang saya lihat di sini adalah bahwa itu terlalu kuat, dan saya sedang mencari sesuatu yang sedikit lebih sederhana hanya untuk membuat versi dasar untuk diperluas nanti. (Sejujurnya, cara dia kode membuat kepalaku sakit)
Aidan Knight
4
Karena penasaran, apakah kontrak ini menyebutkan bagaimana Anda seharusnya melindungi konten mereka?
Blair Holloway
2
itulah intinya! Karena Anda tidak dapat benar - benar mengamankannya, Anda wajib (jika Anda tidak bodoh) untuk mengetahui dengan tepat apa yang tidak kompeten ini ingin Anda lakukan. Kalau tidak, apa pun yang Anda lakukan, karena itu tidak akan berhasil, Anda dapat dimintai pertanggungjawaban (tidak melakukan sesuatu yang tidak dapat dilakukan sejak awal).
o0 '.
3

Persyaratan ini, omong kosong.

Karena gim dapat mengakses data, dan pengguna memiliki akses ke gim, jika ia cukup terampil dan bertekad untuk mengelola balik format yang Anda gunakan untuk menyimpan data dan mengambil kunci akhirnya jika Anda cukup bodoh untuk mengenkripsi itu.

Anda tidak dapat menambahkan keamanan. Saya ulangi: Anda TIDAK BISA menambahkan keamanan . Anda hanya dapat menambahkan ketidakjelasan, dan ketidakjelasan sama sekali tidak ada gunanya, karena - seperti yang saya katakan - pengguna dengan keterampilan dan tekad yang cukup hanya akan merusaknya.

Jangan menandatangani apa pun yang meminta Anda sesuatu yang tidak dapat dilakukan.

o0 '.
sumber
1
Ketidakjelasan tidak ada gunanya karena sebagian besar pengguna tidak memiliki "keterampilan dan tekad yang cukup". Hal yang sama berlaku untuk mengamankan rumah Anda: siapa pun yang benar-benar ingin masuk bisa melakukannya, tetapi masih dianggap berharga sehingga membuatnya canggung bagi mereka.
Kylotan
Counterpoint: Ketidakjelasan tidak ada gunanya karena tidak seperti membobol rumah Anda, begitu seseorang masuk ke dalam gim Anda, mereka bisa membuatnya sepele bagi orang lain untuk melakukannya. (Di sisi lain - Ketidakjelasan tidak ada gunanya, karena Brett membutuhkan model. Saya hanya tidak berpikir analogi ini berlaku dengan baik.)
Jika seseorang mencuri sepotong emas dari rumah Anda, ia memiliki sepotong emas Anda. Jika seseorang mengambil model berharga Anda dari datafile Anda, ia dapat melakukan sebanyak mungkin salinan yang diinginkan. Jadi, tidak, contoh ini tidak berfungsi karena di sini sama sekali tidak masalah berapa banyak orang yang meretas perlindungan Anda yang tidak berharga: satu saja sudah cukup.
o0 '.
Satu sudah cukup, dengan asumsi yang lain cukup peduli untuk berhenti melihat file lokal mereka dan online untuk melihat, dan memberikan seseorang pergi ke upaya memposting barang secara online (yang ilegal, sedangkan melihat salinan lokal Anda tidak), atau memposting instruksi, yang menganggap Anda memiliki kesabaran untuk melanjutkannya. Setiap bantuan kecil.
Kylotan
1
Setiap bantuan kecil untuk apa ? Mencegah pengguna menonton data Anda dan tidak melakukan apa-apa tentang hal itu sangat tidak berguna yang membuat saya sedih. Persyaratan konyol ini pasti ada untuk mencegah orang lain menggunakan kembali data-data itu, jadi Anda hanya perlu peduli dengan orang-orang yang memiliki tekad kuat yang akan berusaha keras dan berhasil (karena, seperti yang saya katakan, dalam jangka panjang mereka tidak bisa gagal) .
o0 '.
1

Sering kali saya perhatikan bahwa paket konten khusus cenderung berupa arsip .zip atau .rar dengan ekstensi berbeda. Tentu saja, ini tidak baik jika situs web menginginkan semacam enkripsi kustom.

Christopher Horenstein
sumber
Ya, Ogre sudah mendukung pemuatan sumber daya melalui file zip. Seseorang yang disebutkan di ruang obrolan hanya menulis file zip, tetapi dengan jumlah alat untuk memecahkannya, itu sebenarnya bukan pilihan pertama saya. Saya benar-benar ingin melakukan sesuatu yang mirip dengan file .gcf yang digunakan Valve, tetapi saya bahkan tidak tahu apa yang harus dicari sejauh memulai.
Aidan Knight
Jika seseorang memecahkan file zip Anda, bagaimana itu masalah Anda? Betulkah. Mereka dapat memecahkan apa pun yang Anda bisa lemparkan ke mereka. Anda mencoba. Di mana Anda menarik garis batas untuk apa yang dapat ditanggung oleh pemegang lisensi ini?
Neverender
1

Beberapa ide:

1] Sudahkah Anda menggunakan format model standar (misalnya .obj, atau .x) atau apakah Anda menggunakan format model khusus saat memuat langsung ke dalam gim Anda? Jika Anda memiliki format khusus, dan Anda harus merekayasa balik format model Anda untuk membuatnya menjadi bentuk yang bermanfaat, maka Anda sudah memiliki beberapa tingkat perlindungan terhadap ripper aset oportunistik.

2] Poin Kylotan tentang enkripsi XOR sangat baik, kecuali untuk dicatat Anda dapat mengenkripsi menggunakan urutan pseudo-acak yang dihasilkan (mungkin diunggulkan oleh hash pada nama file) untuk menghindari urutan panjang nol dalam data sumber Anda yang menunjukkan string enkripsi Anda. Tentu saja Anda harus segera mendekripsi file Anda di tempat setelah mereka dimuat, tetapi memecah file terenkripsi Anda menjadi blok yang dapat diulang kembali akan memungkinkan Anda untuk memulai dekripsi di tempat pada beberapa utas jika ini benar-benar menjadi beban waktu beban . Tapi saya sangat meragukan tingkat "perlindungan" ini diperlukan - khususnya, seperti yang orang lain katakan, ripper yang bertekad akan mengatasinya. misalnya. dengan mencegat panggilan draw dengan menggunakan DLL detour library, dan membaca kembali buffer vertex / buffer indeks secara langsung.

3] Anda harus bertanya kepada penyedia aset asli tentang persyaratan mereka untuk perlindungan, tetapi itu bisa saja masalah menambahkan uraian tentang hak cipta aset ke layar splash program Anda dan / atau ke EULA Anda.

jpaver
sumber