Thứ Hai, 11 tháng 11, 2013

AI 1.2 - Xác suất ngẫu nhiên trong AI


  1.2 - Xác suất ngẫu nhiên trong AI

Giả sử rằng kẻ địch thực vật trong một trò chơi FPS, lúc nào cũng giết chết người chơi bằng một cú bắn, một địch thủ trong một trò đua xe lúc nào cũng chọn cho mình đường đua tốt nhất, và vượt mặt không có bất kỳ sự va chạm nào với bất kỳ chướng ngại nào. Chẳng hạn như ở một mức độ quá thông minh sẽ làm cho anh ta khó chơi đến nỗi hầu như không thể nào có thể thắng nỗi. Mặc khác, tưởng tượng một kẻ địch AI lúc nào cũng chọn cùng một con đường để đi, hoặc là cố gắng để trốn khỏi người chơi. AI điều khiển những hành động của những thực thể cùng một cách, mỗi lần người chơi gặp chúng, như thế sẽ làm cho trò chơi dễ đoán ra và dễ dàng thắng.

http://halo4nation.com/wp-content/uploads/2012/06/Screen-shot-2012-06-04-at-1.36.32-PM.png
Enemy AI trong game Halo 4

Cả hai tình huống trước đó hiển nhiên ảnh hưởng đến mặt thú vị của game, và làm cho người chơi cảm thấy game không có thách thức hoặc không còn công bằng nữa. Một cách để sửa cái kiểu AI hoàn hảo và AI ngốc nghếch này, chính là gây ra vài lỗi trong sự thông minh của chúng. Trong game, tính ngẫu nhiên và xác suất được áp dụng trong việc đưa ra quyết định lúc tiến hành các phép toán của AI. Dưới đây là các tình huống chính khi chúng ta muốn để cho các thực thể AI thay đổi một quyết định ngẫu nhiên :

- Vô tình : tình huống này đôi khi trong một game trinh thám, hoặc có lẽ một game NPC, mà có thể cần đưa ra một quyết định ngẫu nhiên, chỉ vì nó không có đủ thông tin để đưa ra một quyết định hoàn hảo, và/hoặc nó thật sự không có vấn đề gì với quyết định đưa ra. Đơn giản chỉ đưa ra quyết định một cách ngẫu nhiên và hi vọng vào việc có kết quả tốt nhất, là cách để bước vào trong một tình huống như thế này.


http://img1.lln.crunchyroll.com/i/spire3/d3b2d143aaf071ab62ab6c46e74a0c311281668978_full.jpg
Ảnh chụp từ game Personal 4
- Cố ý : tình huống này dành cho dạng AI hoàn hảoAI ngốc nghếch. Như chúng ta đã nói đến trong các ví dụ trước, chúng ta sẽ cần thêm vài tính ngẫu nhiên một cách có chủ ý, chỉ để làm cho chúng thêm hiện thực, và cũng để phù hợp mức độ khó với trình độ người chơi.

http://media.pcgamer.com/files/2012/05/Diablo-3-Lost-Head.jpg
Trò chuyện với NPC để thực hiện nhiệm vụ trong game Diablo III
Chẳng hạn tính ngẫu nhiên và xác suất có thể được dùng cho những thứ chẳng hạn như khả năng bấm nút, cộng hoặc trừ tính thiệt hại ngẫu nhiên ở trên các thiệt hại cơ bản. Việc dùng ngẫu nhiên và xác suất, chúng ta có thể thêm vào một chiều hướng không chắc chắn thực tế cho game của chúng ta và làm cho hệ thống AI có phần khó đoán.

Chúng ta cũng có thể dùng xác suất để định nghĩa các lớp nhân vật AI khác nhau. Chúng ta nhìn đến những nhân vật anh hùng trong Defense of the Ancient (DotA), là một dạng game chiến thuật RTS (real-time stategy) nổi tiếng dạng Warcraft III. Có ba kiểu hero dựa trên ba thuộc tính chính : sức mạnh (Strength), thông minh (Intelligence), và nhanh nhẹn (Agility). Các nhân vật thuộc lớp Strength là các hero mạnh về tính chất vật lý, trong khi các nhân vật Intelligence phải giỏi về cách điều khiển cấc bùa phép và ma thuật. Agility định nghĩa sự lanh lẹ của một hero để tránh những cuộc tấn công và tấn công một cách nhanh nhẹn. Một AI hero Strength sẽ có khả năng để gây nhiều sát thương trong các cuộc cận chiến, trong khi hero Intelligence sẽ có nhiều cơ hội để gây sát thương cao hơn bằng việc dùng bùa và phép. Cẩn thận trong việc cân bằng tính ngẫu nhiên và xác suất giữa các lớp và các anh hùng khác nhau, sẽ làm cho game có nhiều thách thức hơn, và làm cho DotA thú vị để chơi.

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9ouo6fROhgKlIaAWWMqxs7K1MGjjXDS8OImVjrqmZ09VPIoy92VNDq8lfLMhfBIFq_z38yoAMtiOPFDJaMswPrQjGgpuGS6uij_MNAuxW8fp5DC_bBKC82L_O6ShMUSfHr3zqGN_AgSY/s1600/6.75_Loadscreen.jpg
Loadscreen từ map DotA 6.75


