paint-brush
Nhà phát triển trò chơi AI làm gì và làm thế nào để trở thành mộtby@aleksandrpindyk
1,177
1,177

Nhà phát triển trò chơi AI làm gì và làm thế nào để trở thành một

Aleksandr Pindyk1m2022/06/07
Read on Terminal Reader
Read this story w/o Javascript

Aleksandr Pindyk là Kỹ sư trưởng của nhóm AI tại studio Wargaming ở Kyiv. Anh ấy đã và đang phát triển AI (trí tuệ nhân tạo) cho một trong những trò chơi trực tuyến phổ biến nhất - World of Tanks. AI trong phát triển trò chơi khác nhau về độ phức tạp vì có nhiều khía cạnh của trải nghiệm chơi game có thể được hỗ trợ với sự trợ giúp của trí tuệ nhân tạo.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - Nhà phát triển trò chơi AI làm gì và làm thế nào để trở thành một
Aleksandr Pindyk HackerNoon profile picture

Tên tôi là Aleksandr Pindyk, và tôi là Kỹ sư trưởng của nhóm AI tại Wargaming studio ở Kyiv. Trong hơn năm năm, nhóm của chúng tôi đã phát triển AI (trí tuệ nhân tạo) cho một trong những trò chơi trực tuyến phổ biến nhất - World of Tanks. Tôi muốn nói thêm về nghề của một nhà phát triển AI trong phát triển trò chơi, các chi tiết cụ thể trong công việc của anh ấy và cách trở thành một nhà phát triển.


Đầu tiên, chúng ta hãy định nghĩa trò chơi AI là gì. Nếu chúng ta loại bỏ những định nghĩa khô khan từ Wikipedia, thì AI của trò chơi là một hệ thống bắt chước hành vi của một nhân vật hoặc người chơi. Tùy thuộc vào thể loại và mục đích của trò chơi, các công nghệ và cách tiếp cận khác nhau được sử dụng trong sự phát triển của AI. Hãy xem xét các loại trò chơi chính và các mục tiêu AI.


Các trò chơi trong đó mục tiêu của AI là đánh bại người chơi là con người


Hãy cùng nhìn lại những trò chơi mà chúng ta đều biết. Một ví dụ điển hình ở đây là cờ vua và cờ vây. Loại trò chơi này có thể sử dụng trí tuệ nhân tạo dựa trên mạng nơ-ron. Vì mục tiêu chính của AI là đánh bại người chơi bằng mọi giá, nên nó không cần phải bắt chước hành vi của con người. Các hành động của một AI như vậy thường trông khó hiểu và đôi khi thậm chí còn mất tự nhiên một cách đáng sợ. Ngay cả bây giờ, một con người không thể đánh bại AI (AlphaZero) trong cùng cờ vua và cờ vây.


Ngoài hai trò chơi cổ điển này, các thử nghiệm với cách tiếp cận tương tự đang diễn ra trong các trò chơi bài như poker và trong các trò chơi cạnh tranh như StarCraft và DOTA 2. Nhiều nhà khoa học và lập trình viên từ Google và OpenAI đang nghiên cứu xây dựng trò chơi này. Tuy nhiên, đây rất có thể sẽ là một giải pháp đám mây vì cần rất nhiều tài nguyên để đào tạo trí tuệ nhân tạo.

Cách tiếp cận này không được chứng minh trong quá trình phát triển trò chơi vì tính phức tạp của nó và các mục tiêu xung đột mà AI được sử dụng.


Trong phát triển trong trò chơi, mục tiêu thường là không đánh bại người chơi bằng bất kỳ giá nào. Và đừng quên về dung lượng máy chủ. Một nhược điểm khác của cách tiếp cận này là cần phải đào tạo lại AI sau khi giới thiệu các cơ chế mới.


Trò chơi PVP

