Tôi đang làm cho một trò chơi nhiều người trong C++:Cập nhật tần số tối ưu cho một máy chủ của khách hàng dựa trên nhiều trò chơi
Các khách hàng chỉ đơn giản là lấy lệnh từ người dùng, tính toán vị trí mới máy nghe nhạc của họ và giao tiếp nó tới máy chủ. Máy chủ chấp nhận các cập nhật vị trí như vậy từ tất cả các máy khách và phát sóng giống nhau về từng cái. Trong một kịch bản như vậy, những thông số nào nên xác định khoảng cách thời gian giữa các bản cập nhật liên tiếp (tôi không muốn cập nhật quá nhiều, do đó nghẹn n/w). Tôi đã suy nghĩ, ping tối đa trong số các khách hàng nên là một trong những tham số đóng góp.
Thứ hai, làm cách nào để xác định ping/độ trễ này của khách hàng? Các chủ đề khác trên diễn đàn này đề xuất sử dụng "ổ cắm thô" hoặc sử dụng lệnh ping của hệ thống và thu thập kết quả từ tệp .. có nghĩa là họ sử dụng một cái gì đó như system('ping "client ip add" > file')
hoặc forking và exec'ing lệnh ping ..
Trước hết khái niệm cơ bản của bạn là thiếu sót. Gửi các COMMANDS đến máy chủ, KHÔNG phải các vị trí. Nếu không, bạn sẽ kết thúc với nhiều gian lận hơn bạn có thể nghĩ đến. Thứ hai, tỷ lệ cập nhật phụ thuộc vào loại trò chơi của bạn trong trường hợp của tôi http://github.com/BonsaiDen/NodeGame-Shooter điều, 50-300ms là đủ. Các khoảng thời gian lớn hơn giữa các bản cập nhật của bạn nội suy hơn bạn sẽ phải làm. –
Ivo, ur phải, có rất nhiều phạm vi cho khách hàng gian lận nếu tôi gửi các vị trí, nhưng tôi figured, rằng kể từ im sử dụng UDP để gửi các gói cập nhật, nếu "vị trí" cập nhật bị mất trong quá cảnh sau đó thiệt hại cho trò chơi sẽ không nghiêm trọng như thể các bản cập nhật 'commans' bị mất, trong trường hợp bị bệnh cũng phải tiếp tục đồng bộ hóa thường xuyên với từng khách hàng vị trí chính xác của họ ... Có phải bạn cũng gợi ý rằng tần suất cập nhật không phải là chức năng của hiệu suất mạng (ví dụ nếu mạng được tải nặng/tương đối miễn phí)? – AnkurVj
Tôi dựa vào tần suất ping của người chơi, điều đó sẽ dễ dàng cho một số người làm chậm toàn bộ trò chơi bằng cách tăng số lần ping của anh ấy. Bạn đã thực hiện một số thử nghiệm chưa? UDP có phải là yêu cầu cơ bản không? Điều gì về công cụ không vị trí? Giống như kích hoạt, truyền, nhấp vào Giao diện người dùng. Bạn có muốn sử dụng UDP cho điều đó không? Bạn sẽ kết thúc với rất nhiều logic phía khách hàng và tấn mã xác thực phía máy chủ điên theo cách này. –