Phát hiện va chạm MMO


7

Tôi đang xây dựng một máy chủ trò chơi MMO cho một trò chơi 2D và hiện đang thực hiện phát hiện va chạm, và tôi muốn biết tôi nên làm gì.

Hãy nói rằng tôi có 1000 người chơi và 10.000 đối tượng, tôi có nên lặp lại tất cả để xác định xem có va chạm không? Điều này có vẻ hơi đắt tiền.

Tôi có thể tách thế giới thành các phần và lặp lại mọi đối tượng cho mỗi người chơi trong phần đó.

Tôi muốn biết một số ý tưởng khác hoặc những gì là tiêu chuẩn. Cách tốt nhất để máy chủ MMO xử lý phát hiện va chạm là static objectsgì?


Tôi vừa tìm thấy điều này, nó bổ sung vào câu trả lời của David: gamedev.stackexchange.com/questions/3884/ Khăn
Patrick Lorio

Câu trả lời:


14
  1. Thế giới bị tách thành nhiều phần thực sự là bước đầu tiên bạn nên thực hiện, với mỗi phần được xử lý riêng biệt.

  2. Đối tượng tĩnh ? Hoàn toàn tĩnh theo nghĩa là chúng không bao giờ di chuyển, và không bao giờ biến mất? Sau đó, bạn có thể chỉ cần kết hợp các đối tượng này vào bất kỳ cấu trúc dữ liệu nào bạn đang sử dụng để điều hướng người chơi trên thế giới (chẳng hạn như lưới , lưới điều hướng hoặc biểu đồ khả năng hiển thị ). Không cần thực hiện bất kỳ phát hiện va chạm cá nhân. Điều này có thể được thực hiện thủ công bởi các nhà thiết kế hoặc tự động bởi động cơ như một bước tiền xử lý của đường ống nội dung.

  3. Mặt khác, nếu bạn thực sự muốn thực hiện phát hiện va chạm giữa các thực thể động bên trong mỗi khối, tùy thuộc vào số lượng thực thể đồng thời dự kiến ​​mà bạn có thể hưởng lợi từ việc sử dụng cấu trúc dữ liệu phân vùng không gian (như tứ giác hoặc lưới ) để giảm số lượng thực thể cần phải lặp đi lặp lại. Nói chung, nghiên cứu chủ đề rộng hơn về phát hiện va chạm pha rộng (không có ý định chơi chữ) bao gồm các kỹ thuật phân chia không gian đã nói ở trên cũng như các phương pháp khác như quét và cắt tỉa .


3
Lưu ý bên lề: một tập hợp con của tất cả các động cơ vật lý là tiện ích để phát hiện va chạm, ngay cả khi bạn không sử dụng vật lý để di chuyển, bạn vẫn có thể sử dụng phát hiện va chạm nếu bạn không muốn tự viết.
Patrick Hughes

1
@PatrickHughes Đúng. Một vài năm trước tôi đã dành hàng giờ cố gắng để các giao lộ OBB-OBB hoạt động chính xác bằng định lý trục tách. Sau đó trong 5 phút tôi đã bỏ Box2D vào và giải quyết vấn đề.
David Gouveia

Chưa kể họ đã triển khai broadphase cho bạn.
David Gouveia

1
Có thực tế không khi 'tắt' tất cả các tính toán khác trong động cơ vật lý để tạo điều kiện thuận lợi cho việc này? Thường thì bạn không muốn thử và thực hiện vật lý phù hợp trên máy chủ MMO vì các đối tượng thường xuyên di chuyển một cách không liên tục.
Kylotan

1
Tôi không nói gì về việc co giật hoặc 'kỳ lạ', nhưng các đối tượng MMO thường cần di chuyển không liên tục vì bạn cần phải đưa chúng đến các vị trí nhất định, ví dụ: để dịch chuyển tức thời / khoanh vùng, hoặc để sửa các dự đoán xấu và hack tốc độ, v.v. Tôi đã không sử dụng các gói vật lý trong nhiều năm nhưng hồi đó thường khá khó khăn để xử lý các chuyển động tùy ý như vậy, do đó, câu hỏi của tôi.
Kylotan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.