Vấn đề chính xác
Ngay từ đầu, nhóm kỹ sư đã biết rằng thế giới liên tục sẽ ảnh hưởng đáng kể đến thiết kế nội dung và động cơ, và vấn đề cốt lõi là sự ổn định về số. Hãy tưởng tượng hai nhân vật đi theo đội hình cách nhau hai mét, đi về hướng đông từ gốc. Tại một số điểm, khoảng cách với nhau bị áp đảo bởi khoảng cách từ gốc, và các nhân vật sẽ xuất hiện là một người khác ở cùng một vị trí.
Với điểm nổi, bạn càng nhận được nhiều hơn từ điểm gốc, bạn càng mất độ chính xác cao, điều này có thể gây ra tất cả các vấn đề khó chịu. Mọi thứ không được sắp xếp đúng, các vết nứt xuất hiện giữa các mắt lưới liền kề, không gian bắt đầu định lượng và mèo và chó bắt đầu sống cùng nhau. Dungeon Siege sử dụng FPU ở chế độ chính xác duy nhất cho các lợi ích hiệu suất rõ ràng và để phù hợp với độ chính xác tự nhiên của phần cứng video. Tuy nhiên, ngay cả khi chúng tôi tăng độ chính xác, cuối cùng nó cũng không bao giờ có thể giải quyết được vấn đề vì thế giới đã được lên kế hoạch và kết thúc, vô cùng rộng lớn.
Vấn đề chính xác có nghĩa là không thể có một không gian phối hợp thế giới thống nhất như hầu hết các trò chơi khác. Thay vào đó, giải pháp là phân chia thế giới liên tục thành một tập hợp các không gian tọa độ độc lập và chuyển đổi giữa chúng theo định kỳ để đặt lại độ chính xác. Một loạt các ý tưởng đã được thử nghiệm trong các ràng buộc này, và cuối cùng chúng tôi đã giải quyết được một biến thể của một hệ thống cổng thông tin tiêu chuẩn.
Giải pháp của chúng tôi bao gồm một hệ tọa độ dựa trên nút quan hệ, trong đó mỗi khối hình học (Siege Node) có không gian tọa độ riêng và được liên kết không gian với hình học lân cận thông qua các cửa mà nó chia sẻ với các hàng xóm. Sự sắp xếp của các nút được kết nối bởi các cửa tạo thành một biểu đồ liên tục đại diện cho toàn bộ bản đồ thế giới. Hệ thống nút này đã phát triển theo thời gian từ mục tiêu ban đầu là duy trì độ chính xác của FPU để trở thành phương pháp chính để phân chia không gian hiệu quả và là gốc rễ của vô số tối ưu hóa.
Để gói gọn khái niệm vị trí 3D so với một nút cụ thể, vectơ (x, y, z) truyền thống phải được tăng cường bằng ID nút (x, y, z, nút) và biểu thị phần bù từ gốc của một nút cụ thể thay thế. Bộ 4 này được gói gọn dưới dạng Siege Node Position, hoặc SiegePos. Sau đó, chúng tôi đã thêm một SiegeRot (quancyion, nút) để xử lý so sánh giữa các định hướng giữa các nút.
Cụm từ không có không gian thế giới mà trở thành một câu thần chú cho đội, mặc dù phải mất nhiều năm để mọi người hoàn toàn hiểu được ý nghĩa của nó.