Tìm tệp tài sản trong các trò chơi Linux


11

Phương pháp thông thường để lưu trữ các mô hình, kết cấu, âm thanh và tập lệnh 3D (ví dụ: tệp Lua) trong quá trình phát triển và trong một bản phát hành là gì? Tôi đang phát triển một trò chơi với bạn bè của tôi chủ yếu là C ++; trong giai đoạn tạo mẫu, chúng ta chỉ có một kết cấu duy nhất được lưu dưới dạng tiêu đề C với GIMP, nhưng tất nhiên, cách tiếp cận này không mở rộng tốt và tăng thời gian biên dịch rất nhiều.

Trong Windows, cách làm thông thường là chỉ cần đổ chúng vào %PROGRAMFILES%thư mục con trong đó trò chơi thực thi nằm trong đó, có lẽ sắp xếp chúng theo cấu trúc cây thích hợp. Tuy nhiên, trên Linux hình ảnh có vẻ phức tạp hơn nhiều. Việc thực thi thường nằm trong /usr/bin, trong khi các ứng dụng lưu trữ các tệp khác của họ /usr/sharevà tôi nghĩ rằng việc đưa các tệp không thực thi vào sẽ là một thực tế cực kỳ tồi tệ /usr/bin. Tuy nhiên, cấu trúc thư mục trong quá trình phát triển là hoàn toàn khác nhau.

Tôi có thể đưa ra hai giải pháp khả thi khác nhau:

  • Hãy để thực thi tìm các tệp tài sản liên quan đến chính nó và cài đặt trò chơi /opt. Sau đó đặt symlink đến /usr/bin. Trong quá trình phát triển, đường dẫn tương đối của các tài sản đến các nhị phân giống như trong quá trình triển khai.
  • Truy cập các tệp với một đường dẫn tuyệt đối được xác định là ký hiệu tiền xử lý. Hãy để quá trình xây dựng (trong trường hợp của chúng tôi, nguyên liệu Makefile) quan tâm đến việc xác định nó là phù hợp.

Cả hai cách tiếp cận dường như không phù hợp với tôi ở khía cạnh này hay khía cạnh khác. Có một thực tế phổ biến trong ngành công nghiệp phát triển trò chơi về điều này?

Các câu hỏi liên quan duy nhất tôi có thể tìm thấy là Xác định vị trí của tài sản trò chơi đĩa được cài đặt / trên đĩađường dẫn thư mục cho tài nguyên và tài sản , nhưng những câu hỏi đó không giải quyết được vấn đề chạy "từ cây nguồn".

Câu trả lời:


6

../lib/programnamehoặc ../share/programname/, tương đối so với dirname(3)các argv[0]tuỳ theo nếu tài sản là kiến trúc phụ thuộc hay không.

Đây là tiêu chuẩn giống như tất cả các chương trình Linux khác (và hầu hết không phải là Mac Unix).

Nếu bạn muốn chạy từ "cây nguồn",

  1. Bạn nên có một hệ thống xây dựng thực và xây dựng, bởi vì bạn không bao giờ "chạy từ cây nguồn", bạn chạy một tệp thực thi được xây dựng, mà hệ thống xây dựng của bạn nhổ ra ở đâu đó và nó có thể sao chép hoặc liên kết các tài sản vào vị trí một cách dễ dàng.
  2. Nếu hệ thống xây dựng của bạn quá nhảm nhí, chỉ cần kiểm tra .hoặc ./assets, v.v., sau đó xem xét một hệ thống xây dựng mới sau này trong quá trình phát triển.

Không giống như happy_emi nói, bạn chắc chắn nên cung cấp một cách để ghi đè lên điều này bằng các biến môi trường. Đó là chính xác những gì họ được dự định.


Cũng xem xét các biến môi trường, đó là tiêu chuẩn trên desktop của Linux: standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
bogglez
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.