Tôi đang cố gắng triển khai hệ thống vật lý máy khách / máy chủ bằng Bullet tuy nhiên tôi gặp vấn đề khi phải đồng bộ hóa mọi thứ.
Tôi đã thực hiện trạng thái chuyển động tùy chỉnh để đọc và viết biến đổi từ các đối tượng trò chơi của mình và nó hoạt động cục bộ nhưng tôi đã thử hai cách tiếp cận khác nhau cho các trò chơi nối mạng:
- Các đối tượng động trên máy khách cũng trên máy chủ (ví dụ: các mảnh vụn ngẫu nhiên và các thứ không quan trọng khác) được tạo thành động học. Điều này hoạt động chính xác nhưng các đối tượng không di chuyển rất trơn tru
- Các đối tượng là động trên cả hai nhưng sau mỗi thông báo từ máy chủ mà đối tượng đã di chuyển, tôi đặt tốc độ tuyến tính và góc tới các giá trị từ máy chủ và gọi btRigidBody :: processToTransform với biến đổi trên máy chủ. Tôi cũng gọi btCollisionObject :: activ (true); để buộc đối tượng cập nhật.
Ý định của tôi với phương pháp 2 về cơ bản là thực hiện phương pháp 1 nhưng chiếm quyền điều khiển Bullet để thực hiện dự đoán của một người nghèo thay vì tự mình làm theo phương pháp 1, nhưng điều này dường như không hiệu quả (vì những lý do không rõ ràng 100% với tôi thậm chí bước qua Bullet) và các đối tượng đôi khi kết thúc ở những nơi khác nhau.
Tôi đang đi đúng hướng? Bullet dường như được tích hợp mã nội suy. Điều đó có thể giúp tôi làm cho phương pháp 1 hoạt động tốt hơn không? Hoặc là mã 2 phương thức của tôi không hoạt động vì tôi vô tình dậm chân đó?
EDIT: Một vấn đề khác với phương pháp 1 Tôi chỉ nhận thấy là phản ứng va chạm sẽ không còn cho các va chạm với các đối tượng không được đồng bộ hóa. Cơ thể Kinetic loại công cụ bắn đến vô cùng đôi khi vì chúng không thể bị đánh bật trở lại.