Đây là những trò chơi, chu kỳ chính của nó là cuộc đối đầu của những người chơi hoặc đội với nhau (người chơi đấu với người chơi). Người ta có thể tự hỏi vai trò của trí tuệ nhân tạo trong kịch bản này là gì? Nhưng có một số lĩnh vực mà AI được sử dụng trong các trò chơi như vậy:


  • Bots cho người mới bắt đầu

    Chúng được sử dụng cả trong quá trình huấn luyện ban đầu và làm đối thủ trong giai đoạn đầu của trò chơi. Nếu không có người mai mối theo kỹ năng của người chơi hoặc khi không thể cân được các đội, bot cho phép bạn tăng mức độ khó cho người chơi một cách suôn sẻ. Và loại bỏ những trận thua thường xuyên trước những người chơi có kỹ năng tốt hơn nhiều. Chế độ huấn luyện bot trong World of Tanks và Hearthstone là những ví dụ điển hình.


  • Khởi động một dự án hoặc mở các khu vực trò chơi mới

    PUBG Mobile đã sử dụng một thủ thuật như vậy khi ra mắt. Khi không thể tập hợp các đội 100 người, các bot đã lao vào trận chiến. Chế độ 128 người chơi của Battlefield 2042 sử dụng bot với tối đa 64 đối thủ. Khi máy chủ bao phủ một lãnh thổ rộng lớn với các múi giờ khác nhau, các bot có thể xử lý quá trình rút tiền trực tuyến cho các vùng xa xôi. Ví dụ: khi một máy chủ bao gồm Châu Âu và Châu Á.


  • Chế độ đào tạo

    Nó thường cần thiết trong các trò chơi đã được phát hành trong một thời gian dài và trong đó có rất nhiều người chơi chuyên nghiệp, thách thức để đấu lại mà không có sự chuẩn bị tốt. Ngoài ra, những trò chơi như vậy không phải lúc nào cũng tách biệt người mới bắt đầu và người chơi chuyên nghiệp trong một người mai mối, và chơi với bot gần như trở thành cách duy nhất để đạt được kỹ năng. Một ví dụ điển hình ở đây là Escape from Tarkov. Trong khi chơi với bot, bạn sẽ không thể hoàn thành nhiệm vụ, nhưng đồng thời, bạn sẽ không bị mất trang bị, học cấp độ và thực hành kết hợp trang bị và kỹ năng bắn súng.


Theo quan điểm phát triển, những trò chơi như vậy cần có khả năng tinh chỉnh độ khó của AI và gỡ lỗi logic ra quyết định của các bot. AI tự hoạt động trên máy chủ trò chơi. Nhóm phát triển thực hiện hành vi của bot càng nhiều càng tốt tương tự như hành vi của một người biết cách chơi tốt. Ít nhất thì bot cũng cố gắng giống như những người chơi như vậy 😁


Trò chơi PVE

Trong chu kỳ chính của các trò chơi này, sự tương tác của người chơi là với môi trường và AI (người chơi so với môi trường). Đây có thể là cả trò chơi ngoại tuyến chơi đơn thuần túy (Witcher 3) và PVE trực tuyến (Genshin Impact), cũng như các sự kiện và chế độ đặc biệt trong trò chơi PVP (Mirny-13 cho Halloween trong World of Tanks). Trong những trò chơi như vậy, AI không có mục tiêu đánh bại người chơi bằng bất cứ giá nào. Thậm chí ngược lại. Một nhà thiết kế game xuất sắc đã nói: "Mục tiêu chính của AI là từ bỏ đẹp đẽ." Để một người chơi có thể có được những cảm xúc tích cực từ chiến thắng, trong trường hợp này, AI là một trong những yếu tố tạo nên sự phức tạp của trò chơi.


Cân bằng giữa số lượng kẻ thù, "độ dày" của chúng và khả năng chơi, bạn có thể tạo ra mức độ phức tạp và hứng thú phù hợp cho một người. Ngoài ra, tùy thuộc vào trò chơi, tầm quan trọng của hành vi logic trực quan của AI bot sẽ tăng hoặc giảm. Trong các trò chơi như Genshin Impact, bot chỉ là bia đỡ đạn và người chơi không phải lúc nào cũng chú ý đến cách chúng hành xử hợp lý.


Một lựa chọn khác khi sử dụng bot là dành cho các đồng minh và khả năng của người chơi đơn giản. Ví dụ, mob trong DOTA 2 khá thô sơ và chỉ có một mục tiêu - tiến lên và tấn công kẻ thù. Khi trò chơi ở chế độ chơi đơn và ngoại tuyến, AI thường hoạt động cục bộ nhất đối với người chơi trong máy khách. Trong trường hợp các trò chơi như World of Tanks, chế độ AI và PVE hoạt động trên máy chủ. Nó là cần thiết vì trò chơi trực tuyến, và máy chủ kiểm soát tất cả các hành động. Nó giới hạn tài nguyên CPU và RAM mà AI có thể sử dụng.


Một trong những nhiệm vụ quan trọng trong việc phát triển trí tuệ nhân tạo đó là khả năng tạo ra các kịch bản hành vi hấp dẫn cho bot. Ví dụ, người chơi phải đến vị trí, bảo vệ nó một thời gian, và sau khi nhận được quân tiếp viện, hãy tấn công và đánh bại tất cả kẻ thù. Kịch bản trò chơi AI có thể bao gồm một số phần. Trong phần đầu tiên, bot còn yếu, giúp người chơi có thể nhanh chóng đến được vị trí mong muốn. Sau đó, các bot tấn công người chơi trở nên mạnh hơn và bắt đầu sử dụng các chiến thuật ngăn người chơi tấn công trước thời hạn. Sau thời điểm X, các bot mắc một số lỗi, điều này cho phép chúng có thể nhìn thấy một cách trực quan, mà không làm giảm độ phức tạp, mang lại lợi thế cho người chơi. Sau khi nhận ra điều này, họ sẽ tấn công và có thể giành chiến thắng.


