2012-07-11 23 views
8

Tôi đã đọc Van article on multi-player networking đã được điều chỉnh từ giấy 2001 của Yahn Bernier có tên là Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization. Tôi đang làm cho một trò chơi nhiều người chơi thời gian thực sử dụng một máy chủ Node.js kết nối với khách hàng thông qua socket.io và tôi có một số câu hỏi liên quan đến các nguyên tắc chi tiết dưới đây:Nguyên tắc trò chơi nhiều người chơi trong thời gian thực cho TCP và Node.js

Entity Interpolation

[Interpolation] ngăn chặn các chuyển động jittery này sẽ thường dẫn đến bằng cách cập nhật máy chủ đệm sau đó chơi chúng trở lại với những khoảng trống thông suốt interpolated giữa. Nó cũng có thể bảo vệ chống lại sự cố xảy ra do mất gói.

Client-Side Prediction

Dự đoán là khái niệm của khách hàng dự đoán những ảnh hưởng của hành động máy nghe nhạc địa phương mà không cần chờ cho máy chủ để xác nhận chúng. Trạng thái dự đoán của một thực thể được kiểm tra dựa trên các lệnh máy chủ khi chúng đến cho đến khi một kết quả trùng khớp hoặc kết hợp sai được phát hiện.

Lag Compensation

Lag bồi thường là khái niệm về máy chủ sử dụng độ trễ của người chơi để tua lại thời gian khi xử lý [user input], để xem những gì các cầu thủ thấy khi lệnh được gửi . Kết hợp với dự đoán, bồi thường tụt hậu có thể giúp chống lại độ trễ mạng đến mức hầu như loại bỏ nó khỏi quan điểm của kẻ tấn công.

  • Do các nguyên tắc áp dụng cho TCP như họ làm gì để UDP và sẽ có bất kỳ sự khác biệt trong việc thực hiện? Tôi có thể thấy rằng nội suy thực thể sẽ không cần phải bảo vệ chống lại mất gói tin nhưng đó là về nó.

  • Tôi có thể giao tiếp giữa máy chủ và trình duyệt web và ngược lại bằng UDP và Node.js không?

  • Vì giấy đã hơn một thập kỷ nên các nguyên tắc này vẫn đang được sử dụng hoặc có công nghệ khác xuất hiện?

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

2
  • Làm các nguyên tắc áp dụng cho TCP khi chúng thực hiện cho UDP và sẽ có bất kỳ sự khác biệt nào trong việc triển khai không? Tôi có thể thấy rằng nội suy thực thể sẽ không cần phải bảo vệ chống lại mất gói tin nhưng đó là về nó.

Mặc dù bạn sẽ không phải đối phó với mất gói, bạn sẽ phải xử lý thời gian chuyển tiếp lâu hơn. TCP chậm hơn UDP và bạn sẽ phải giảm thiểu trong thời gian thực nhiều người chơi. Tôi sẽ nghĩ rằng những nguyên tắc này vẫn áp dụng ở cấp độ cơ bản.

  • Tôi có thể giao tiếp giữa máy chủ và trình duyệt web và ngược lại bằng UDP và Node.js không?

Nói chung, chưa. Ít nhất không phải không có một số dạng mở rộng hoặc plugin của trình duyệt - WebSockets sử dụng TCP. Điều đó nói rằng, WebRTC (và cụ thể hơn, API PeerConnection) đang đến. Khi các kênh dữ liệu được thực hiện, theo truyền thông UDP, có thể thực hiện được.

  • Vì giấy đã hơn một thập kỷ nên các nguyên tắc này vẫn đang được sử dụng hoặc có công nghệ khác xuất hiện?

Tôi rất ngạc nhiên khi biết rằng chúng không còn được sử dụng nữa - bài viết bạn đã trích dẫn thực tế là cần thiết để đọc cho người lập trình trò chơi. Ditto cho các kỹ thuật mới không xuất hiện, mặc dù tôi đã không chú ý đến sự phát triển trong lĩnh vực này trong nhiều năm nay.