Tôi nghĩ rằng một chút tốt để đọc về những gì công nghệ đồ thị cảnh khác đang làm sẽ mang lại rất nhiều lợi ích cho bạn.
Bối cảnh
Ví dụ, nhìn vào mô tả của Ogre3D. Nó là một công cụ đồ họa dựa trên đồ thị cảnh là nguồn mở. Tôi sẽ đề nghị xem hướng dẫn và xem các nút cảnh đang được sử dụng như thế nào (Lưu ý: Tôi không bảo bạn học cách sử dụng Ogre, thay vào đó là các tính năng nào có trong các nút cảnh và trình quản lý cảnh của Ogre)
Tài liệu về CảnhNode: http://www.ogre3d.org/docs/api/1.9/ class_ogre_1_1_scene_node.html
Tài liệu về Trình quản lý cảnh: http://www.ogre3d.org/docs/api/1.9/ class_ogre_1_1_scene_manager.html
Một cái gì đó khác đáng xem là liên kết sau:
http://sgl.sourceforge.net/#features
Nó là một giải pháp đồ thị cảnh dựa trên OpenGL và trang tính năng hiển thị tất cả các nút mà nó có thể chứa.
Các nút được đề xuất của bạn
Tôi cho rằng một biểu đồ cảnh nên được trừu tượng hóa càng nhiều càng tốt khỏi logic trò chơi để bạn không gặp phải bất kỳ vấn đề phụ thuộc nào. Đối với mỗi điểm đạn của bạn, tôi sẽ nói như sau:
Diễn viên trò chơi
có lẽ tôi sẽ nói không. Tương tự như Ogre, tôi sẽ có một lớp Thực thể cơ sở (sẽ chứa logic cụ thể của đối tượng) và một CảnhNode cơ sở với một con trỏ thành viên Thực thể để có được thông tin phù hợp để hiển thị đối tượng (Vị trí, Định hướng, v.v.)
EDIT: Tôi không nói không bao gồm các diễn viên trò chơi của bạn trong biểu đồ cảnh ở đây (nếu không sẽ không có gì hiển thị: P) Tôi đang nói có một nút cảnh có tham chiếu đến lớp diễn viên trò chơi logic, vì vậy bạn đã vẫn có khớp nối lỏng lẻo của kết xuất và cập nhật các đối tượng trò chơi.
Trò chơi tĩnh đơn giản ojbects
Có
Trò chơi kích hoạt?
Không, điều này nghe có vẻ như logic cụ thể của trò chơi với tôi.
Đèn trò chơi?
Đúng
Máy ảnh trò chơi?
Đúng
Đạn vũ khí?
Không hoàn toàn chắc chắn về điều này, nhưng tôi có thể nói có, nhưng có lẽ bạn muốn tất cả các viên đạn khi còn nhỏ vào nút cảnh phụ huynh "BulletCollection", để bạn có thể lưu trữ vị trí đó và bạn sẽ không phải vượt qua đồ thị cảnh nhiều để loại bỏ và thêm đạn để kết xuất.
Trò chơi bùng nổ và hiệu ứng đặc biệt?
Không chắc chắn, tôi sẽ để người khác trả lời.
Phạm vi đồ thị cảnh
Nếu bạn có một mức độ tương đối nhỏ, bạn sẽ có thể lưu trữ toàn bộ cấp độ trong một biểu đồ cảnh và sau đó tối ưu hóa khả năng hiển thị bằng cách sử dụng Octree (thường cho môi trường ngoài trời) hoặc cây BSP (thường cho môi trường trong nhà).
Nếu bạn có cấp độ lớn hơn nhiều và bạn không muốn thực hiện bất kỳ tải cấp nào, thì đây là lúc phát trực tuyến sẽ phát huy tác dụng, nhưng đó hoàn toàn là một vấn đề khác. Tôi sẽ bắt đầu với một mức độ nhỏ và tăng dần xem bạn có thể làm cho nó lớn đến mức nào mà không ảnh hưởng xấu đến hiệu suất.
Kết luận
Đối với tôi một đồ thị cảnh là phần Render của vòng lặp trò chơi. Bạn không nên kết hợp kết xuất của mình và logic của bạn cập nhật quá gần nhau, nếu không bạn sẽ gặp phải các vấn đề phụ thuộc gây phiền nhiễu.