Cách tốt nhất để tách mã hiển thị khỏi mã công cụ/logic trò chơi thực sự là gì? Và nó thậm chí là một ý tưởng tốt để tách những người?Tách logic trò chơi và hiển thị
Giả sử chúng tôi có đối tượng trò chơi có tên là Knight. The Knight phải được hiển thị trên màn hình để người dùng có thể nhìn thấy. Bây giờ chúng ta còn lại với hai lựa chọn. Hoặc chúng tôi cung cấp cho Knight một phương thức Render/Draw
mà chúng tôi có thể gọi hoặc chúng tôi tạo lớp trình kết xuất sẽ xử lý tất cả các hiệp sĩ.
Trong trường hợp hai người được tách ra khỏi Hiệp sĩ thì Hiệp sĩ vẫn chứa tất cả thông tin cần thiết để hiển thị anh ta, hay điều này cũng nên được tách ra? Trong dự án cuối cùng chúng tôi tạo ra, chúng tôi quyết định cho phép tất cả thông tin cần thiết để hiển thị một đối tượng được lưu trữ bên trong đối tượng, nhưng chúng tôi đã có một thành phần riêng biệt để đọc thông tin đó và hiển thị các đối tượng. Quay lại đầu trang Đối tượng sẽ chứa thông tin như kích thước, xoay, tỷ lệ và hoạt ảnh nào hiện đang phát và dựa trên đối tượng trình kết xuất này sẽ tạo màn hình.
Các khung như XNA dường như nghĩ rằng việc tham gia đối tượng và hiển thị là một ý tưởng hay, nhưng chúng tôi sợ bị ràng buộc vào một khung hiển thị cụ thể, trong khi xây dựng một thành phần hiển thị riêng biệt cho chúng ta thêm tự do để thay đổi khuôn khổ bất cứ thời gian nào.
Bỏ qua triển khai XNA của. Nhiều như tôi thích nó, cách "mặc định" bạn thấy các ví dụ trên web và trong sách là khủng khiếp. Mỗi đối tượng đều biết về lớp cơ sở Game và lần lượt, mọi thứ đều biết cách vẽ và cứ thế. Điều này là không tốt. Giải pháp của Thomas là lý tưởng, và những gì nhiều người làm. – Finglas