Một công cụ giúp phát triển trò chơi

Ngoài lối chơi, trí tuệ nhân tạo hỗ trợ phát triển trò chơi trong một số lĩnh vực:


  • Thiết kế và kiểm tra cấp độ - Ví dụ: bot có thể đi bộ hoặc lái xe trên toàn bộ cấp độ và do đó tiết lộ các khu vực không thể vượt qua, kẹt xe và các sắc thái khác trong thiết kế hình học cấp độ.


  • Kiểm tra cân bằng cấp độ - Nếu bạn chiến đấu với các bot với nhau, thì bằng cách thu thập số liệu thống kê, bạn có thể hiểu những thay đổi cân bằng cấp độ mới tốt như thế nào. Một điều kiện thiết yếu cho một bài kiểm tra như vậy là kỹ năng của bot. Để có được số liệu thống kê phù hợp nhất, các bot nên chơi ở trình độ của người chơi trung bình. Việc không cần đến một đội lớn người kiểm tra trình độ giúp tăng tốc đáng kể quá trình đánh bóng cân bằng.


  • Thử nghiệm các vật phẩm và kỹ năng mới - Nhà phát triển có thể sử dụng Bots làm đối thủ thử nghiệm khi tạo thiết bị, vật phẩm mới, v.v. trong trò chơi. Ví dụ: bạn có thể thêm bot vào bản đồ khi giới thiệu một khẩu súng trường mới và kiểm tra xem nó thực hiện nhiệm vụ tốt như thế nào.


  • Kiểm tra chức năng và tải - AI giúp kiểm tra các thành phần trò chơi khác nhau và thậm chí kiểm tra chính nó 😀. Ví dụ: bạn có thể tạo một kịch bản trong đó một con bot từ mỗi loại vũ khí sẽ bắn vào tất cả các loại bề mặt và thu thập số liệu thống kê về bề mặt nào, cách nó vượt qua và liệu sát thương có gây ra cho kẻ thù phía sau bề mặt hay không. Bạn có thể tải thử nghiệm máy khách. Gửi bot đi dạo quanh bản đồ và xem liệu có tụt FPS hay thậm chí toàn bộ trò chơi hay không. Và đối với máy chủ, bạn có thể thực hiện kiểm tra tải và do đó kiểm tra xem máy chủ sẽ hoạt động như thế nào trong thời gian tải cao điểm “không mong muốn”.


Cách AI hoạt động trong trò chơi

Chúng tôi đã xem xét cách trò chơi AI giúp phát triển trò chơi và bây giờ chúng tôi sẽ xem xét cách thức hoạt động của nó và những cách tiếp cận nào được sử dụng để phát triển trò chơi.


AI hoạt động theo chu trình: Nhận thức >> Suy nghĩ >> Hành động để đạt được mục tiêu. Bất cứ khi nào thông tin mới về môi trường xuất hiện, không thể đưa ra quyết định, hoặc việc thực hiện hành động được hoàn thành / bị gián đoạn, AI sẽ bước vào một vòng mới của chu trình Sense >> Think >> Act .

Hãy xem xét từng bước chính trong chu trình hành động của AI.


Thu thập thông tin (Sense)

Bước đầu tiên. AI (tác nhân hoặc bot) thu thập thông tin về môi trường để đưa ra bất kỳ quyết định nào. Ví dụ, nó có thể là thông tin về đối thủ và đồng minh. Vị trí của họ, tình trạng, thiết bị, v.v.


Ra quyết định (Suy nghĩ)

Bước tiếp theo là phần phức tạp và tốn nhiều tài nguyên nhất của AI. Vì tất cả thông tin được thu thập bởi tác nhân AI đều được xử lý và phân tích ở giai đoạn này. Tùy thuộc vào nguyên tắc ra quyết định tự chọn, độ phức tạp của các phép tính và độ chính xác của kết quả sẽ tăng lên. Xem xét các cách tiếp cận chính để ra quyết định:


