2017-04-22 15 views
11

Tôi đang phát triển phiên bản trực tuyến của trò chơi phổ biến Pong sử dụng Libgdx. Tôi đã bắt đầu sử dụng dịch vụ Nhiều người chơi trong thời gian thực của Google để gửi dữ liệu trò chơi giữa những người chơi, nhưng tôi không thể tìm ra cách giải quyết vấn đề đồng bộ hóa mà tôi đang gặp phải.Cách đồng bộ hóa Dịch vụ Play Thời gian thực Nhiều người chơi

Thông tin được gửi tại thời điểm này là mái chèo của người chơi, vì vậy khi tôi di chuyển, tôi gửi vị trí mới của mình cho đối thủ. Tại thời điểm đối thủ nhận được nó, thời gian đã trôi qua và đồng bộ bị mất.

Tôi hiểu rằng có thể có một số thời gian chờ đợi giữa các chuyển động bằng cách sử dụng kết nối chậm nhất, nhưng làm cách nào để làm cho nó trông mượt mà?

Trả lời

1

Không có câu trả lời dứt khoát cho câu hỏi này nhưng có nhiều chiến lược mà mọi người thích ứng để giải quyết tình huống này.

Đi từ việc sử dụng giao thức UDP (nếu bạn đang sử dụng giao tiếp dựa trên socket mà tôi sẽ giới thiệu cho bạn vì mọi ms đều quan trọng trong trò chơi thời gian thực. Tôi cho rằng google api có UDP là tin nhắn không đáng tin cậy. -api) để trao đổi tin nhắn với nội suy, tính toán chết, dự đoán phía khách hàng, vv chỉ là ít.

Đây là một chủ đề rất lớn để trả lời ở đây. Khi tôi thực hiện trò chơi dựa trên nhiều người chơi, tôi đã làm một vài điều để làm cho mọi thứ trông mượt mà hơn một chút.

  1. Đã sử dụng giao thức UDP để gửi chuyển động đến máy chủ.
  2. Tôi sẽ giữ hai mục nhập ở phía máy khách cho người chơi. Một là giá trị hiện tại và một là giá trị cần đặt. Sau đó, tôi sẽ nhân giá trị hiện tại với một yếu tố làm mịn như 0.3f cho đến khi nó không bằng với giá trị cần thiết lập. (Điều này giúp giảm số lượng người viết)
  3. Tôi sẽ gửi thư quan trọng qua TCP.

Điểm tôi đã đề cập mô tả những gì tôi đã làm trong trò chơi của mình nhưng có thể được sử dụng trong bất kỳ trường hợp nào. Mặc dù tôi khuyên bạn nên đọc các bài viết trên trang web này có tên là Gaffer on Games

Một lần nữa khu vực này rất lớn và không có câu trả lời nào có thể giúp bạn. Tôi đã làm luận án của tôi về chủ đề này và vẫn không thể cung cấp cho bạn một câu trả lời dứt khoát. Bạn sẽ phải đọc rất nhiều bài báo và mô hình những gì bạn học theo nhu cầu của bạn.

0

Bạn cần sử dụng một số loại Animation Interpolation có nghĩa là mái chèo không "dịch chuyển" đến vị trí mới, nhưng từ từ bắt đầu di chuyển đến đó, sau khi nhận được vị trí mới.

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