Hệ thống cảm biến

Nhân vật AI của chúng ta cần biết về những việc quanh chúng ta, và thế giới họ đang tương tác đến, để đưa ra một quyết định riêng biệt. Chẳng hạn thông tin có thể là như sau :

- Vị trí của người chơi : thông tin này dùng để quyết định tấn công hoặc săn, hoặc tiếp tục tuần tra.
- Công trường và những vật thể gần đó : thông tin này được dùng để trốn hoặc ẩn núp.
- Máu của người chơi và của chính nhân vật AI : thông tin còn lại được dùng để quyết định có hay không rút lui hoặc tiến tới.
- Vị trí của những tài nguyên trên bản đồ ở game RTS : thông tin này được dùng để chiếm đóng và thu thập tài nguyên, cần cho việc xây dựng và tạo ra các đơn vị khác.

http://insertcredit.com/wp-content/uploads/2011/12/sc2.jpg
Ảnh chụp trong game chiến thuật hay nhất mọi thời đại Starcraft 2
Như bạn có thể thấy, nó có thể thay đổi nhiều, phụ thuộc vào hình thức của game chúng ta đang cố gắng xây dựng. Vì thế, làm sao để chúng ta thu thập thông tin đó ?


http://store.haynhucnhoi.com/data/2013/10/11/d61df2f03f6c4ae056388e7aa8adc928.gif
Hệ thống cảm biến của thiết bị game
Bỏ phiếu

Một phương thức để thu thập thông tin là việc bỏ phiếu. Chúng ta có thể đơn giản làm if/else hoặc chuyển đổi phương thức FixedUpdate nhân vật AI của chúng ta. Nhân vật AI chỉ là thăm dò thông tin chúng ta quan tâm đến thế giới game, làm những kiểm tra, và hành động dựa vào đó. Những cách thức bỏ phiếu hoạt động tuyệt vời, nếu không có nhiều thứ để kiểm tra. Tuy nhiên, vài nhân vật có thể không cần thăm dò tình trạng thế giới mỗi hệ thống. Những nhân vật khác có thể cần những tỷ lệ phiếu bầu khác nhau. Vì thế, thông thường trong những game lớn, hệ thống AI phức tạp hơn, chúng ta cần sắp xếp một cách thức điều khiển theo sự kiện bằng cách dùng một hệ thống thông điệp tổng thể.

Hệ thống thông điệp

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhILIq0PPLd-bvAvV-GBJkBrns546kzwDNQndWLtpF4IH8UY7d25UZ0ZJsV9fIxfqF3vm2uOf5qUwxPNw9_m92ZfNUrJxmuqz5_FKO6dRMn1WyXo5ksAVHcfOFKimlM-USv6RbU7YGA2p96/s1600/J1RG_130-1.pngAI đưa ra quyết định hồi đáp cho những sự kiện trong thế giới. Những sự kiện được kết nối giữa thực thể AI và người chơi, thế giới, hoặc những thực thể AI khác thông qua một hệ thống thông điệp. Chẳng hạn, khi người chơi tấn công một đơn vị kẻ địch từ một nhóm lính tuần tra, những đơn vị AI khác cần biết về tai nạn này, để mà chúng có thể bắt đầu tìm kiếm và tấn công người chơi. Nếu chúng ta dùng phương thức bỏ phiếu, những thực thể AI của chúng ta sẽ cần kiểm tra tình trạng của tất cả các thực thể AI khác, để biết về tai nạn này. Nhưng với một hệ thống thông điệp điều khiển theo sự kiện, chúng ta có thể bổ sung điều này vào một cách có thể quản lý và phát triển. Những nhân vật AI quan tâm một sự kiện riêng có thể được đăng ký như những thính giả. Những thực thể AI có thể tiếp tục để có những hành động thích hợp, hoặc thực hiện kiểm tra xa hơn.


Hệ thống điều khiển sự kiện không cung cấp máy móc nhanh hơn việc bỏ phiếu. Nhưng nó cung cấp một hệ thống kiểm tra thuận tiện, trung tâm, mà cảm nhận thế giới và thông tin cho các đặc vụ AI quan tâm, đỡ hơn mỗi cá nhân đặc vụ phải kiểm tra cùng một sự kiện trong mỗi hệ thống. Trong thực tế, cả hai việc bỏ phiếu và hệ thống thông điệp được dùng cùng với nhau hầu hết. Chẳng hạn, AI có thể bỏ phiếu để có nhiều thông tin khi nó nhận một sự kiện từ hệ thống thông điệp.

Không có nhận xét nào:

Đăng nhận xét