2012-04-06 40 views
6

Tôi hiện đang làm việc với phía máy chủ Java và phía máy khách as3. Tôi tự hỏi nếu có một viên đạn bạc ra khỏi đó để đồng bộ hóa đồng hồ giữa chúng. Giữa độ trễ biến và tốc độ đồng hồ biến có vẻ như mỗi gói tin sẽ cần một dấu thời gian.Đồng bộ hóa thời gian/sự kiện giữa máy khách và máy chủ trò chơi (MMORPG)?

Cảm ơn!

+0

NTP hoặc biến thể của chúng? – Thomas

+0

@Thomas Đó là điều tốt cho thời gian hệ thống - nhưng đây là vấn đề của sự kiện đồng bộ hóa và độ trễ và tránh việc khách hàng ăn gian hoặc làm cho [không thể tin được] thông tin không chính xác, v.v. –

+0

làm mô hình của bạn cả phía máy chủ và phía máy khách. giới hạn đầu vào của khách hàng vào đầu vào của chuột và bàn phím. bạn không bao giờ có thể nhận được chính xác 100% với thời gian và sẽ phải đưa ra các ước tính và thực hiện hành động khắc phục dần dần. – dqhendricks

Trả lời

0

Không, không có viên đạn bạc. Bạn sẽ phải ứng biến. Dấu thời gian là một ý tưởng hay. Ngoài ra, hãy cố gắng duy trì tối thiểu tính toán được thực hiện trên máy chủ.Không mô phỏng những thứ không liên quan. Chỉ cần những thứ mà bạn nghĩ sẽ phá vỡ logic trò chơi của bạn.Làm cho khách hàng tính toán phần còn lại và chỉ phát các kết quả cho người đăng ký của bạn .

2

Đây chỉ là phần trên đầu của tôi, không có bất kỳ mã nào.

  1. Đặt mã trong máy chủ và ứng dụng khách để gửi và nhận ping.
  2. Gửi một ping từ máy khách đến máy chủ mỗi khi khách hàng kết nối.
  3. Ghi thời gian hiện tại là thời gian gửi te.
  4. Khi khách hàng nhận được ping, hãy ghi lại thời gian hiện tại vào thời gian nhận.
  5. Nhận thời gian trễ bằng cách trừ thời gian nhận theo thời gian gửi và chia thời gian gửi cho 2.
  6. Yêu cầu máy chủ gửi thời gian hiện tại cho khách hàng.
  7. Trừ chênh lệch thời gian khỏi máy chủ thời gian được gửi.
  8. Đặt thời gian khách hàng để thời gian từ bước 6.

Tôi không chắc chắn nếu điều này sẽ làm việc một cách chính xác 100%, nhưng tôi hy vọng điều này sẽ giúp!

+1

Vâng, tôi nghĩ, đây là cách đúng đắn. Về mặt khái niệm, bạn phải lưu trữ tem thời gian trên mỗi máy khách cũng như máy chủ. Và điều chỉnh thời gian cho mỗi người trong số họ bằng cách biết thời gian bù đắp. –

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