Tôi đang phát triển một trò chơi chiến lược thời gian thực cho một khóa học về khoa học máy tính. Một trong những khía cạnh khó khăn hơn của nó dường như là kết nối và đồng bộ hóa máy khách-máy chủ. Tôi đã đọc về chủ đề này (bao gồm 1500 cung thủ ), nhưng tôi đã quyết định thực hiện một cách tiếp cận máy khách-máy chủ trái ngược với các mô hình khác (ví dụ qua mạng LAN).
Trò chơi chiến lược thời gian thực này đi kèm với một số vấn đề. Rất may, mọi hành động người chơi thực hiện đều mang tính quyết định. Tuy nhiên, có những sự kiện xảy ra vào khoảng thời gian theo lịch trình. Chẳng hạn, trò chơi được tạo thành từ các ô xếp và khi người chơi lấy một ô, 'mức năng lượng', một giá trị trên ô đó, sẽ tăng thêm một giây sau khi chơi. Đây là một lời giải thích rất nhanh mà nên biện minh cho trường hợp sử dụng của tôi.
Ngay bây giờ tôi đang làm các máy khách mỏng, chỉ gửi các gói đến máy chủ và chờ phản hồi. Tuy nhiên, có một số vấn đề.
Khi các trò chơi giữa những người chơi phát triển thành trò chơi kết thúc, thường có hơn 50 sự kiện mỗi giây (do các sự kiện đã lên lịch, được giải thích trước đó, chồng chất) và lỗi đồng bộ hóa bắt đầu hiển thị sau đó. Vấn đề lớn nhất của tôi là ngay cả một sai lệch nhỏ về trạng thái giữa các khách hàng cũng có thể có nghĩa là các quyết định khác nhau của khách hàng, đưa bóng tuyết vào các trò chơi hoàn toàn riêng biệt. Một vấn đề khác (không quan trọng như bây giờ) là có độ trễ và người ta phải chờ vài mili giây, thậm chí vài giây sau khi họ di chuyển để xem kết quả.
Tôi đang tự hỏi những chiến lược và thuật toán nào tôi có thể sử dụng để làm cho việc này dễ dàng hơn, nhanh hơn và thú vị hơn cho người dùng cuối. Điều này đặc biệt thú vị với số lượng sự kiện cao mỗi giây, cùng với nhiều người chơi mỗi trò chơi.
TL; DR tạo RTS với> 50 sự kiện mỗi giây, làm cách nào để đồng bộ hóa máy khách?