Ai tính toán AI trong MMO?


30

Tôi đang xây dựng MMO và muốn thêm NPC. Có điều là tôi không biết thiết kế cơ bản. Các tính toán, máy khách hoặc máy chủ là gì? Tôi sẽ hiểu máy chủ tính toán các sự kiện và phản ứng, nhưng khi nói đến việc tìm đường và vị trí và chuyển động của người chơi, ai sẽ tính toán điều đó?

Ai tính toán AI máy chủ hoặc máy khách? Tôi không thể tưởng tượng máy chủ tính toán đường dẫn, vị trí, chuyển động và vân vân. Xin vui lòng tôi cần giúp đỡ để hiểu điều này, cảm ơn, bất cứ điều gì sẽ giúp.


2
Cẩn thận với thuật ngữ của bạn - ví dụ NPC không phải là người chơi.
Kylotan

Câu trả lời:


25

Hầu hết các MMO ngày nay có bất cứ điều gì quan trọng được thực hiện ở phía máy chủ, vì lý do an toàn. Bạn không thể giảm tải nhiều cho khách hàng, đó là lý do tại sao một trong những điều đầu tiên bị trục trặc là thói quen AI. Tôi nghĩ rằng hầu hết các nhà phát triển coi phía khách hàng là có thể hack như một quy tắc, không phải là một ngoại lệ.

Badifyna của Scalify ( http://www.scalify.com/badumna.php ) cố gắng giảm tải một phần của nó cho khách hàng để họ có các tính toán được thực hiện phía khách hàng và gửi cho nhau; một số dữ liệu cũng được gửi đến một đồng nghiệp có thẩm quyền để được xác thực trước khi nó được chuyển cho khách hàng, giống như một máy chủ chuyên dụng. Vấn đề là TẤT CẢ dữ liệu trong trò chơi nhiều người chơi PHẢI được gửi qua một đồng nghiệp có thẩm quyền nếu bạn muốn ngăn chặn gian lận. Tôi đã đưa Badumna lên vì nó có vẻ gần nhất với những gì bạn muốn, nhưng ngay cả điều đó sẽ không thể bắt được kẻ gian lận - nó có thể bắt được một số, nhưng bất cứ điều gì quan trọng (ví dụ: mọi thứ, khá nhiều) đều phải được thực hiện trên máy chủ- bên.

Tôi có thể mở rộng một số thứ trên Badumna, bởi vì nó vẫn có thể là thứ gì đó bạn sẽ thấy hữu ích (nhưng tôi khuyên bạn nên xem xét lại việc tải bất cứ thứ gì quan trọng lên máy khách, vì khách hàng S Gian lận).

Badumna cung cấp một kiến ​​trúc lai cho các hoạt động dữ liệu. Nó cung cấp quyền kiểm soát hoàn toàn cho nhà phát triển trong việc quyết định điều gì là quan trọng (và phải được xác minh) và điều gì không (và do đó có thể được gửi bởi mạng phi tập trung).

Nếu một MMO yêu cầu mỗi bit thông tin phải được xác minh thì Badumna sẽ hoạt động như một giải pháp máy khách-máy chủ. Tuy nhiên, tôi tin rằng có nhiều loại ứng dụng MMO khác nhau với các yêu cầu khác nhau. Ví dụ, khá thường xuyên một MMO sẽ có các khu vực chiến đấu nơi người chơi có khả năng gian lận và do đó mọi thông tin phải được xác minh. Tuy nhiên, cũng có những khu vực mà người chơi chỉ có thể đi bộ / chạy / nhảy / trò chuyện. Các khu vực như vậy không yêu cầu xác minh đầy đủ và có thể sử dụng mạng phi tập trung của Badumna và hưởng lợi từ khả năng mở rộng mà nó có thể cung cấp.

Thứ hai, Badumna cung cấp các tính năng bảo mật bổ sung mà nhà phát triển có thể truy cập như bảo vệ danh tính (để người dùng không thể giả vờ là người khác), proxy khiếu nại (cho phép khách hàng được định cấu hình để báo cáo người chơi độc hại / gian lận với nguồn đáng tin cậy) và danh sách đen (cấm người chơi độc hại khỏi các trò chơi).

Tôi đã không thực sự khám phá Badumna nhiều như vậy, vì vậy có nhiều vấn đề và tính năng mà tôi không biết, nhưng ít nhất tôi đã đưa ra một cái nhìn lướt qua về nó.

tl; dr: khách hàng thực sự chỉ cần là một bàn phím và chuột được nối với internet.


9

Câu trả lời ngắn gọn là đối với một MMO tiêu chuẩn, các tính toán AI luôn được máy chủ thực hiện.

Một số trò chơi sẽ có ứng dụng khách cố gắng dự đoán AI, do đó các NPC sẽ xuất hiện để phản ứng nhanh hơn, nhưng đó chỉ là ảo ảnh; NPC thực luôn được điều khiển bởi máy chủ.


5

MMO là một máy chủ công cộng (Internet-). Bất cứ điều gì bạn muốn có thể kiểm soát hoàn toàn không nên truy cập công khai, nếu không, bạn có nguy cơ cho phép kẻ tấn công kiểm soát NPC. Trừ khi bạn đang thực hiện một số loại mã hóa trên các lệnh của bạn (sẽ ảnh hưởng đến hiệu suất), bạn không thể tin rằng máy khách chỉ chạy mã của riêng bạn.

Dự đoán các chuyển động của NPC trên máy khách để bù cho độ trễ là một ý tưởng tuyệt vời; về mặt lý thuyết bạn có thể bao gồm nhiều hành vi AI như bạn muốn trong chương trình máy khách và để chúng đồng bộ hóa định kỳ - nhưng cho phép khách hàng ra lệnh cho hành vi của NPC sẽ cho khách hàng tiềm năng gây rối với thế giới trò chơi. Nếu máy khách đồng bộ hóa từ thế giới trò chơi trên máy chủ thì bạn sẽ kết thúc với các NPC lừa đảo không thể kiểm soát.

Đó là một sự xấu hổ, thực sự, bởi vì phân phối AI trên máy khách có thể ảnh hưởng đến khả năng mở rộng.


2
Mã hóa chủ yếu là vô dụng - khách hàng cần có khả năng giải mã mọi thứ được gửi tới nó và khách hàng có thể được thiết kế ngược lại. Tốt nhất mã hóa sẽ làm chậm một ai đó tạo ra một khách hàng gian lận.
Adam

2

Thông thường, máy chủ nên tính toán hoặc xác nhận mọi dữ liệu được truyền đến hoặc nhận từ máy khách. Nhưng nó phụ thuộc vào mức độ bạn có thể tin tưởng khách hàng và mức độ quan trọng của tính toán đó. Đôi khi việc tính toán chính có thể được thực hiện trên máy khách và máy chủ có thể sử dụng một phương pháp đơn giản để xác thực dữ liệu kết quả.


1

Để xây dựng các câu trả lời khác, chiến lược "giảm tải và xác minh" thực sự có thể hữu ích, trong trường hợp xác minh dễ dàng hơn so với tính toán ban đầu (hoặc khi chỉ kiểm tra tại chỗ thỉnh thoảng mới đủ để bắt kẻ gian).

Ví dụ: nếu bạn có máy khách thực hiện tìm đường dẫn A * và gửi kết quả đến máy chủ, tất cả các máy chủ sẽ phải làm là kiểm tra xem a) đường dẫn có hợp lệ không và b) không có đường dẫn ngắn hơn. Kiểm tra tính hợp lệ của đường dẫn phải dễ dàng và việc kiểm tra tính tối ưu thể dễ dàng hơn so với việc tìm đường dẫn tối ưu để bắt đầu, vì bây giờ bạn có giới hạn trên về độ dài của các đường dẫn bạn cần kiểm tra. (Đặc biệt, nếu khách hàng trả về một đường thẳng, rõ ràng là tối ưu miễn là nó hợp lệ.) Thành thật mà nói, tôi không biết liệu thủ thuật đặc biệt này có hữu ích trong thực tế hay không, nhưng tôi không thấy trở ngại cơ bản nào với nó

