Gói nội dung tùy chỉnh cho tệp


13

Tôi sắp mua khá nhiều gói mô hình từ một trang web để tạo mẫu cho trò chơi của tôi. Trong hợp đồng có ghi rằng tôi phải bảo vệ họ như để ngăn chặn công chúng tiếp cận với họ.

Tôi nhớ làm việc với các trò chơi Valve, họ đã sử dụng .gcf (tệp nội dung trò chơi) về cơ bản là một kho lưu trữ tất cả nội dung cho mỗi trò chơi. Họ đóng gói trong âm thanh / vật liệu / mô hình / bản đồ / vv. Tôi nghĩ rằng có thể không phải là một ý tưởng tồi để phát triển một cái gì đó tương tự như thế này, và chỉ cần viết một công cụ nhỏ để cho phép tôi thêm / xóa các tệp khỏi nó.

Vấn đề là tôi thực sự không biết làm thế nào để bắt đầu một cái gì đó như thế này. Tôi đã thử Google nhưng tôi thậm chí không biết phải tìm gì. Nếu bất cứ ai có bất kỳ ý tưởng, liên kết có thể được sử dụng, hoặc bất cứ điều gì khác, tôi sẽ đánh giá rất cao nó.

Câu trả lời:


9

Lưu trữ dữ liệu của bạn ở định dạng lưu trữ hơi tối nghĩa như 7-Zip .

Cung cấp cho họ một phần mở rộng tệp khác nhau để người dùng thông thường không thể dễ dàng mở chúng bằng chương trình zip của họ.

Sử dụng Physfs để đọc và truy cập các tập tin. Nó cũng cho phép bạn làm việc với các tệp trong thư mục cục bộ của mình, vì vậy bạn có thể dễ dàng kiểm tra các tài nguyên mới mà không cần xây dựng lại các gói của mình. Rất khuyến khích.

Xem xét mã hóa rất nhỏ trên nội dung, ví dụ. Mã hóa XOR . Viết một tập tin hoặc tập lệnh bó nhỏ để xây dựng các gói của bạn, mã hóa dữ liệu khi sử dụng và sử dụng cùng chức năng để giải mã dữ liệu trong trò chơi của bạn.

Điều này sẽ không giữ người dùng xác định - sẽ không có gì. Nhưng nó sẽ đủ tốt để đáp ứng các yêu cầu của gói mô hình của bạn.


Có người đề nghị vật lý cho tôi vào đêm khác. Thư viện nhỏ xinh.
greyfade

8

Nếu bạn chỉ tạo mẫu, thì tôi sẽ không lo lắng về việc đóng gói tài sản của bạn vào tệp GCF / ZIP / PAK; công chúng sẽ không nhìn thấy nguyên mẫu của bạn!

Hơn nữa, GCF của Valve cung cấp bảo vệ nhiều cho nội dung của bạn như một tệp ZIP - tức là bằng không. Các tập tin không được mã hóa; bạn có thể tải xuống GCFScape để duyệt và trích xuất nội dung của nó.

Không đáng để nỗ lực tạo ra hệ thống tệp gói của riêng bạn trừ khi bạn có nhu cầu cụ thể ngay bây giờ mà không được đáp ứng bởi các tệp ZIP hoặc cơ chế truy cập tệp của chính HĐH; thật ra, những lý do duy nhất tôi có thể nghĩ đến là:

  • Nội dung che giấu (giữ cho các tệp của bạn không bị mày mò có công dụng của nó; tôi vẫn đề xuất mức độ quá mức cho nhu cầu hiện tại của bạn),
  • Lưu trữ siêu dữ liệu trên mỗi tệp bổ sung theo cách cụ thể trong trò chơi để giúp dữ liệu điều khiển nội dung của bạn theo một cách nào đó,
  • Khắc phục các hạn chế về hệ thống tệp của HĐH, chẳng hạn như cần nhanh chóng truy cập hàng nghìn tệp nhỏ hoặc đảm bảo truy cập dữ liệu liền kề. (Đây là một nhu cầu defacto khi làm việc trên bảng điều khiển.)

