2012-04-12 14 views
7

Tôi đang tạo một trò chơi nhỏ bằng cách sử dụng node.js cho máy chủ và tệp .js được nhúng trong canvas HTML5 cho khách hàng. Các cầu thủ từng có và đối tượng họ có thể di chuyển xung quanh với các phím mũi tên.Câu hỏi về việc cập nhật trò chơi node.js của tôi

Bây giờ tôi đã thực hiện 2 cách khác nhau để cập nhật trò chơi, một người đang gửi vị trí mới của người chơi mỗi lần thay đổi. Nó hoạt động nhưng máy chủ của tôi phải xử lý khoảng 60 x/y một giây (tốc độ cập nhật của máy khách là 30/giây và có 2 người chơi di chuyển không ngừng). Phương pháp thứ hai là chỉ gửi vị trí mới và tốc độ/hướng của đối tượng của người chơi khi họ thay đổi tốc độ hướng của họ, về cơ bản trên các máy khách khác, chuyển động của người chơi được nội suy bằng cách sử dụng hướng/tốc độ từ bản cập nhật cuối cùng. Máy chủ của tôi chỉ phải xử lý rất ít gói x/y7speed/direction, tuy nhiên khách hàng của tôi gặp phải một chút chậm trễ khi các gói đến từ vị trí nội suy thường cách vị trí thực tế được viết trong gói một chút.

Bây giờ, câu hỏi của tôi là: Bạn sẽ đề xuất phương pháp nào? Và làm thế nào tôi nên thực hiện bồi thường lag của tôi cho một trong hai phương pháp?

Trả lời

3

Nếu bạn có độ trễ thấp, nội suy từ vị trí mà đối tượng được vẽ lên vị trí mới. Trong độ trễ thấp, nó không đại diện cho nhiều sự khác biệt.

Nếu bạn có độ trễ cao, bạn có thể triển khai một loại EPIC. http://www.mindcontrol.org/~hplus/epic/

Bạn cũng có thể kiểm tra cách thực hiện trong Trình duyệt-Quest. https://github.com/mozilla/BrowserQuest

Chúc may mắn!

+0

bài viết có vẻ như một điểm khởi đầu tốt để giải quyết vấn đề, nhưng tôi vẫn không hiểu một điều từ giải pháp :)) – mihai

+0

@mihai Nguồn của thư viện EPIC là rõ ràng nếu bạn hiểu C++. Chỉ có hai tập tin có ý kiến ​​(Extrapolator.h và Extrapolator.cpp) Nếu bạn không thông thạo C++, tôi có thể cố gắng giải thích hoặc thực hiện nó. – rromeroar

+0

không sao. Tôi đã không nhìn vào mã nguồn, chỉ cần đọc bài viết bạn đã chỉ ra. Mô tả thuật toán khá ngắn, và tôi đã gặp khó khăn trong việc hiểu nó, nhưng tôi chắc chắn nó có ý nghĩa. – mihai