Tôi đang triển khai một tiểu hành tinh nhiều người chơi để tìm hiểu về kiến trúc mạng máy khách / máy chủ trong các trò chơi. Tôi đã dành thời gian đọc các ấn phẩm của GafferOnGames và Valve về công nghệ máy khách / máy chủ của họ. Tôi đang gặp rắc rối với hai khái niệm.
Hiện tại tôi có một máy chủ trò chơi có thẩm quyền mô phỏng vật lý với box2d và gửi trạng thái của thế giới cho khách hàng khoảng 20 lần mỗi giây. Mỗi khách hàng theo dõi một vài ảnh chụp nhanh cuối cùng mà họ nhận được và lerps giữa hai trạng thái để làm dịu chuyển động của các họa tiết. Tuy nhiên nó không được suôn sẻ. Nó có thể trơn tru trong một thời gian, sau đó giật một chút, sau đó trở lại trơn tru, v.v. Tôi đã thử cả TCP và UDP, cả hai đều giống nhau. Bất cứ ý tưởng vấn đề của tôi có thể là gì? (Lưu ý: Tôi đã triển khai điều này cho người chơi đơn trước tiên và chuyển động sprite hoàn toàn mượt mà ở tốc độ 60fps khi cập nhật thế giới vật lý chỉ 20 lần mỗi giây).
Để giải quyết vấn đề đầu tiên, tôi nghĩ có lẽ khách hàng cũng nên chạy mô phỏng box2d và chỉ cập nhật vị trí của các họa tiết của nó để khớp với ảnh chụp nhanh của máy chủ khi chúng không khớp. Tôi nghĩ rằng điều này có thể mượt mà hơn vì việc thực hiện một người chơi của tôi diễn ra suôn sẻ. Đây có phải là một ý tưởng tốt?
Ngay cả khi nó không khắc phục được vấn đề trên, nó có cần thiết cho dự đoán phía khách hàng không? Ví dụ, nếu người chơi cố gắng di chuyển con tàu của họ, làm sao họ biết nếu họ đâm vào một tiểu hành tinh, tường hoặc tàu địch mà không có mô phỏng vật lý? Có vẻ như con tàu của họ sẽ xuất hiện xuyên qua vật thể mà nó sẽ va chạm trước khi họ nhận được một bức ảnh chụp từ máy chủ cho biết họ đã đâm vào vật thể.
Cảm ơn!