Làm thế nào để bạn đóng gói tài nguyên, trong một trò chơi khi bạn có quá nhiều trong số chúng?


10

Gần đây tôi đã tạo một bản sao Kẻ xâm lược không gian cơ bản, trong C ++, sử dụng khung Allegro 5. Sau khi hoàn thành, tôi nhận ra mình có khoảng 10 sprite và 13 MB DLL; Một số người chơi thậm chí không có DLL mingW, điều này làm cho trò chơi rất khó hiểu.

Làm cách nào để tôi đóng gói tất cả các tài nguyên của mình theo cách mà tôi có thể dễ dàng thêm và xóa dữ liệu vào trò chơi của mình và để giảm kích thước của tài nguyên, về cơ bản đặt chúng vào một vị trí? Tôi đang sử dụng codeblocks.


1
Làm thế nào để bạn hiểu các tài nguyên hạn? Các tài sản như hình ảnh, âm thanh, ... hoặc bạn có bao gồm DLL trong thuật ngữ này không?
Christian Ivicevic

Tôi thích nếu tôi có thể phù hợp với DLL vì tôi có rất nhiều.
Bugster

Ý tưởng đầu tiên của tôi là tìm một thư viện phù hợp như (khá lỗi thời ...) zziplibđể lưu trữ tất cả các tài sản thông thường của tôi trong một tệp zip và sau đó tải chúng trong trò chơi của tôi thông qua một đường ống nội dung tùy chỉnh kẻ thù. Những gì bạn về cơ bản đang tìm kiếm lúc đầu là một cách để tải các tệp từ tệp zip vào bộ nhớ để có thể sử dụng chúng trong trò chơi của bạn. Liên quan đến các dlls là khá khó khăn bởi vì chúng thường phải ở trong cùng một thư mục như thực thi Windowshoặc System32thư mục KHÔNG được khuyến khích! Làm thế nào về một kho lưu trữ SFX để giải nén TEMPvà chạy từ đó?
Christian Ivicevic

3
Bạn đang hỏi về cách sử dụng một trình cài đặt? Bởi vì DLL không phải là tài nguyên.
Nicol Bolas

Câu trả lời:


13

Có vẻ như có hai thách thức bạn đang phải đối mặt ở đây: phân phối và đóng gói tài sản.

Phân phối

Gói toàn bộ ứng dụng của bạn vào các thư mục khi bạn thấy phù hợp, sau đó đặt thư mục cấp cao nhất vào tệp .zip. Phân phối tệp .zip đó. Khi người dùng của bạn giải nén zip, họ sẽ có một thư mục chứa mọi thứ họ cần để sẵn sàng chạy trò chơi.

Làm thế nào để bạn đặt các tập tin của bạn?

  • Các dll của bạn thường cần nằm trong cùng thư mục với tệp thực thi (có ngoại lệ, nhưng vì mục đích đơn giản ...)
  • Tài sản của bạn (hình ảnh, âm thanh) có thể là bất cứ nơi nào bạn muốn, mặc dù nếu bạn di chuyển chúng theo tham chiếu đến khả năng thực thi của bạn, bạn sẽ phải sửa đổi mã tải tài nguyên của mình để tính đến điều này.

Tôi thường làm một cái gì đó như thế này:

MyGame \ // thư mục cấp cao nhất chứa toàn bộ chương trình
  bin \ // dlls đến đây cùng với exe đã biên dịch
  res \ // thư mục tài nguyên cấp cao nhất
    Âm nhạc\
    hiệu ứng âm thanh\   
    tiếng nói\
  cfg \ // tệp cấu hình mặc định (cấu hình người dùng đi trong thư mục người dùng)
  MyGame.lnk // phím tắt để biên dịch exe

Bao bì tài sản

Bạn có thể sử dụng một số loại thư viện nén (zlib, lzo) để nén tất cả tài nguyên trò chơi của bạn (thư mục res \ ở trên) vào một tệp. Sau đó, bạn cần sử dụng cùng một thư viện nén để trích xuất nội dung tài nguyên của bạn, trong thời gian thực, để tải tài sản của bạn vào trò chơi của bạn.

Sau đó, điều gì xảy ra khi bạn muốn vá tài sản của bạn? Sau đó, bạn phải: biên dịch toàn bộ tệp tài sản mới và phân phối tệp đó cho người dùng của bạn (vì vậy về cơ bản họ đang tải xuống lại những gì họ đã có, cộng với một số bổ sung) hoặc bạn phải xây dựng trình cập nhật (một chương trình khác để duy trì ) và đối phó với thực tế là mọi thứ có thể sai và tệp tài sản của bạn sẽ bị hỏng ...

Thành thật mà nói, nó không chính xác tầm thường để làm cho công việc đó và tôi không thấy sự đền đáp trong tình huống của bạn. Một thư mục đơn giản là đủ để đóng gói 10 họa tiết của bạn và việc thêm và vá mọi thứ dễ dàng hơn nhiều: chỉ cần tải chúng vào đúng thư mục và thực hiện.

Xây dựng trình cài đặt

Điều này giả sử bạn đang nhắm mục tiêu Windows ... một khi bạn có những điều trên, bạn có thể xây dựng trình cài đặt cho trò chơi của mình. Tôi sẽ tránh bằng mọi giá các phương thức ClickOnce mà Visual Studio hỗ trợ. Đây không phải là trình cài đặt Windows điển hình của bạn và đi kèm với bộ quirks của riêng nó.

Hãy xem câu hỏi StackOverflow này - nó chứa một tập hợp các liên kết hữu ích đến các gói trình cài đặt mà bạn có thể sử dụng. Rất nhiều người ngày nay dường như thích WiX . Tôi chưa bao giờ sử dụng nó. Ngoài ra, AdvancedInstallerInnoSetup đều là những lựa chọn phổ biến.


1
Cảm ơn câu trả lời này, bây giờ tôi có một ý tưởng cơ bản về cách tôi nên phân phối trò chơi của mình.
Bugster

1
Đừng sử dụng WiX. Nó sẽ làm tổn thương đầu của bạn và giết chết gia đình bạn.
Ray Dey

1
Có một lựa chọn khác - có thể có nhiều hơn một gói tài sản. Một cái gì đó như "resource.pak, patch1.pak, patch1337.pak, .." sau đó sẽ là một cách để lưu trữ dữ liệu vá. Sẽ không cần phải sửa đổi gói ban đầu, chỉ cần làm cho động cơ có khả năng phát hiện và đặt hàng các gói vá.
rắn5

0

Bạn có thể có thể liên kết tĩnh một số thư viện thay vì bao gồm các dll. Nếu và làm thế nào là khác nhau cho mỗi thư viện mặc dù.


-1

Bạn có thể sử dụng một phần mềm như Enigma để đóng gói các tệp của mình và lưu chúng vào một tệp .dat. Bạn sẽ cần phải thay đổi thư mục của trình khởi chạy 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.