Lưu trữ tọa độ của mọi đối tượng ở phía máy chủ trong MMO


12

Trong một MMORPG:

Là thông thường hoặc khả thi để lưu trữ tọa độ của mỗi cây, bụi cây .. vv ở phía máy chủ để phát hiện va chạm?

Nếu vậy, điều gì sẽ là một cách khả thi để lưu trữ một số lượng lớn tọa độ như vậy (cấu trúc dữ liệu và như vậy, xử lý các vấn đề về hiệu suất)?

Nếu không, loại phát hiện va chạm này được thực hiện hoàn toàn ở phía máy khách, với máy chủ không kiểm tra gì cả?

Hoặc có một nền tảng trung gian, với máy khách kiểm tra va chạm và máy chủ xác minh? Nếu vậy, làm thế nào để máy chủ xác minh tương tự mà không giữ tọa độ trong máy chủ?


2
Tôi không biết đủ về điều này để đưa ra một câu trả lời hay, nhưng nếu bạn chỉ phát hiện va chạm ở phía khách hàng, những kẻ gian lận sẽ tìm cách cắt xén mọi thứ hoặc nhặt những chiếc powerups cách xa họ.
Peethor

2
-1 "Câu hỏi không cho thấy bất kỳ nỗ lực nghiên cứu nào".
Vaillancourt


thực ra, có lẽ không phải là một bản sao, tôi đã tìm hiểu về các sơ đồ phân vùng không gian và cấu trúc dữ liệu không gian mà câu hỏi khác không có
Sajith Dilshan Jamal

Câu trả lời:


15

Không phụ thuộc vào tính khả thi (có, tùy thuộc vào quy mô) thường có những cách tốt hơn hoặc dễ dàng hơn.

Chẳng hạn, trong MMO điển hình của bạn, máy chủ thực sự chỉ cần biết về bản đồ điều hướng thô được sử dụng bởi AI và tìm đường dẫn người chơi. Thay vì lưu trữ vị trí của cây, thay vào đó bạn chỉ có thể cắt một lỗ vào sơ đồ điều hướng tại vị trí của cây. Tương tự như vậy cho bất kỳ trở ngại lớn khác.

Ngay cả các trò chơi cần phát hiện va chạm sâu hơn, bạn thường có thể chia phần này thành phát hiện phía máy chủ và máy khách. Máy chủ chỉ có thể quan tâm đến đường dẫn thô trong khi máy khách xử lý phát hiện va chạm nhạy hơn với hình ảnh động. Chẳng hạn, một người chơi bị thương cố gắng bò dọc theo một tảng đá lớn để tìm nơi ẩn nấp trước kẻ thù. Các máy chủ xác định rằng một cầu thủ có thể di chuyển dọc theo cạnh của đá (máy chủ không có ý tưởng rằng có một tảng đá, chỉ rằng có một con đường người chơi có thể lấy bên cạnh một khu vực unpathable) trong khi khách hàng biết rằng nhạc rock có mặt và đóng một hình ảnh động của nhân vật chống lại tảng đá khi nó bước đi. Lưu ý rằng khách hàng không di chuyểnnhân vật hoặc lối chơi tác động theo bất kỳ cách nào trong trường hợp này; nó chỉ phản ứng với các vật thể gần đó bằng một hình ảnh động.

Bạn chắc chắn có thể lưu trữ số lượng lớn các đối tượng trên máy chủ. Nó không khác gì bất kỳ trò chơi thế giới mở nào. Sử dụng sơ đồ phân vùng không gian tốt và giữ cho dấu chân bộ nhớ của các đối tượng của bạn nhẹ nhất có thể. Lưu ý rằng chúng tôi có thể có các phiên bản "số lượng lớn" khác nhau trong đầu: nếu bạn muốn lưu trữ từng viên sỏi nhỏ hoặc đá trong trò chơi như một đối tượng riêng biệt thì điều đó chỉ là ngớ ngẩn, ngay cả đối với một trò chơi một người chơi . :)


7

Vâng - nó khả thi. MMO thường chia thế giới trò chơi thành nhiều khu vực, vì điều này giúp công việc dễ dàng hơn, nhưng bạn vẫn có thể thực hiện với 1 khu vực đồ sộ - bạn chỉ cần sử dụng sơ đồ phân vùng không gian tốt.

Vì hầu hết các đối tượng trong MMO không di chuyển, bạn cũng có thể thực hiện vượt qua tiền xử lý nơi các đối tượng được sử dụng để tạo cây kiểm tra va chạm.

Dấu chân bộ nhớ không phải là một vấn đề lớn ở đây miễn là bạn sử dụng inst instaging. Lưu trữ một vài float mỗi đối tượng là không có gì trong sơ đồ lớn của mọi thứ. Một PC khiêm tốn hiện nay sẽ có 4 gigabyte, trong khi lưu trữ một vị trí chỉ là 3 phao (hoặc 3 nhân đôi) - điều này sẽ dễ dàng cho phép vài triệu đối tượng được lưu trữ trong trò chơi.

Lưu trữ những thứ như hàng tồn kho cho mỗi người chơi chắc chắn sẽ chiếm nhiều dữ liệu hơn - mặc dù điều đó có thể dễ dàng được lưu vào đĩa và chỉ được tải khi người chơi đăng nhập.

Bạn sẽ muốn thực hiện kiểm tra va chạm trên máy khách cũng như máy chủ một cách dự phòng, vì điều này sẽ cho phép khách hàng phản ứng nhanh hơn với môi trường. Nếu người chơi đi vào tường, bạn muốn họ ngừng di chuyển ngay lập tức - không sau nửa giây khi máy chủ phản hồi.

Bạn chỉ muốn sử dụng máy chủ cho những thứ có thẩm quyền, quá. Ví dụ: bạn sẽ chỉ thực hiện tìm đường trên máy khách, vì bạn không thể gian lận bằng cách chọn một đường dẫn kém hiệu quả hơn!


cảm ơn vì lời khuyên về các kế hoạch chia tay không gian, tôi đã học được một điều mới
Sajith Dilshan Jamal
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.