Tôi phải đồng bộ hóa chuyển động của nhiều người chơi qua Internet và tôi đang cố gắng tìm ra cách an toàn nhất để làm điều đó.
Trò chơi dựa trên ô xếp, bạn chỉ có thể di chuyển theo 4 hướng và mỗi lần di chuyển sẽ di chuyển sprite 32px (tất nhiên theo thời gian). Bây giờ, nếu tôi chỉ đơn giản gửi hành động di chuyển này đến máy chủ, nó sẽ phát nó cho tất cả người chơi, trong khi phím đi bộ được nhấn xuống, để tiếp tục đi bộ, tôi phải thực hiện lệnh tiếp theo này, gửi nó đến máy chủ, và cho tất cả khách hàng, theo thời gian, hoặc phong trào sẽ không còn suôn sẻ nữa. Tôi đã thấy điều này trong các trò chơi khác, và nó có thể trở nên xấu xí khá nhanh, thậm chí không bị lag. Vì vậy, tôi tự hỏi nếu điều này thậm chí là một lựa chọn khả thi. Đây có vẻ là một phương pháp rất tốt cho người chơi đơn, vì nó dễ dàng, thẳng tiến (chỉ cần thực hiện hành động di chuyển tiếp theo kịp thời và thêm nó vào danh sách), và bạn có thể dễ dàng thêm chuyển động chuột (nhấp vào một số ô), để thêm một đường dẫn đến hàng đợi, đó là đi dọc.
Một điều khác xuất hiện trong đầu tôi là gửi thông tin rằng ai đó bắt đầu di chuyển theo hướng nào đó, và một lần nữa khi anh ta dừng lại hoặc thay đổi hướng, cùng với vị trí, để sprite xuất hiện ở đúng vị trí, hoặc đúng hơn là vị trí có thể được cố định nếu nó sai. Điều này sẽ (hy vọng) chỉ gây ra vấn đề nếu ai đó thực sự bị tụt lại, trong trường hợp đó là điều được mong đợi. Để giải quyết vấn đề này, tôi cần một số loại hàng đợi, nơi lưu trữ thay đổi hướng đến và công cụ, vì vậy sprite biết nơi để đi, sau khi chuyển động hiện tại sang lát tiếp theo kết thúc. Điều này thực sự có thể làm việc, nhưng âm thanh quá phức tạp. Mặc dù nó có thể là cách duy nhất để làm điều này, mà không có nguy cơ nói lắp. Nếu một điểm dừng hoặc thay đổi hướng được nhận ở phía máy khách, nó ' s được lưu trong hàng đợi và char tiếp tục di chuyển đến tọa độ đã chỉ định, trước khi dừng hoặc thay đổi hướng. Nếu lệnh mới đến quá muộn, dĩ nhiên sẽ có nói lắp ...
Tôi đang gặp khó khăn khi quyết định phương pháp và tôi thực sự không thể tìm thấy bất kỳ ví dụ nào cho việc này. Vấn đề chính của tôi là giữ cho chuyển động của gạch trơn tru, đó là lý do tại sao các chủ đề khác liên quan đến đồng bộ hóa chuyển động dựa trên pixel không giúp ích quá nhiều.
Cách "tiêu chuẩn" để làm điều này là gì?