Làm thế nào để đại diện cho một nhân vật trò chơi trong mã?


7

Trong một trò chơi trước tôi đã viết tôi có một lớp nhân vật trò chơi. Lớp này theo dõi vị trí, vận tốc và một tập hợp các trạng thái. Ngoại trừ các tiểu bang được gắn rất gần với hình ảnh động. Mỗi trạng thái sẽ có một danh sách các nút có thể chuyển đổi trạng thái khác và một hình động sẽ đi với trạng thái đó (bạn cũng có thể thay đổi trạng thái hoạt hình trên mỗi khung hình, nếu bạn muốn làm gì đó như có một cú đấm đúng thời gian cụ thể hoặc một cái gì đó). Tất cả dữ liệu va chạm cho nhân vật được thực hiện trên cơ sở từng khung hình hoạt hình. Điều này đã được thực hiện cho một trò chơi chiến đấu, vì vậy có vẻ như lúc đó cần có hoạt hình và va chạm gắn chặt với trạng thái nhân vật.

Nhưng lập trình viên trong tôi cảm thấy như đây là sự pha trộn trách nhiệm. Và bây giờ tôi đang tạo ra một công cụ trò chơi mà tôi muốn chung chung hơn thế một chút. Làm thế nào để bạn thường tổ chức các cấu trúc liên quan đến các nhân vật, cách chúng được vẽ, cách chúng tương tác với nhau và thế giới, v.v?

Tôi nhận ra đây là một câu hỏi mơ hồ phụ thuộc vào loại trò chơi tôi muốn thực hiện, nhưng tôi nghĩ rằng xem cách người khác xử lý việc này sẽ hữu ích.

(và nếu có vấn đề, đây là tất cả cho một trò chơi 2D.)

Câu trả lời:


8

Nếu hành vi trò chơi và hoạt hình có liên quan chặt chẽ với nhau - như trong trò chơi chiến đấu - điều này không nhất thiết phải trộn lẫn trách nhiệm.

Như munificent đã nói trong Tại sao MVC & TDD không được sử dụng nhiều hơn trong kiến ​​trúc trò chơi? , Trong một trò chơi, [mô hình và chế độ xem] gần nhau hơn nhiều. Thế giới trò chơi (mô hình) thường là một tập hợp các thực thể được định vị trong một số không gian ảo. Chế độ xem trò chơi cũng là một tập hợp các thực thể được định vị trong một không gian ảo ... Kết quả cuối cùng là ranh giới giữa mô hình và chế độ xem trong trò chơi sẽ tùy ý và không hữu ích: cuối cùng bạn sẽ nhân đôi rất nhiều trạng thái giữa chúng .

Nói cách khác, nếu một sự trừu tượng có mục đích không giúp trách nhiệm bưu kiện và cải thiện khả năng bảo trì, thì đó không phải là sự trừu tượng, đó chỉ là một bộ phận.

Về cách tôi tạo một công cụ trò chơi hỗ trợ bất kỳ mô hình nào tôi cần - cho dù đó là một bit hoạt hình và vật lý chặt chẽ, hoặc tách hoàn toàn tương tác và trình kết xuất đối tượng, hoặc cả hai cho những thứ khác nhau trong cùng một trò chơi - tôi sẽ đưa ra câu trả lời chuẩn. Phát triển hệ thống phân cấp của bạn với các thực thể dựa trên thành phầ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.