Câu trả lời:
Cá nhân tôi không nghĩ có bất kỳ ví dụ hay nào , phần lớn là do định nghĩa về "hệ thống dựa trên thành phần" cho các trò chơi được định nghĩa lỏng lẻo đến mức nó có thể có nghĩa là không có gì.
Bạn có thể thấy một số cuộc thảo luận trong câu trả lời này hữu ích: Cách triển khai hệ thống dựa trên thành phần cho các mục trong trò chơi web
Nhìn chung, cách tiếp cận chỉ đơn giản là thay đổi bất kỳ loại GameObject hoặc Actor nào từ một lớp lớn xử lý tất cả các hành vi thành một lớp đơn giản hơn chứa các đối tượng thực hiện hành vi. Tôi nghĩ rằng tự mình làm việc này và tạo ra các thành phần khác nhau phù hợp với trò chơi của bạn thường sẽ là cách tốt nhất để tiến hành.
Đây là một số tài nguyên bạn có thể thích:
Có chủ đề tuyệt vời này . Bản thân nó không phải là một công cụ trò chơi, nhưng thiết kế và thảo luận là tuyệt vời.
Một câu hỏi về StackOverflow về một chủ đề rất giống nhau.
Để trả lời câu hỏi ban đầu, khung Voi trong C # chính xác là những gì bạn muốn: nó đã bị ngừng, nhưng vẫn tồn tại ở đây để tham khảo thực hiện.
Trang web này bắt đầu vào một thực hiện cơ bản.
Hầu hết những điều trên được lấy cảm hứng từ bài viết này tại T = Machine
Tôi bắt đầu thực hiện cơ bản lấy cảm hứng từ hai liên kết trên. Tôi khá chắc chắn rằng tôi đã sai lệch rất nhiều so với lý thuyết thuần túy về các hệ thống thành phần, và chắc chắn có lỗi, nhưng nó có thể hữu ích nếu bạn đang tìm kiếm một số ví dụ đơn giản.
Bricle (C # / XNA)
Ngay bây giờ, nó chỉ tải lên một số thực thể cơ bản, xử lý một số sự kiện, v.v. Các vị trí chính bạn đang tìm kiếm là thư mục Engine.EntitySystem và có lẽ là PlayScreen nơi thực thể được tạo.
Tạo một cửa hàng thành phần dựa trên loại đơn giản và ẩn rằng đằng sau một EntityManager thông thường là tương đối đơn giản.
Thử thách đầu tiên tôi gặp phải là khi các hệ thống riêng lẻ có thể yêu cầu nhiều loại thành phần (nghĩa là thành phần vật lý và InputMovizable). Để sử dụng ngôn ngữ cơ sở dữ liệu quan hệ, tôi phải tìm cách thực hiện truy vấn THAM GIA. Vì thế, tôi đã tạo một loại bộ sưu tập khác cho các thực thể được xây dựng từ các truy vấn loại thành phần phù hợp - mỗi bộ sưu tập thực thể móc vào một sự kiện OnEntityCreate và kiểm tra xem nó có khớp không. Vẫn còn một số lỗi ở đó.
Thử thách thứ hai thực sự là tạo ra một 'đối tượng trò chơi' - tôi gọi chúng là các mẫu. Ở đây tôi có lẽ không thuần túy theo thông số kỹ thuật của T = Machine, nhưng có vẻ như nó hoạt động. Các mẫu nhóm cùng nhau khởi tạo thành phần và cho phép thành phần thực thể dễ dàng hơn (nghĩa là Bóng có thể vẽ và Vật lý).
Hy vọng điều đó hữu ích - hệ thống thực thể / thành phần có thể là một thách thức để vượt qua một số trở ngại ban đầu.
Một cái khác, tôi chưa sử dụng, nhưng nhìn qua mã một chút, là Artemis . Nhận xét tốt và khá tích cực. Ban đầu là một khung công tác Java nhưng đã được chuyển sang C # / XNA.