Cây Quyết định - Nói đùa, bạn có thể gọi nó là sự phát triển theo định hướng "nếu". Cách dễ nhất để xây dựng AI là nó tạo ra nhiều lần kiểm tra "nếu-thì". Nó cũng có thể được gọi là một phương pháp phản ứng tức thời với các sự kiện bên ngoài. Từ các lần kiểm tra như vậy, một cây được tạo ra thông qua các nút mà tác nhân AI đi qua cho đến khi nó tìm thấy một nút trong đó sẽ có một hành động. Thông thường, các bước thu thập và phân tích thông tin được kết hợp thành một khối và thường là một điều kiện kiểm tra "nếu". Trong cách tiếp cận này, nếu kết quả kiểm tra là "Sai", thì cả quá trình chuyển đổi sang lần kiểm tra tiếp theo và việc thực hiện hành động đều có thể thực hiện được.



Máy trạng thái hữu hạn - Một trường hợp khi tác nhân AI ở một trong các trạng thái có thể xảy ra và có thông tin về trạng thái nào nó có thể đi. Ví dụ, bot đang ở trạng thái tuần tra. Anh ta có thể đi vào trạng thái tấn công của đối phương hoặc rút lui khỏi trạng thái này. Việc lựa chọn trạng thái nào có thể phụ thuộc vào số điểm trúng đích của bot và tỷ lệ đồng minh / kẻ thù trong bán kính X mét. Số lượng trạng thái và điều kiện chuyển đổi không bị giới hạn. Trong mỗi chu kỳ cập nhật trạng thái mới, thường mỗi khung hình (đôi khi, để tối ưu hóa việc tiêu thụ tài nguyên, các điều kiện chuyển đổi được tính toán lại ít thường xuyên hơn), các điều kiện chuyển đổi cho mỗi trạng thái được kiểm tra. Và nếu các điều kiện được đáp ứng, quá trình chuyển đổi sẽ được kích hoạt. Ưu điểm của cách tiếp cận này là chúng ta có một logic chuyển đổi trạng thái rõ ràng.



Hệ thống Tiện ích - Một hệ thống dựa trên việc đánh giá mức độ hữu ích của một hành động hoặc quá trình chuyển đổi cụ thể. Logic là tác nhân AI có một tập hợp các hành động. Anh ta chọn cái nào để thực hiện tùy thuộc vào tình hình hiện tại trên chiến trường, vào các hệ số ưu tiên vốn có để thực hiện một hành động hoặc chuyển đổi từ trạng thái này sang trạng thái khác. Ví dụ, một con bot gặp kẻ thù khi đang tuần tra khu vực. Điều quan trọng hơn đối với bot này là không tấn công kẻ thù mà là ẩn nấp, báo động và kêu gọi sự giúp đỡ từ các bot khác. Trong trường hợp này, hệ số tránh va chạm trực tiếp của anh ta sẽ cao hơn mong muốn tấn công đối phương. Và nếu bot không có lợi thế quan trọng trước kẻ thù, nó sẽ không chọn nhánh hành vi liên quan đến cuộc tấn công.



Behavior Trees - Đây là một tiện ích bổ sung tiện lợi cho các máy trạng thái. Nó cho phép bạn thực hiện quản lý trạng thái cho chính các máy trạng thái. Do đó, chúng ta có thể tạo một cây các điều kiện mà chúng ta sẽ chuyển đổi các máy trạng thái cho tác nhân AI.





  • Hành vi hướng mục tiêu - Đó là một khái niệm cho phép bot thực hiện, tập trung vào vai trò và mục tiêu phù hợp nhất cho tác nhân AI và tùy thuộc vào điều này, chọn Cây hành vi nào để hoạt động. Cây Hành vi đó xác định các điều kiện để bot chuyển đổi sang các trạng thái khác nhau và thực hiện các hành động.


    Trong trường hợp này, bot sử dụng logic mờ dựa trên việc tính toán hệ số quan trọng và hữu ích của một vai trò cụ thể. Ví dụ, một vai trò cho bot với vũ khí hoặc lá chắn. Hệ số để trở thành "xe tăng" sẽ cao hơn so với vai trò trinh sát. Tiếp theo, sau khi chọn một vai trò, có một tính toán xem mục tiêu nào bây giờ là hữu ích nhất. Nếu có một pháp sư đang chuẩn bị bùa chú bên cạnh chúng ta, thì mục tiêu tốt nhất sẽ là bảo vệ anh ta bằng mọi giá. Tiếp theo, dựa trên mục tiêu hiện tại, một tập hợp Cây hành vi được chọn, cho phép bot thực hiện hành vi để hoàn thành mục tiêu.


    Cách tiếp cận này cho phép bạn tạo ra các bot không tuân theo lệnh mà chọn một hoặc một hành động khác dựa trên khả năng của chúng, tình hình chiến đấu hiện tại và mức độ ưu tiên của nhà phát triển. Chúng tôi sử dụng cách tiếp cận này trong World of Tanks khi phát triển AI.


