Tôi đã làm việc trên một số dự án sở thích trong 3-4 năm qua. Chỉ cần các trò chơi 2d và 3d đơn giản. Nhưng gần đây tôi đã bắt đầu một dự án lớn hơn. Trong vài tháng qua, tôi đã cố gắng thiết kế một lớp đối tượng trò chơi có thể là cơ sở của tất cả các đối tượng trò chơi của tôi. Vì vậy, sau nhiều lần thử và chết, tôi đã chuyển sang Google, nơi nhanh chóng chỉ cho tôi một số tệp PDF và PowerPoint GDC. Và bây giờ tôi đang cố gắng nắm bắt các đối tượng trò chơi dựa trên thành phần.
Tôi hiểu rằng công cụ tạo ra một đối tượng trò chơi và sau đó gắn các thành phần khác nhau để xử lý những thứ như sức khỏe, vật lý, kết nối mạng và bất cứ điều gì bạn làm cho chúng làm. Nhưng điều tôi không hiểu là làm thế nào thành phần X biết nếu Y đã thay đổi trạng thái của đối tượng. Giống như làm thế nào để ChemistryComponent biết người chơi còn sống, bởi vì sức khỏe được kiểm soát bởi HealthComponent ..? Và làm thế nào để HealthComponent chơi "hoạt hình người chơi đã chết"?
Tôi đã có ấn tượng rằng nó là một cái gì đó như thế này (Trong HealthComponent):
if(Health < 0) {
AnimationComponent.PlayAnimation("played-died-animation")
}
Nhưng một lần nữa, làm thế nào để HealthComponent biết rằng đối tượng trò chơi mà nó được đính kèm để có AnimationComponent được đính kèm? Giải pháp duy nhất tôi thấy ở đây là
Kiểm tra xem AnimationComponent có được gắn hay không (Hoặc bên trong mã thành phần hoặc ở phía động cơ)
Có các thành phần yêu cầu các thành phần khác, nhưng điều đó dường như chống lại toàn bộ thiết kế thành phần.
Viết như, HealthWithAnimationComponent, HealthNoAnimationComponent và soo on, một lần nữa dường như chống lại toàn bộ ý tưởng thiết kế thành phần.