2012-02-28 16 views
5

Tôi hiện đang trong giai đoạn lập kế hoạch cho trò chơi 2D dành cho thiết bị di động mà tôi sẽ tạo trong C++ bằng cocos2d-x. Trò chơi sẽ được bật và mỗi lượt sẽ có một giai đoạn trong đó mô phỏng vật lý sẽ diễn ra. Nó cũng sẽ là nền tảng chéo.Bật mạng vật lý nhiều người dùng theo số

Tôi mới sử dụng mạng nhiều người và tự hỏi cách tốt nhất để đồng bộ hóa vật lý là vì Box2d không hoạt động giống nhau trên các thiết bị khác nhau.

Mô phỏng không phải xảy ra đồng thời trên mỗi thiết bị nhưng tôi cần kết quả chính xác như nhau. Lý tưởng nhất là người chơi sẽ có thể chứng kiến, trên thiết bị của chính họ, cùng một mô phỏng vật lý (tức là chuyển động phóng, nảy, va chạm) và kết quả xảy ra trong khi đối thủ của họ biến bất cứ khi nào họ quyết định bắt đầu lượt của mình.

Cách tốt nhất để làm điều này là gì? Từ nghiên cứu của tôi, tôi đã đưa ra một vài giải pháp. Tôi có nên viết một số mã máy chủ mà tôi sẽ đưa đầu vào của người dùng và xử lý tất cả các mô phỏng vật lý, sau đó gửi kết quả cho mỗi thiết bị? hoặc là có một cách tôi có thể xử lý các mô phỏng trên một thiết bị và gửi tất cả các thông tin khác?

Ngoài ra chính xác cách nào một người gửi mọi thứ xảy ra trong quá trình mô phỏng qua mạng vì tôi không thể chạy mô phỏng trên mỗi thiết bị và được đảm bảo cùng một kết quả? Tôi chỉ cần cập nhật các máy chủ (hoặc thiết bị) với thông tin về những gì xảy ra trong mỗi vài TimeSteps?

Tôi cũng sẽ xem xét triển khai phát hiện vật lý/va chạm của riêng mình.

Trả lời

0

Nếu các thiết bị khác nhau không thể chạy mô phỏng và nhận được kết quả tương tự, điều đó đã hết. Bạn phải chạy sim ở một nơi và phân phối kết quả.

Trên một trong các thiết bị hoặc trên một máy chủ riêng biệt? Nó sẽ được dễ dàng hơn đáng kể để thực hiện các sim trên một máy chủ riêng biệt? Nếu có thì hãy làm; nếu không, thì không có lý do gì để liên quan đến một cỗ máy phụ.

Lược đồ cập nhật bạn đề xuất là điểm khởi đầu tốt. Nó không cần liên quan đến mọi thứ xảy ra trong lượt, chỉ những gì thói quen hiển thị cần để hiển thị hành động cho người dùng. Bắt đầu với khoảng thời gian nhỏ (có nghĩa là rất nhiều dữ liệu), sau đó làm cho chúng lớn hơn cho đến khi hình ảnh bắt đầu bị ảnh hưởng.