Làm cách nào để xử lý nhiều người chơi trong JavaScript?


12

Tôi chỉ đang nghiên cứu một chút về công nghệ để sử dụng cho trò chơi nhiều người chơi trên thiết bị di động.

Hiện tại, đây là một thử nghiệm nhiều hơn nên hiện tại, điều duy nhất mà Người chơi cần nhận thức là những Người chơi khác.

Nếu đây là một ứng dụng web điển hình và không phải là một trò chơi thì nó chỉ có các yêu cầu HTTP được kích hoạt mọi lúc - nhưng vì đây là một trò chơi, hiệu suất và độ chính xác sẽ là một vấn đề.

Do trò chơi được nhắm mục tiêu vào nhiều nền tảng điện thoại, giả sử rằng ứng dụng khách sẽ được viết bằng JavaScript hoặc khung dựa trên JavaScript. Công nghệ máy chủ hoàn toàn mở.

Mỗi người chơi sẽ cần thực hiện tương đương với một bài đăng HTTP và chỉ nhận được bằng cách sử dụng giao thức nhanh hơn. Lý do cho nhiều người chơi dựa trên web là vì nhiều người chơi qua Bluetooth hoặc mạng cục bộ khác sẽ quá đa dạng trên các nền tảng và có thể gây ra sự cố.

Vì vậy, câu hỏi rút ra một giao thức / công nghệ tốt để sử dụng cho nhiều người chơi JavaScript là gì? Bất kỳ lời khuyên về các công cụ phía máy chủ hoặc nó có vấn đề? Bất kỳ lý do nào tôi nên bỏ kiến ​​trúc hai tầng này và đi với kết nối điện thoại trực tiếp với điện thoại?

Câu trả lời:


15

Bạn muốn một giao thức truyền thông tốt hơn HTTP. Bạn có thể muốn UDP hoặc TCP. Các trình duyệt không có cách nào thực hiện giao tiếp UDP nên lựa chọn duy nhất của bạn là TCP.

Đối với TCP, bạn sẽ muốn sử dụng WebSocket , tuy nhiên hỗ trợ trình duyệt không ổn định trên websockets.

Điều này có nghĩa là bạn sẽ cần sử dụng kỹ thuật COMET để mô phỏng TCP, một mô phỏng phổ biến sẽ là một websocket được nhúng trong một ứng dụng flash.

Socket.IO là một thư viện (dành cho node.js ) hỗ trợ websockets và mô phỏng chúng với dự phòng thích hợp trên các trình duyệt web không tuân thủ (nó sử dụng flash và các kỹ thuật COMET khác).

Đối với các trò chơi JavaScript nhiều người chơi, tôi khuyên bạn nên sử dụng socket.io và node.js


1
Đây là một mẫu của một trò chơi thời gian thực được tạo bằng HTML5 & WebSockets: rawkets.com . Mã nguồn có sẵn ở đây: github.com/robhawkes/rawkets
Elisée

1
Dưới đây là hai ví dụ nữa
Raynos

4

Cả câu hỏi và câu trả lời được chấp nhận đã được xuất bản vào năm 2011 và thời gian đã thay đổi khá nhiều kể từ :)

Websockets khá phổ biến, nhưng một công nghệ thậm chí còn tốt hơn là WebRTC cho phép các luồng UDP không đáng tin cậy. Đây là nhiều, tốt hơn nhiều cho các trò chơi.

Ngoài giao tiếp, còn nhiều trở ngại khác cần khắc phục khi viết các trò chơi nhiều người chơi như hòa giải trạng thái trò chơi, dự đoán phía khách hàng, tuần tự hóa và nhiều trò chơi khác.

<shameless self promotion>

Tôi là một trong những nhà phát triển ban đầu của lance.gg , một máy chủ / thư viện trò chơi nhiều người chơi dựa trên node.js nơi chúng tôi đã giải quyết nhiều vấn đề được đề cập (và nhiều vấn đề khác!). Mục tiêu của chúng tôi là làm cho việc phát triển trò chơi nhiều người chơi trở nên dễ dàng hơn đối với các nhà phát triển trò chơi JavasScript. Tôi nồng nhiệt mời bạn sử dụng nó như một điểm khởi đầu để thực hiện trò chơi của bạn.

</shameless self promotion>


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.