Tôi đã triển khai kiến trúc máy chủ/máy khách, nơi tất cả thay đổi trạng thái được gửi đến chức năng, được xác thực và phát cho tất cả khách hàng được kết nối. Điều này hoạt động khá tốt, nhưng hệ thống không duy trì đồng bộ hóa giữa các trường hợp khách hàng của trò chơi như của bây giờ.Đồng bộ hóa trò chơi nhiều người
Nếu xảy ra trễ 5 giây giữa máy chủ và máy khách cụ thể thì anh ta sẽ nhận được thay đổi trạng thái 5 giây sau khi phần còn lại của khách hàng khiến anh không đồng bộ. Tôi đã tìm kiếm nhiều cách khác nhau để thực hiện một hệ thống đồng bộ hóa giữa các máy khách nhưng không tìm thấy nhiều cho đến nay.
Tôi mới làm quen với lập trình mạng và không quá ngây thơ khi nghĩ rằng mình có thể tự mình phát minh ra một hệ thống làm việc mà không dành nhiều thời gian cho nó. Tuy nhiên, những ý tưởng tôi đã có là giữ một số loại hệ thống thời gian, vì vậy mỗi thay đổi trạng thái sẽ được kết nối với một dấu thời gian cụ thể trong trò chơi. Bằng cách đó, khi một khách hàng nhận được một sự thay đổi trạng thái, nó sẽ biết chính xác trong đó thời gian của trò chơi thay đổi xảy ra, và lần lượt có thể tương quan với độ trễ. Vấn đề với phương pháp này là trong thời gian n giây, trò chơi sẽ tiếp tục ở phía máy khách và do đó khách hàng sẽ phải quay lại kịp thời để cập nhật thay đổi trạng thái chắc chắn sẽ lộn xộn.
Vì vậy, tôi đang tìm kiếm các bài báo thảo luận về các chủ đề hoặc thuật toán giải quyết nó. Có lẽ toàn bộ thiết kế của tôi về cách thức hoạt động của hệ thống nhiều người là thiếu sót, theo nghĩa là cá thể trò chơi của một khách hàng không nên cập nhật trừ khi nhận được khái niệm từ máy chủ? Ngay bây giờ các khách hàng chỉ cập nhật chính mình trong vòng lặp trò chơi của họ giả định rằng bất kỳ trạng thái nào không thay đổi.
Câu hỏi thú vị. – Ian
Tôi tin rằng bạn nên xem xét lại câu trả lời được chấp nhận. Havenard không nói gì về tính toán chết hay bất kỳ kỹ thuật lẩn trốn nào khác được sử dụng ngày nay. Nó không phải là trường hợp mà trò chơi chỉ tuyên bố "người chơi tụt hậu nên chấp nhận tình trạng của họ"; họ cố gắng che giấu độ trễ để làm cho trò chơi trở nên dễ chơi hơn. Sau khi tất cả, nếu tôi chơi một trò chơi mà mọi người đã nhảy ở khắp mọi nơi và tôi khó có thể chơi, tôi sẽ rời khỏi trò chơi đó khá darn nhanh chóng. – Ricket