Tôi đã xem xét cách sử dụng đường ống Nội dung XNA một cách thích hợp cho trò chơi tôi đang làm việc. Tuy nhiên, tôi đã có một thời gian khó khăn để quấn đầu xung quanh nó và không chắc chắn về cách tốt nhất để tiến hành.
Ví dụ cụ thể là, tôi có một trò chơi theo phong cách RPG 2 chiều từ trên xuống. Tôi muốn tạo một tiện ích (có thể là Windows Forms) cho phép tôi dễ dàng tạo và chỉnh sửa bản đồ. Mỗi bản đồ bao gồm 1 hoặc nhiều lớp đồ họa, mỗi lớp chứa một lưới gạch N x N. Lần lượt mỗi ô bắt đầu như một bitmap.
Đưa ra các thông tin trên tôi thấy một vài cách để tiến hành:
- Lưu trữ thông tin bản đồ trong tệp XML tương thích với trình tải XML Đường ống nội dung. Mỗi ô được lưu trữ dưới dạng tham chiếu chuỗi đến tài sản kết cấu tương ứng. Tài sản kết cấu được thêm vào trong dự án trò chơi.
- Lưu trữ thông tin bản đồ trong tệp XML tương thích với trình tải XML Đường ống nội dung. Mỗi ô được lưu trữ dưới dạng đường dẫn đến các tệp .bmp / .png tương ứng.
Bây giờ có những điều mà tôi thực sự không thích về cả hai cách tiếp cận. Vấn đề chính với cách tiếp cận thứ nhất là việc tạo bản đồ và tạo tài sản kết cấu .xnb hoàn toàn tách biệt. Tệp bản đồ .xml được tạo bởi tiện ích, trong khi nội dung kết cấu được thêm vào nội dung của tôi trong trò chơi của tôi. Điều này trở thành một vấn đề khi cố gắng đảm bảo tệp bản đồ .xml và tất cả các tài sản kết cấu trong dự án được đồng bộ hóa.
Cách tiếp cận hai sẽ cho phép tôi giữ tất cả các tệp hình ảnh phù hợp bên cạnh các tệp bản đồ bằng tiện ích bản đồ. Tuy nhiên, có vẻ như tôi không nên làm điều gì đó như thế này. Ngoài ra, tôi sẽ cần phải thông minh hơn trong việc tải bản đồ để không nhanh chóng tải cùng một hình ảnh ra khỏi đĩa cho mỗi ô.
Vì vậy, câu hỏi của tôi là: Nếu bạn muốn thêm tiện ích tạo nội dung (như trình chỉnh sửa bản đồ), cách tốt nhất để đảm bảo rằng nội dung tùy chỉnh (tệp bản đồ) vẫn đồng bộ với nội dung kết cấu. Ngoài ra, hãy nhớ rằng trong trình chỉnh sửa bản đồ của tôi, tôi sẽ cần khả năng tải và hiển thị các tài sản kết cấu.
Bất kỳ đầu vào được nhiều đánh giá cao.