Tôi đang lập trình một máy chủ chuyên dụng trong C # bằng BeamServer2 DLL. Đầu tiên tôi muốn có thể thấy những người chơi khác di chuyển trên bản đồ Omuni đã được tạo của chúng tôi. Điều này tôi đã làm bằng cách chỉ gửi vị trí của bạn đến máy chủ mỗi khung. Điều này đã được giải quyết và tôi đã có thể chơi với một vài người bạn nhưng phong trào không bị chậm trễ. Vì vậy, tôi bắt đầu cố gắng thêm tính năng làm mịn chuyển động và một số bảo mật để họ không thể gửi một vị trí sai đến máy chủ mà không cần máy chủ ngăn nó tiếp cận các máy khách khác.
Những gì tôi đã làm, tôi đã tạo ra một masterClient có bộ điều khiển MovementContoder trên remotePlayer. Khi một khách hàng muốn di chuyển, anh ta di chuyển cục bộ và gửi tin nhắn đến máy chủ với hướng di chuyển. Máy chủ sẽ lấy tốc độ từ chối và gửi nó đến masterClient. MasterClient hơn di chuyển remotePlayer giống như remotePlayer tự di chuyển. Khi anh ta ngừng di chuyển, anh ta gửi một tin nhắn với vị trí ngần ngại trong đó. Thành thạo hơn kiểm tra xem vị trí mà anh ta đã đến có gần với vị trí anh ta có từ máy khách hay không, nếu nó thực tế theo ping của máy khách, máy chủ sẽ đặt anh ta vào vị trí của máy khách.
Điều này hoạt động, nhưng tôi vẫn có một vấn đề lagg và tôi không biết làm thế nào để khắc phục điều này. Tôi phải thực hiện chuyển động trơn tru trên máy khách nhưng tôi phát hiện ra rằng tôi chỉ có thể lerp (x / 2, y / 2, z / 2) đến vị trí và đặt anh ta vào vị trí thực sự tiếp theo, tôi đã thất bại ở đó và tôi sẽ thử lại sớm. Ngay cả khi điều đó được thêm vào, tôi không chắc chắn liệu lagg có được sửa hay không.
Bất kỳ kỹ thuật, đề xuất, câu hỏi, ...? Cảm ơn, Diede.