Hành động (Act) - Bước cuối cùng. Đó là việc thực hiện nhiệm vụ. Thông thường, điều này bao gồm tìm đường và di chuyển dọc theo đường, thực hiện chụp, ẩn nấp, v.v.


Vậy, một nhà phát triển AI làm gì? Nhiệm vụ chính là thực hiện chu trình Sense >> Think >> Act. Nhà phát triển AI hợp tác chặt chẽ với các thành viên khác trong nhóm vì việc triển khai và tối ưu hóa các thuật toán hành vi AI là công việc chung của lập trình viên, nhà thiết kế trò chơi và QA. Chúng ta hãy xem xét lại chu trình AI nhưng theo quan điểm của nhà phát triển.


Thu thập thông tin (Sense) - trong phần này của chu trình, lập trình viên AI có nhiệm vụ thu thập và lưu trữ thông tin về tình hình trên chiến trường. Cùng với nhà thiết kế trò chơi, nhà phát triển xác định thông tin nào được thu thập, tần suất cập nhật và cách phân phối thông tin giữa các nhân viên AI của cùng một đội trong trường hợp trò chơi đồng đội.


Trong các trò chơi đồng đội, một số dữ liệu này là chung cho tất cả các tác nhân AI và các bot có thể trao đổi thông tin này, cho phép các bot AI có tính hiện thực cao hơn. Thông thường, việc thu thập thông tin không tiêu tốn nhiều tài nguyên, ngoại trừ những trường hợp phôi tia thường xuyên, mà nhà phát triển nên tối ưu hóa.


Ngoài ra, một số thông tin có thể là tĩnh. Ví dụ, trong World of Tanks, chúng tôi đã tạo một số lớp dữ liệu trên bản đồ. Một lớp chịu trách nhiệm chụp từ điểm này đến điểm khác trên toàn bản đồ. Nó cho phép bạn hiểu mức độ bảo vệ của một vị trí hoặc những khu vực nào trên bản đồ có thể được kiểm soát từ vị trí này.


Lớp còn lại cho bạn biết mức độ ẩn của khu vực khỏi bị phát hiện, điều này cho phép bạn biết liệu những bụi cây đó có phù hợp với xe tăng trinh sát hay không. Lớp còn lại là NavMesh , cho phép các bot di chuyển xung quanh bản đồ. Nó chỉ là một phần của dữ liệu được tạo trước và thêm vào đó, chúng tôi cũng có thể tính toán trước. Ví dụ, chúng ta có thể lưu trữ không chỉ một bản đồ các nơi trú ẩn mà còn chống lại những hướng mà chúng bảo vệ.


Đối với bản đồ lớn, chúng ta có thể tính toán trước các đường đi dài từ một điểm ưa thích trên bản đồ đến một điểm khác. Đồng thời, bạn có thể tính toán mức độ tốt của đường đi về độ dài, độ phức tạp của địa hình, v.v. Trong trận chiến, bạn đã có thể chồng thông tin động về kẻ thù tiềm năng trên đường đi. Như vậy, bạn có thể tiết kiệm rất nhiều tài nguyên CPU và RAM khi chọn đường dẫn. Nó là một phần khá quan trọng và thú vị trong quá trình phát triển AI. Ngoài lợi ích rõ ràng từ việc tối ưu hóa và thêm các tính năng mới vào bot, nhà phát triển còn có được một lĩnh vực tuyệt vời để phát triển, vì các lớp như vậy cần được phát minh và các thuật toán cần được cải thiện và điều chỉnh cho dự án của họ.


Ra quyết định (Suy nghĩ) - Nhà phát triển thường không tự thực hiện logic của hành vi bot. Anh ấy làm điều này cùng với nhà thiết kế trò chơi.


Ngoài ra, nhà phát triển triển khai một hệ thống chịu trách nhiệm thực hiện Cây hành vi (chúng ta có thể tạm gọi là công cụ AI). Cùng với nhà thiết kế trò chơi, họ thiết kế một API để làm việc với Cây hành vi và sau đó nhà phát triển triển khai logic cho API này. Ví dụ: các phương pháp cho phép bạn tính toán xác suất bắn trúng kẻ thù, sức hấp dẫn của nơi trú ẩn hoặc đánh giá mối đe dọa trong một khu vực. Đây là phần sử dụng nhiều tài nguyên nhất của công việc AI.


Một trong những lựa chọn để giải quyết vấn đề về hiệu suất và tài nguyên là phát triển các thuật toán hiệu quả và sử dụng hiệu quả dữ liệu được tính toán tĩnh. Dựa trên chúng, AI quyết định mức độ tối ưu của các hành động cụ thể. Đồng thời, hệ thống ra quyết định phải đủ linh hoạt và ổn định vì không phải lúc nào cũng có thể đảm bảo rằng bot có tất cả các hệ thống con có sẵn. Hoặc mức độ thích ứng của họ với vai trò của AI. Và đôi khi, nền tảng AI được xây dựng tốt giúp cô ấy sống sót sau thiệt hại một phần.