Tuy nhiên, xin lưu ý rằng nếu bạn giảm tải NPC AI cho các máy khách, thì máy khách bị hack có thể có khả năng sử dụng nó để dự đoán hành vi của NPC trước. Đối với một số loại trò chơi hoặc tình huống, đây có thể là một vấn đề nghiêm trọng.


1

Có lẽ tốt nhất là có một số thói quen AI đơn giản và các tính toán quan trọng trong trò chơi ở phía máy chủ, trong khi xử lý các hoạt động không quan trọng trong trò chơi phức tạp ở phía máy khách.

Ví dụ: máy chủ biết NPC thù địch ở đâu và các ký tự của người chơi ở đâu. Khi nhân vật người chơi nằm trong phạm vi của NPC, có thể thực hiện phép tính phía máy chủ để xem liệu NPC có tấn công người chơi hay không và có thể thực hiện định tuyến tìm đường đơn giản để xác định NPC sẽ mất bao lâu để đến được trình phát.

Khi NPC đã được chuyển sang trạng thái tấn công, máy khách có thể xử lý hoạt hình và tìm đường dẫn chi tiết. Khi NPC đủ gần để máy khách tấn công, máy chủ có thể thực hiện các tính toán để xem liệu cuộc tấn công có tấn công hay không, thiệt hại là gì, v.v ...

Bạn sẽ muốn đảm bảo rằng mọi tính toán thực sự ảnh hưởng đến kết quả của trò chơi đều được máy chủ xử lý và chuyển cho khách hàng, trong khi các tính toán không quan trọng được xử lý bởi khách hàng.

Trong trường hợp đơn giản nhất, bạn sẽ giữ máy khách đồng bộ với nơi mà máy chủ mong đợi, máy chủ sẽ xác minh, sau đó máy khách sẽ tính toán lại.

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.