Tôi hoàn toàn đồng ý. Vấn đề là, tôi sẽ không thể phát hành bản demo mà không có hình thức bảo vệ nào. ZIP là quá nổi tiếng, PAK là như nhau. Với một định dạng tùy chỉnh (Valve yêu cầu khóa CTX được mã hóa cứng vào công cụ trò chơi để truy cập các tệp GCF), kẻ thù trung bình sẽ không thể chạy một công cụ giải nén trên đó và truy cập.
Aidan Knight

Ái chà, không nhận ra enter sẽ không đi xuống. Dù sao, tôi đã tìm thấy nemesis.thewavelstep.net/index.php?p=35 này dường như là một Lib nguồn mở cung cấp chức năng GCF độc lập với các trò chơi Valve. Vấn đề tôi thấy ở đây là nó quá mạnh mẽ và tôi đang tìm kiếm thứ gì đó đơn giản hơn một chút chỉ để tạo một phiên bản cơ bản để mở rộng về sau. (Thành thật mà nói, cách anh ấy mã hóa khiến đầu tôi đau)
Aidan Knight

4
Vì tò mò, hợp đồng này có đề cập đến việc bạn phải bảo vệ nội dung của họ như thế nào không?
Blair Holloway

2
đó là điểm! Vì bạn không thể thực sự bảo mật nó, điều bắt buộc đối với bạn (nếu bạn không ngu ngốc) để biết chính xác những gì những người không đủ năng lực này muốn bạn làm. Mặt khác, bất cứ điều gì bạn làm, vì nó sẽ không hoạt động, bạn có thể phải chịu trách nhiệm (về việc không làm điều gì đó không thể được thực hiện ngay từ đầu).
o0 '.

3

Yêu cầu này là, tốt, nhảm nhí.

Vì trò chơi có thể truy cập dữ liệu và người dùng có quyền truy cập vào trò chơi, nếu anh ta có đủ kỹ năng và quyết tâm, anh ta sẽ quản lý đảo ngược định dạng bạn đã sử dụng để lưu trữ dữ liệu và lấy khóa cuối cùng nếu bạn đủ ngu ngốc để mã hóa nó.

Bạn không thể thêm bảo mật. Tôi nhắc lại: bạn chỉ KHÔNG THỂ thêm bảo mật . Bạn chỉ có thể thêm tối nghĩa và tối nghĩa là hoàn toàn vô nghĩa, vì - như tôi đã nói - một người dùng có đủ kỹ năng và quyết tâm sẽ phá vỡ nó.

Đừng ký bất cứ điều gì yêu cầu bạn điều gì đó không thể được thực hiện.


1
Sự tối nghĩa không phải là vô nghĩa vì hầu hết người dùng không có "đủ kỹ năng và quyết tâm". Điều tương tự cũng xảy ra đối với việc bảo vệ ngôi nhà của bạn: bất kỳ ai thực sự muốn vào đều có thể làm như vậy, nhưng nó vẫn được coi là đáng làm cho họ khó xử.
Kylotan

Phản biện: Sự tối nghĩa là vô nghĩa vì không giống như đột nhập vào nhà của bạn, một khi ai đó đã xâm nhập vào trò chơi của bạn, họ có thể làm cho nó trở nên tầm thường đối với bất kỳ ai khác làm như vậy. (Mặt khác - Sự tối nghĩa không phải là vô nghĩa, bởi vì Brett cần các mô hình. Tôi chỉ không nghĩ rằng sự tương tự giữ tốt.)

Nếu ai đó đánh cắp một miếng vàng từ nhà bạn, anh ta có miếng vàng của bạn. Nếu ai đó lấy mô hình quý giá của bạn từ tệp dữ liệu của bạn, anh ta có thể làm nhiều bản sao theo ý muốn. Vì vậy, không, ví dụ này không hoạt động vì ở đây hoàn toàn không quan trọng việc có bao nhiêu người phá vỡ sự bảo vệ vô giá trị của bạn: một là đủ.
o0 '.