Chúng tôi đã có một trường hợp hài hước trong World of Tanks khi chúng tôi quyết định thử sử dụng logic của một chiếc xe tăng thông thường cho pháo binh, được điều chỉnh cho khả năng bắn giống như pháo binh. Chúng tôi đã chơi một trận đấu thường xuyên, trong đó QA của chúng tôi quyết định chứng minh rằng anh ấy chơi tốt hơn bot (thực tế là vậy, nhưng không phải mọi thứ đều đơn giản như vậy).


Anh ta có thể vượt qua các bot, đến căn cứ của đối phương và quyết định tiêu diệt tất cả pháo binh của đối phương, ba bot. Anh ta phớt lờ rằng anh ta đã bị phát hiện bởi xe địch cách căn cứ không xa. Khi lọt vào tầm ngắm của pháo binh, anh lập tức vào quan sát trận địa ở chế độ camera tự do. Hóa ra là các bot, khi nhìn thấy sự tiếp cận của một kẻ thù nguy hiểm, đã quyết định bắn vào anh ta, đã tính toán trước nơi mà anh ta có khả năng xuất hiện nhất. Và ngay sau khi anh hùng của chúng ta xuất hiện trong tầm ngắm, các bot đã bắn vào anh ta. Và mọi thứ sẽ ổn, nhưng cả ba pháo binh đã làm điều này cùng một lúc. Và chúng tôi đã phát hiện ra một trò chơi phối hợp tốt đến không ngờ giữa các bot trên pháo, mặc dù nó vẫn chưa được triển khai!



Hành động (Act) - Trong phần này, nhà phát triển thực hiện các cơ chế cho phép tác nhân AI thực thi các hướng dẫn sau khi đưa ra quyết định. Triển khai các mô-đun chịu trách nhiệm điều hướng (ví dụ: điều chỉnh A * với các tính năng của trò chơi), bắn súng, v.v. Ví dụ: bạn có thể sử dụng thuật toán A * trong sản phẩm của mình. Nhưng thông thường nhất, bạn sẽ có các điều kiện bổ sung, chẳng hạn như các vách đá. Nếu không được tối ưu hóa, thì con đường cho một đơn vị hạng nặng có thể được xây dựng quá gần vách đá, dẫn đến việc nó rơi xuống. Trong trường hợp này, cần phải đưa thêm các hệ số tiếp cận vách đá hoặc các dạng địa hình bất tiện khác và thực hiện làm phẳng tuyến đường. Nếu không, các bot sẽ đi trên "cái thang". Khu vực này rất gần với lối chơi, vì nó sử dụng cơ chế của mình để hoàn thành nhiệm vụ.


Công cụ Nhà phát triển AI, ngoài việc thực hiện chu trình (Sense >> Think >> Act), còn tạo ra các công cụ cho chính mình, nhà thiết kế trò chơi và QA. Đôi khi, để thực hiện một thợ máy cụ thể, sẽ dễ dàng hơn khi tạo một công cụ mà bạn có thể cấu hình và sử dụng chức năng và chỉ sau đó tiến hành trực tiếp để thực hiện chính nhiệm vụ đó. Một nhà thiết kế trò chơi cần có khả năng phân tích logic và trình tự các quyết định của AI. Vì những mục đích này, chúng tôi tại World of Tanks đã tạo ra các công cụ cho phép bạn ghi lại tất cả các hành động của bot trong trận chiến và sau đó tạo các bản phát lại hình ảnh hóa các bước của bot, trình tự các quyết định được đưa ra và dữ liệu dựa trên các quyết định này. thực hiện.


Các nhà phát triển cũng đang tạo ra các hệ thống cho phép AI giúp phát triển trò chơi. Bạn có thể tạo một bộ công cụ cho các nhà thiết kế cấp độ sẽ cho phép bạn nhanh chóng sắp xếp các bot theo cấp độ và đặt mục tiêu kịch bản cho chúng.


Ví dụ, đi qua toàn bộ bản đồ và kiểm tra xem mọi thứ có ổn không với khả năng vượt qua. Đối với QA, thường cần tạo các công cụ cho phép bạn kiểm tra các hệ thống con riêng lẻ của trò chơi bằng cách sử dụng bot.


