2016-05-16 12 views
6

Tôi đang triển khai dịch vụ trò chơi nhiều người chơi trên google thời gian thực.Phát hiện xem người chơi khác có vô ý hay không (ví dụ: ngắt kết nối internet) và kết nối lại - Google chơi nhiều người chơi thời gian thực

Hiện tại nếu tôi tắt WIFI trên một máy khách, ứng dụng khách khác không phát hiện thấy kết nối bị mất. Không có sự kiện PeerDisconnect nào được gọi.

1 - API có cung cấp bất kỳ thứ gì để kiểm tra xem liệu mạng ngang hàng có được kết nối không?

2 - Có cách nào để người chơi kết nối lại với phòng không?

Trả lời

2

1 - API có cung cấp bất kỳ thứ gì để kiểm tra xem liệu mạng ngang hàng có được kết nối không?

Như đã nêu trong Connecting players, bạn có thể theo dõi trạng thái kết nối của người tham gia bằng cách sử dụng số gọi lại RoomStatusUpdateListener. Như đã nêu:

Để được thông báo khi tất cả người chơi được kết nối, trò chơi của bạn có thể sử dụng gọi lại RoomUpdateListener.onRoomConnected(). Trò chơi của bạn cũng có thể sử dụng các cuộc gọi lại RoomStatusUpdateListener để theo dõi trạng thái kết nối của những người tham gia. Dựa trên trạng thái kết nối của người tham gia, trò chơi của bạn có thể quyết định có bắt đầu hoặc hủy phiên trò chơi hay không.

2 - Có cách nào để người chơi kết nối lại với phòng không?

thời gian thực Multiplayer - Gameplay bang rằng:

Khi số lượng yêu cầu của người tham gia cho một phòng đã được kết nối, căn phòng được coi là 'điền' và gameplay có thể bắt đầu. Sau khi người tham gia tham gia vào một căn phòng, trò chơi của bạn có thể cho phép họ rời khỏi phòng (thực sự thả chúng ra khỏi trò chơi). Tuy nhiên, không có người chơi mới nào có thể tham gia phòng sau khi được 'điền' (thậm chí không điền vào chỗ mà người tham gia đã bỏ trống).

Bên cạnh đó, đề cập đến best practice for Real-time multiplayer:

Nếu bạn không rời khỏi phòng một cách thích hợp, Google Play dịch vụ trò chơi sẽ tiếp tục gửi thông báo sự kiện và lời mời cho khách hàng. Bạn nên rời khỏi phòng hoạt động bất cứ khi nào một trong những trường hợp này xảy ra:

  • Trò chơi kết thúc (ví dụ: người chơi đã thắng trận đấu).
  • Khi trò chơi của bạn chuyển sang chế độ nền.
  • Trên Android, rời khỏi phòng khi:
    • Người chơi hủy trò chơi trong giao diện người dùng của phòng chờ.
    • Mã phản hồi được trả lại trong số gọi onActivityResult()GamesActivityResultCodes.RESULT_LEFT_ROOM.
    • Hoạt động onStop() được gọi. Điều này có thể cho biết rằng hoạt động của bạn đang bị hủy. Trong trường hợp này, hãy rời khỏi phòng và gọi disconnect().

Hy vọng các liên kết này bao gồm tất cả mối quan tâm của bạn. Chúc mừng mã hóa! :)

+1

1 - Cảm ơn tôi sẽ xem xét điều đó, tức là nếu trạng thái kết nối của người tham gia có internet bị tắt thay đổi đối với người tham gia khác. 2 - Vì vậy, câu trả lời ngắn gọn là không có cách nào để kết nối lại với cùng một phòng sau khi rời khỏi. :) – Uzi

+1

CẬP NHẬT: Thử nghiệm giải pháp cho câu hỏi thứ nhất ---- Khi kết nối internet của người tham gia ngắt kết nối hoặc ngay cả khi nó chỉ chuyển đổi giữa Dữ liệu và Wifi, trạng thái kết nối của người tham gia không thay đổi. Nó vẫn cho thấy rằng người tham gia được kết nối cho đến khi bạn gọi phòng nghỉ trên người tham gia khác. Nhưng bạn không thể gửi bất kỳ tin nhắn nào ngay bây giờ! – Uzi

+0

Tôi có cùng một vấn đề và có, thực hiện callbacks RoomStatusUpdateListener như @Teyam đề xuất không giúp đỡ. API không gọi bất kỳ callaback nào khi một peer mất kết nối. Tôi đang lên kế hoạch để giải quyết vấn đề này bằng cách thiết lập bộ đếm thời gian theo dõi trên các khách hàng liên tục ping các đồng nghiệp để xem họ có còn kết nối không. – nradk

Các vấn đề liên quan