Một là đủ, giả sử những người khác quan tâm đủ để ngừng xem các tệp cục bộ của họ và truy cập trực tuyến để cung cấp cho ai đó nỗ lực đăng nội dung trực tuyến (đó là bất hợp pháp, trong khi xem bản sao địa phương của bạn thì không) hoặc đăng hướng dẫn, mà giả sử bạn có đủ kiên nhẫn để đi qua với họ. Mỗi sự giúp đỡ nhỏ.
Kylotan

1
Mỗi chút giúp đỡ để làm gì ? Ngăn chặn người dùng xem dữ liệu của bạn và không làm gì về nó là hoàn toàn vô nghĩa khiến tôi buồn. Yêu cầu ngu ngốc này chắc chắn tồn tại để ngăn người khác sử dụng lại những dữ liệu đó, vì vậy bạn chỉ cần quan tâm đến những người quyết tâm sẽ cố gắng và thành công (vì như tôi đã nói, về lâu dài họ không thể thất bại) .
o0 '.

1

Nhiều lần tôi nhận thấy rằng các gói nội dung tùy chỉnh có xu hướng là một tệp lưu trữ .zip hoặc .rar với một phần mở rộng khác nhau. Tất nhiên, điều này là không tốt nếu trang web muốn mã hóa tùy chỉnh một số loại.


Vâng, Ogre đã hỗ trợ tải tài nguyên thông qua tệp zip. Một người nào đó được đề cập trong một phòng trò chuyện chỉ truyền mật khẩu tệp zip, nhưng với số lượng công cụ xung quanh để bẻ khóa chúng, đó thực sự không phải là lựa chọn đầu tiên của tôi. Tôi thực sự muốn làm một cái gì đó tương tự như các tệp .gcf mà Valve sử dụng, nhưng tôi thậm chí không biết phải tìm kiếm gì khi bắt đầu.
Aidan Knight

Nếu ai đó bẻ khóa tập tin zip của bạn, thì đó là vấn đề của bạn như thế nào? Có thật không. Họ có thể bẻ khóa bất cứ thứ gì bạn có thể ném vào họ. Bạn đã thử. Nơi nào bạn vẽ đường cho những gì những người cấp phép có thể chịu trách nhiệm cho bạn?
Neverender

1

Một vài ý tưởng:

1] Bạn đã sử dụng định dạng mô hình chuẩn (ví dụ: .obj hoặc .x) hoặc bạn có sử dụng định dạng mô hình tùy chỉnh khi tải trực tiếp vào trò chơi của mình không? Nếu bạn đã có một định dạng tùy chỉnh và người ta sẽ phải thiết kế lại định dạng mô hình của bạn để chuyển nó thành một hình thức hữu ích, thì bạn đã có một số mức độ bảo vệ chống lại trình trích xuất tài sản cơ hội.

2] Quan điểm của Kylotan về mã hóa XOR là tuyệt vời, ngoại trừ lưu ý rằng bạn có thể mã hóa bằng chuỗi được tạo giả ngẫu nhiên (có thể được tạo bởi một hàm băm trên tên tệp) để tránh các chuỗi số 0 trong dữ liệu nguồn hiển thị chuỗi mã hóa của bạn. Tất nhiên, bạn phải giải mã tại chỗ ngay lập tức sau khi tải, nhưng việc chia tệp được mã hóa thành các khối có thể khởi động lại sẽ cho phép bạn khởi động giải mã tại chỗ trên nhiều luồng nếu điều này thực sự trở thành gánh nặng thời gian tải . Nhưng tôi thực sự nghi ngờ mức độ "bảo vệ" này là bắt buộc - đặc biệt, như những người khác đã nói, người chèo thuyền quyết tâm sẽ đi xung quanh nó. ví dụ. bằng cách chặn các lệnh gọi bằng cách sử dụng thư viện đường vòng DLL và đọc lại bộ đệm đỉnh / bộ đệm chỉ mục trực tiếp.

3] Bạn phải hỏi nhà cung cấp tài sản ban đầu về các yêu cầu bảo vệ của họ, nhưng đó chỉ là vấn đề thêm bản quyền về bản quyền tài sản vào màn hình giật gân chương trình và / hoặc EULA của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.