Trong World of Tanks, chúng tôi sử dụng AI để tùy chỉnh cách AI chơi trên bản đồ. Để làm điều này, chúng tôi đã tạo một công cụ thu thập số liệu thống kê. Tiếp theo, chúng tôi thay đổi bản đồ, chẳng hạn như các khu vực chiến lược cho bot trông như thế nào và vị trí các điểm chuyển giao giữa các khu vực này. Tiếp theo, 1000-3000 trận chiến được khởi chạy trên máy chủ. Sau đó, chúng tôi xem xét mô hình trận chiến bằng cách sử dụng số liệu thống kê và bản đồ nhiệt. Nhà thiết kế trò chơi điều chỉnh cài đặt bản đồ và lặp lại chúng trong một vòng tròn dựa trên dữ liệu này. Đồng thời, sử dụng đủ dung lượng máy chủ, bạn có thể lấy số liệu thống kê như vậy cho ban đêm của các bot và phân tích và thực hiện các thay đổi vào buổi sáng.



Nó hoạt động như thế nào trong thực tế

Hãy sử dụng một ví dụ thực tế từ World of Tanks để xem xét toàn bộ chu trình tạo chức năng mới bằng cách sử dụng AI. Chúng tôi cũng sẽ có thể quan sát cách một lập trình viên, nhà thiết kế trò chơi và QA tương tác với nhau.


Hãy bắt đầu với nhiệm vụ này: chúng ta cần các bot có thể đâm người chơi và phát nổ, gây sát thương cho anh ta và một bán kính nhỏ xung quanh anh ta. Hãy gọi chúng là "Nhím." Những "Nhím" này sẽ đi nhanh hơn người chơi trong các điều kiện bổ sung. Chúng sẽ không bắn, sẽ có hình dạng tương tự như một quả bóng, có thể nổ tung chỉ bằng một phát bắn, chỉ được đâm vào người chơi và đi theo một nhóm X đơn vị. Có vẻ như, điều gì có thể dễ dàng hơn?


Sau khi nhận được dữ liệu này từ nhà thiết kế trò chơi, nhà phát triển đã ghi nhớ phép toán và cách tính toán dẫn đến chuyển động của người chơi và cùng với nhà thiết kế trò chơi tạo ra một bộ logic Behavior Tree hướng bot vào kẻ thù và khiến nó lao vào. Một tập hợp các phương pháp cụ thể đã được thực hiện một cách có trách nhiệm đối với việc phá hoại và phá hoại khu vực của phần lập trình viên. Để kiểm tra, họ đã tạo một tập lệnh đặc biệt, nơi họ đặt một bot ruff và một bot thông thường.


Chiếc đầu tiên đâm thành công chiếc thứ hai, và tất cả đều ổn. Chúng tôi quyết định đưa nó vào thử nghiệm trong trò chơi trong đội và thu thập số liệu thống kê. Và nó cho thấy rằng các bot trên bản đồ thực không đến được với người chơi. Hóa ra là các con bot nhận sát thương vì tốc độ cao khi nảy lên khi va chạm và khi rơi xuống. Sau một vài lần rơi như vậy, chúng phát nổ và gây ra thiệt hại cho các đường viền xung quanh. Đổi lại, nó tạo ra một phản ứng dây chuyền. Tôi đã sửa số lượng bot hoạt động và thêm một ổ đĩa phân tán logic. Tôi cũng đã điều chỉnh kịch bản thử nghiệm dựa trên bản đồ thực với những ngọn đồi.


Sau khi chạy giai đoạn thử nghiệm thứ hai, chúng tôi nhận ra rằng các bot rất "lịch sự". Vấn đề là họ chỉ đâm các cầu thủ theo đường di chuyển, tức là đối đầu. Nhưng nếu họ tiếp cận từ phía sau, họ bắt đầu đi vòng quanh người chơi theo một vòng cung lớn. Sau khi thảo luận về các tùy chọn với nhà thiết kế trò chơi, lập trình viên đã thay đổi công thức để chọn quỹ đạo đâm. Sau khi tiến hành một loạt thử nghiệm mới, QA đã đưa ra phản hồi rằng các bot quá nhanh và chính xác, và người chơi không có cơ hội. Do đó, tôi đã quay lại công thức và sửa nó để đôi khi nó đưa ra lỗi và sửa đổi hành vi của cách tiếp cận vòng kết nối mới sau khi bot bỏ sót người chơi.


Quỹ đạo quay và quay lại của bot tăng lên, cho phép người chơi tải lại và bắn lại chúng. Nó tạo ra những khoảnh khắc chơi trò chơi thú vị khi bot đôi khi bay khỏi bản đồ hoặc đôi khi bỏ lỡ và cố gắng bắn trúng chúng trong những giây cuối cùng. Đôi khi họ bẫy thành công người chơi và tấn công từ nhiều hướng khác nhau. QA đánh giá cao trải nghiệm chơi trò chơi khi gặp phải những đường cong và chức năng này đã được đưa vào bản phát hành trình phát.


