Giả sử bạn có một trò chơi trong đó có nhiều (nhiều) thực thể phục vụ một số chức năng, không phải tất cả chúng đều cần thiết hoặc cần được xem xét trong mọi khung. Vấn đề cụ thể mà tôi đang làm việc trong đó vấn đề này hiện diện là một mô phỏng chi tiết của một cơ thể bao gồm các cơ quan của nó.
Trong trò chơi, mỗi sinh vật có cơ thể riêng biệt được tách thành các bộ phận nhỏ hơn (thân, chân, v.v.) và đôi khi những bộ phận này chứa các cơ quan, phục vụ một chức năng cụ thể trong cơ thể. Việc một cơ quan hiện đang phục vụ một mục đích hay đang hoạt động không bao giờ thực sự rõ ràng. Rốt cuộc, một con vật có thể có một dạ dày trống rỗng, do đó không cần phải tiêu hóa bất cứ thứ gì. Sẽ là khá vô lý khi kiểm tra hoặc mô phỏng mọi đối tượng trong mỗi khung hình và rất tốn kém ngay khi bạn có nhiều sinh vật trên thế giới. Vì vậy, tôi đã suy nghĩ về một cách để phân biệt thông minh giữa các đối tượng cần được cập nhật và những đối tượng không cần cập nhật.
Những gì tôi nghĩ ra có vẻ như là một giải pháp ít nhất là ok. Nó tạo ra một hàng đợi / ngăn xếp đơn giản (điều cần thiết là mỗi phần tử sẽ bị xóa ngay khi đọc; thứ tự không liên quan) được gọi là "ngăn xếp chú ý" nơi các đối tượng cần được mô phỏng cư trú. Các đối tượng cần chú ý chỉ đơn giản là tự đặt chúng lên ngăn xếp hoặc được đặt ở đó bởi các đối tượng khác. Những đối tượng này có thể sẽ thực hiện một giao diện đơn giản với hàm mô phỏng () -.
Áp dụng cho ví dụ tiêu hóa trước đây của tôi điều này có nghĩa là:
Người chơi chọn thứ gì đó để ăn (giả sử đó là bánh mì) từ kho đồ và đặt nó vào miệng nhân vật của mình và miệng được đặt vào ngăn xếp chú ý. Trong khung tiếp theo, miệng được lấy từ ngăn xếp và hàm mô phỏng () - của nó được gọi. Vì nó là một cái miệng nên sẽ rất hợp lý khi mô phỏng việc nhai ở đây. Điều này có thể diễn ra trong một vài khung hình trong đó miệng cứ tự đặt lên chồng cho đến khi nó quyết định thức ăn đã sẵn sàng để nuốt. Trong trường hợp này, miệng đặt bánh mì nhai vào dạ dày (tôi biết nó không trực tiếp đến đó, nhưng thực quản bị bỏ lại để đơn giản hóa), sau đó cũng được đưa vào ngăn xếp chú ý. Trong khung tiếp theo, mô phỏng quá trình tiêu hóa được bắt đầu. Và như vậy cho phần còn lại của các cơ quan cần thiết.
Một vấn đề có thể thấy trước với điều này là các đối tượng không hoạt động. Một con vật đang ngủ là một ví dụ tốt về điều này. Nó có thể được thực hiện như mô tả trước đây bằng cách giữ con vật đang ngủ trên đống và kiểm tra mỗi lần nếu nó cần thức dậy, nhưng điều đó có vẻ lãng phí vì đó là điều duy nhất được thực hiện. Để làm cho các đối tượng chạy không hiệu quả hơn, tôi đã lên kế hoạch thêm một loại lịch trình lưu trữ các công việc sẽ được thực hiện tại một thời điểm cụ thể. Nếu một con vật đi ngủ, nó sẽ đặt một công việc theo lịch trình đó sẽ được sắp xếp trong một khoảng thời gian nhất định sau khi con vật đi ngủ. Công việc này sau đó sẽ đảm nhiệm việc đưa con vật đang ngủ lên đống chú ý một lần nữa. Bây giờ, bạn có thể nói rằng một con vật đang ngủ không nằm trong nhóm chú ý có thể bỏ lỡ việc bị tấn công bởi thứ gì đó vì AI của nó không được mô phỏng,
Bây giờ, tôi thực sự không biết liệu điều này thậm chí có gần với một giải pháp tao nhã cho vấn đề này do thiếu kinh nghiệm hay không. Tôi có gần với một cái gì đó có thể sử dụng? Làm thế nào điều này thường được thực hiện hoặc có ai có bất kỳ đề xuất hoặc giải pháp tốt hơn?