Tôi đang tạo một trò chơi đua xe đơn giản (tàu vũ trụ, không trọng lực) bằng cách sử dụng p2.js, phaser và node.js.
Những gì tôi đã làm: Khách hàng nhận trạng thái thế giới từ máy chủ:
- ngoại suy người chơi khác dựa trên vận tốc / vị trí mới nhất từ máy chủ
- kiểm tra xem dự đoán phía khách hàng có đúng không - nếu không có vị trí áp dụng từ máy chủ và xử lý các đầu vào mà máy chủ không biết.
- bước vật lý cố định
Người phục vụ:
- nhận đầu vào từ khách hàng và áp dụng
- bước vật lý cố định
- gửi trạng thái thế giới cho mỗi khách hàng
Bây giờ tôi đang vật lộn với va chạm giữa những người chơi. Người chơi va chạm là nhảy mọi lúc trong khi va chạm. Tôi nghĩ đó là vì dự đoán phía khách hàng không tính toán kết quả tương tự với máy chủ.
Máy chủ không biết tất cả các đầu vào từ trình phát (lag).
Người chơi không có cùng vị trí va chạm với người chơi với máy chủ (lag).
Kết hợp hai điều này làm cho máy khách giải quyết xung đột khác với máy chủ và khi trạng thái thế giới đến, người chơi phải thực hiện một sự điều chỉnh lớn.