Từ ví dụ này, bạn có thể thấy rằng trong suốt quá trình phát triển chức năng, lập trình viên, nhà thiết kế trò chơi và QA liên tục trao đổi với nhau, điều này làm cho việc tìm ra bất kỳ khu vực vấn đề nào của tính năng và khắc phục chúng trước khi đến tay người chơi hiệu quả hơn. Ngoài ra, lập trình viên và nhà thiết kế trò chơi đã làm việc cùng nhau để phát triển thuật toán đâm người chơi, trong khi QA đưa ra phản hồi về mức độ thú vị khi chơi với những con bot như vậy. Đó là một ví dụ thực tế từ Mirny-13 ở chế độ PVE của nhóm chúng tôi và những người tạo ra loạt phim Silent Hill.


Cần những gì để trở thành một nhà phát triển AI


Đầu tiên, hãy yêu thích các trò chơi ! Nghiêm túc mà nói, nếu bạn không yêu thích trò chơi, tại sao thậm chí còn làm điều đó?

Thứ hai - điều cần thiết là phải chơi sản phẩm của bạn thật nhiều vì chỉ khi đặt mình vào vị trí của người chơi, bạn mới hiểu được cách anh ta chơi và cách chơi của các bot.


Nếu không, bạn sẽ phải "viết mã" các nhiệm vụ của một nhà thiết kế trò chơi và bạn sẽ không thể trở thành một nhà phát triển AI theo cách đó. Cuối cùng là mong muốn hiểu tại sao một cái gì đó hoạt động theo cách này hoặc cách kia. AI cho các trò chơi phức tạp không sử dụng logic rõ ràng và kết quả của chu trình Sense >> Think >> Act không phải lúc nào cũng có thể dự đoán và hiểu được 100%. Không hiếm khi nhà phát triển, cùng với nhà thiết kế trò chơi và QA phải phân tích dữ liệu về các quyết định của bot để hiểu liệu AI có hoạt động chính xác hay không. Và không cần Kỹ năng cứng và Kỹ năng mềm.


Kỹ năng cứng (đây là một tập hợp các kiến ​​thức kỹ thuật). Và đầu tiên trong danh sách là kiến ​​thức về ngôn ngữ lập trình kịch bản, thường là logic trò chơi được viết. Ví dụ, trong World of Tanks, nó là Python và đối với Unity, nó sẽ là C #. Mục thiết yếu thứ hai sẽ là C ++. Nếu không có nó, nó sẽ không dễ dàng vì hầu hết các tối ưu hóa được thực hiện trên nó.


Bây giờ là bước tiếp theo.


Hiểu biết tốt về cấu trúc dữ liệu và thuật toán. Việc phát triển AI liên quan đến rất nhiều tính toán và lựa chọn chiến lược tốt nhất để lưu trữ và xử lý dữ liệu có thể tiết kiệm rất nhiều thời gian và tài nguyên CPU và bộ nhớ. Một kiến ​​thức về toán trình độ đại học năm thứ 2 cũng sẽ rất cần thiết. Tất nhiên, sẽ rất tốt nếu bạn biết các cách tiếp cận cơ bản trong phát triển AI (chu trình AI và các cách tiếp cận trong quá trình ra quyết định).


Kỹ năng mềm (kỹ năng cho phép bạn làm việc theo nhóm và tham gia vào các cuộc đối thoại mang tính xây dựng). Có một số Kỹ năng mềm có giá trị khá lớn, nhưng trong quá trình phát triển AI, tôi muốn chỉ ra một:


Làm việc theo nhóm!


Nhà thiết kế trò chơi, lập trình viên và QA làm việc rất chặt chẽ với nhau và thường không thể hoàn thành một nhiệm vụ hoặc giải quyết một vấn đề mà không kết hợp kinh nghiệm và kiến ​​thức của họ. Đó là lý do tại sao các kỹ năng như lắng nghe người khác, thảo luận hơn là tranh luận và đặt câu hỏi là điều cơ bản. Đôi khi, tốt hơn hết bạn nên hỏi một nhà thiết kế trò chơi hoặc QA về một sắc thái cụ thể trong trò chơi hoặc cơ chế thay vì tự mình phát minh và làm điều đó và sau đó làm lại một cách đau đớn trong một thời gian dài. Công việc tốt của AI trong game luôn là công lao của cả đội chứ không chỉ một chuyên gia!


Như bạn có thể thấy, tạo AI cho trò chơi rất khó, nhưng nó rất thú vị và thú vị! Trong số những thứ khác, đây là một lĩnh vực tốt để phát triển cả Kỹ năng cứng và Kỹ năng mềm.


Hãy tạo ra những trò chơi thú vị và khác biệt, và AI sẽ giúp chúng ta.