Đọc một số câu hỏi và câu trả lời khác về việc sử dụng một hệ thống dựa trên thành phần để xác định các mục tôi muốn sử dụng một mục cho các mục và phép thuật trong trò chơi web được viết bằng PHP. Tôi chỉ bị mắc kẹt trong việc thực hiện.
Tôi sẽ sử dụng lược đồ DB được đề xuất trong loạt bài này (phần 5 mô tả lược đồ);
http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-1/
Điều này có nghĩa là tôi sẽ có một bảng mục với các thuộc tính mục chung, một bảng liệt kê tất cả các thành phần cho một mục và cuối cùng ghi lại trong mỗi bảng thành phần được sử dụng để tạo thành mục.
Giả sử tôi có thể chọn hai truy vấn đầu tiên cùng nhau trong một truy vấn, tôi vẫn sẽ thực hiện N truy vấn cho từng loại thành phần. Tôi khá ổn với điều này vì tôi có thể lưu trữ dữ liệu vào memcache và kiểm tra trước khi thực hiện bất kỳ truy vấn nào. Tôi sẽ cần phải xây dựng các mục theo mọi yêu cầu mà chúng được sử dụng để việc triển khai cần được thực hiện ngay cả khi chúng được lấy từ memcache.
Nhưng ngay tại đó, tôi cảm thấy tự tin về việc triển khai một hệ thống thành phần cho các mục của mình kết thúc. Tôi nghĩ rằng tôi cần phải mang các thuộc tính và hành vi vào trong thùng chứa từ mỗi thành phần mà nó sử dụng. Tôi chỉ không chắc làm thế nào để làm điều đó một cách hiệu quả và cuối cùng không viết nhiều mã chuyên dụng để xử lý từng thành phần.
Ví dụ, AttackComponent có thể cần biết cách lọc các mục tiêu bên trong bối cảnh chiến đấu và cũng có thể cung cấp hành vi tấn công. Cùng một vật phẩm đó cũng có thể có UsableComponent, cho phép vật phẩm được sử dụng và áp dụng một số hiệu ứng lên một nhóm mục tiêu khác được lọc khác với cùng bối cảnh chiến đấu. Sau đó, không phải mọi phần của vật phẩm là một phần hoạt động, AttributionBonusComponent có thể chỉ cần khởi động khi vật phẩm ở trạng thái được trang bị hoặc khi hiển thị trang chi tiết vật phẩm.
Cuối cùng, làm thế nào tôi nên mang tất cả các thành phần lại với nhau trong thùng chứa để khi tôi sử dụng một vật phẩm làm vũ khí tôi có được danh sách chính xác các mục tiêu? Biết khi nào một vũ khí cũng có thể được sử dụng như một vật phẩm? Hoặc để áp dụng các phần thưởng mà vật phẩm cung cấp cho một đối tượng nhân vật?
Tôi cảm thấy như mình đã đi quá xa xuống hố thỏ và tôi không thể nắm bắt được giải pháp đơn giản trước mặt. (Nếu nó không hoàn toàn có nghĩa.)
Tương tự như vậy nếu tôi thực hiện câu trả lời tốt nhất từ đây, tôi cảm thấy như mình có rất nhiều câu hỏi tương tự.
Cách mô hình hóa nhiều "cách sử dụng" (ví dụ vũ khí) cho hàng tồn kho / vật thể / vật phẩm có thể sử dụng (ví dụ katana) trong cơ sở dữ liệu quan hệ