Showing posts with label Chương trình AI. Show all posts
Showing posts with label Chương trình AI. Show all posts

9/30/2014

AI 4 - Cài đặt Giác quan


  AI 4 - Cài đặt giác quan -

Đây là một chương ngắn về cách thực hiện hành vi AI sử dụng các khái niệm về một hệ thống cảm giác tương tự như những gì thực thể sống có. Như chúng ta đã thảo luận trước đó, một hệ thống nhân vật AI cần phải có nhận thức về môi trường, nhận thức các trường hợp trở ngại, nơi kẻ thù nó đang tìm kiếm, nếu đối phương có thể bị phát hiện trong tầm nhìn của người chơi, và những cái khác. Chất lượng trí tuệ nhân tạo của NPC của chúng ta hoàn toàn phụ thuộc vào thông tin mà nó có thể nhận được từ môi trường. Dựa trên thông tin đó, các nhân vật AI sẽ quyết định logic để thực hiện. Nếu không có đủ thông tin cho AI, nhân vật AI của chúng ta có thể có các hành vi kỳ lạ, chẳng hạn như việc lựa chọn địa điểm sai để hỗ trợ, ngủ, và vòng lặp hành động kỳ lạ, và không biết những gì để đưa ra quyết định thực hiện. Thử tìm kiếm "AI glitches" trên YouTube, và bạn sẽ tìm thấy một số hành vi hài hước của nhân vật AI ngay cả trong trò chơi AAA.

8/26/2014

AI 3.3 - Tính cách nhân vật



  3.3 - Tính cách nhân vật -

Chúng ta cũng có thể sử dụng xác suất khác nhau để tìm ra nét đặc sắc cho các nhân vật trong game. Hãy giả vờ như chúng ta đã thiết kế một bản kế hoạch cho một trò chơi quản lý dân số cho chính quyền địa phương. Chúng ta cần phải giải quyết và mô phỏng các vấn đề như thuế so với thu hút tài năng toàn cầu, nhập cư so với gắn kết xã hội, và như vậy. Chúng ta có ba lớp nhân vật trong bản kế hoạch của chúng ta, cụ thể là, công nhân, nhà khoa học và các chuyên gia.

7/25/2014

AI 3.2 - Định nghĩa xác suất



  3.2 - Định nghĩa Xác Suất -

Có rất nhiều cách để định nghĩa xác suất dựa trên các tình huống và ngữ cảnh. Thông thường khái niệm xác suất dùng để chỉ khả năng của một sự kiện xảy ra thành công. Xác suất của một sự kiện A xảy ra thường được viết như P (A). Để tính toán P (A), chúng ta cần phải biết số lần nó có thể xảy ra (n), và tổng số lần tất cả các sự kiện khác có thể có thể xảy ra (N).

7/03/2014

AI 3.1 - XÁC SUẤT NGẪU NHIÊN



  3.1 - Xác Suất Ngẫu Nhiên -

Trong phần bài viết AI 3.* này, chúng ta sẽ cùng tìm hiểu cách vận dụng xác suất vào game. Người làm game thường thêm các yếu tố xác suất hoặc các mẫu hội thoại vào các nhân vật AI, điều đó khiến hệ thống trí tuệ nhân tạo không thể đoán trước được giúp người chơi cảm thấy thích thú hơn hay có thêm những kinh nghiệm thử thách khác nhau.

4/29/2014

AI 2.3 - FSM FRAMEWORK



  2.3 - FSM FRAMEWORK - Khuôn mẫu FSM

Trong bài viết cuối của AI 2, chúng ta sẽ tìm hiểu về 2 FSM khác nhau đã có sẵn trong thư mục Scenes là AdvanceFSM và SimpleFSM để hiểu rõ hơn về cấu trúc cũng như sự khác biệt nhau.

3/09/2014

AI 2.2 - MÁY TRẠNG THÁI - FSM ĐƠN GIẢN


  2.2 - Máy trạng thái - FSM đơn giản

Bài viết này, chúng ta sẽ cùng nghiên cứu các phương thức hoạt động cũng như tính năng chiến đấu của các xe tăng AI trong scene SimpleFSM. Bạn có thể tìm thấy scene này trong source code đã cung cấp ở bài viết AI 2.1.

3/02/2014

AI 2.1 - MÁY TRẠNG THÁI - FINITE STATE MACHINE



  2.1 - Máy trạng thái - Finite State Machine

Trong chương này, chúng ta sẽ học cách sử dụng FSM trong Unity3D qua một trò xe tăng đơn giản. Chúng ta sẽ tìm hiểu code cùng các thành phần liên quan.

1/31/2014

AI 1.5 - VẬN ĐỘNG - LOCOMOTION


  1.5 - Vận động - Locomotion

Vận động - Locomotion

Các loài vật (bao gồm cả con người) đều có hệ thống cơ xương rất phức tạp (hệ thống vận động - locomotor system), giúp chúng ta có khả năng di chuyển cả cơ thể bằng việc sử dụng hệ thống cơ và xương. Chúng ta biết nơi để đặt chân khi trèo lên một cái thang, bậc thang, hoặc trên đất không bằng phẳng, và chúng ta biết cách giữ cơ thể thăng bằng để giữ ổn định tất cả những tư thế khác mà chúng ta muốn thực hiện. Chúng ta có thể làm tất cả những điều này nhờ vào xương, cơ, khớp, và các mô của chúng ta, một tập miêu tả toàn bộ hệ thống vận động của chúng ta (locomotor system). 

1/22/2014

AI 1.4 - CÂY HÀNH VI - BEHAVIOR TREES



  1.4 - Cây hành vi - Behavior Trees

Cây hành vi - Behavior Trees
Cây hành vi là các kỹ thuật dùng để thể hiện và điều khiển tính logic phía sau các nhân vật AI. Nó trở nên nổi tiếng đối với các trình ứng dụng trong các game AAA, chẳng hạn như Halo và Spore.

12/18/2013

AI 1.3 - BẦY, ĐÀN VÀ LŨ (PHẦN II)


  1.3 - Bầy, đàn và lũ ( Phần II )

Tìm đường A*

Có nhiều game, trong đó bạn có thể tìm các con quỷ hoặc địch mà theo sau người chơi, hoặc đi đến một điểm riêng khi tránh các chướng ngại. Chẳng hạn, chúng ta nhìn về một trò game RTS một cách hình thức. Các bạn có thể chọn một nhóm các đơn vị và nhấp vào một vị trí nơi bạn muốn chúng di chuyển hoặc nhấp vào các đơn vị địch để tấn công chúng. Đơn vị của bạn khi đó cần tìm ra đường để đến đích mà không đụng vào các chướng ngại. Đơn vị địch cũng cần có thể làm cùng như thế. Các chướng ngại có thể khác nhau từ các đơn vị khác nhau. Chẳng hạn, một đơn vị hạm đội trên không có thể băng qua đồi, trong khi đất hoặc các đơn vị pháo binh cần tìm ra đường quanh nó.

12/01/2013

AI 1.3 - BẦY, ĐÀN VÀ LŨ (PHẦN I)


  1.3 - Bầy, đàn và lũ ( Phần I )
Nhiều sinh vật sống chẳng hạn như chim, cá, côn trùng, và động vật trên cạn thực hiện nhiều động tác chẳng hạn như di chuyển, săn bắt, và tìm mồi theo bầy đàn. Chúng sống và săn bắt theo bầy đàn, vì điều đó làm cho chúng mạnh hơn và an toàn khỏi đám thú ăn thịt hơn là việc săn mồi riêng biệt. Vì thế, để nói bạn muốn tạo một nhóm những bầy chim trên bầu trời; nó sẽ tiêu tốn quá nhiều thời gian và nỗ lực cho các nhà làm phim để thiết kế ra các chuyển động và những cử động của từng con chim. Nhưng nếu chúng ta đưa vào một vài luật đơn giản cho mỗi con chim nối đuôi nhau, chúng ta có thể đạt đến trí thông minh độc lập của toàn nhóm có hành vi phức tạp, toàn thể.

11/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/AVvXsEiZcUBExVh-jezaJ2Vsgf_kuBciANsA1Yag167DVOjxznNnSIKeYXesFQ3KQV5F1bmqUHawaH9Wgmh_lZAwuslD1bnFlJqrzVa3Uj4-6aTAQhgg60BkPjuCMWWXu2lqQ6I95Ncs7MnQtKA/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/AVvXsEiUvYj2ofVkiAUsbffNr6w4z0xUixH45hr2fFxnNmLqkYh-Fu7kLZWQ3ciinDfTCGdcFbOdtEaJkIE8Pwq33mD0AYXMohBBDZ6CApwZEnnOARh20YJl_VbSE1HN-Jdg5KOmJo_jrzmmG82N/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.

10/15/2013

AI 1.1 - Giới thiệu về AI




  1.1 - Giới thiệu về AI (Trí Tuệ Nhân Tạo)

Quyển sách này giúp bạn kết hợp chặt chẽ nhiều kỹ thuật AI (Trí tuệ nhân tạo) trong các game của bạn. Chúng ta sẽ thảo luận về những kỹ thuật quyết định chẳng hạn như Finite State Machines (Máy Trạng Thái) và Behavior Tree (Cây Hành Vi). Chúng ta cũng sẽ nhìn vào động tác, tránh thoát chướng ngại, và tập hợp lại. Chúng ta cũng biết được làm sao để theo dấu, làm sao tạo một con đường bằng cách dùng thuật toán tìm đường A*, và rồi cách nào để đi đến đích bằng cách dùng một mạng lưới điều hướng. Như một phần thưởng, chúng ta sẽ đi vào chi tiết về tính ngẫu nhiên và khả năng có thể xảy ra, và rồi kết hợp chặt chẽ những ý kiến này vào một project cuối cùng.

1. Giới thiệu về AI

Chương này sẽ giúp bạn hiểu một chút nền tảng về trí tuệ nhân tạo ở nhà trường, những lĩnh vực truyền thống, và những ứng dụng chuyên biệt của game. Chúng ta sẽ học để biết ứng dụng và sự thi hành của AI trong game khác với những lĩnh vực khác ra sao, cùng những yêu cầu quan trọng và đặc biệt cho AI trong game. Chúng ta cũng học thêm những kỹ thuật cơ bản của AI được dùng trong game. Chương này dùng để tham khảo cho các chương sau, chúng ta sẽ thực thi những kỹ thuật AI đó trong Unity.


Trí tuệ nhân tạo - Artificial Intelligence (AI)

Các tổ chức sống như động vật và con người có vài loại trí tuệ, giúp chúng ta trong việc đưa ra quyết định riêng để thực hiện vài điều. Mặc khác, máy tính chỉ là thiết bị điện tử có thể xử lý dữ liệu, thực hiện những phép toán logic ở tốc độc cao, và xuất ra kết quả. Vì thế, Trí tuệ nhân tạo (AI) là đề tài chính của việc tạo ra máy tính có thể suy nghĩ và quyết định như tổ chức sống, để thực thi những phép toán chuyên biệt.

Hiển nhiên đây là chủ đề lớn. Và không có thể nào một quyển sách nhỏ như thế này có thể nói hết mọi điều liên quan đến AI. Nhưng nó thật sự quan trọng để hiểu những điều căn bản của AI, khi đang được sử dụng trong những lĩnh vực khác nhau. AI chỉ là một thuật ngữ chung; những thi hành của nó cùng những ứng dụng của nó thì khác nhau cho những mục đích khác nhau, giải quyết những tập vấn đề khác nhau.

Trước khi chúng ta chuyển sang những kỹ thuật game riêng biệt, chúng ta sẽ nhìn về những phạm vi nghiên cứu trong các ứng dụng AI :

Thị giác máy tính (Computer vision) : Đó là khả năng để lấy nhập liệu hình ảnh từ các nguồn chẳng hạn như video hay camera, và phân tích chúng để thực thi các phép toán riêng chẳng hạn như nhận dạng khuôn mặt, nhận dạng vật thể, và nhận dạng ký tự bằng quang học.

Thực thi ngôn ngữ tự nhiên (Natural language processing - NLP) : Đó là khả năng cho phép một máy tính đọc và hiểu các ngôn ngữ, cũng như chúng ta đọc và nói một cách bình thường. Vấn đề là những ngôn ngữ chúng ta dùng hôm nay khó để máy hiểu. Có quá nhiều cách khác nhau để nói về một điều, và cùng một câu có thể hiểu theo nhiều nghĩa khác nhau tuỳ theo ngữ cảnh. NLP là bước tiến quan trọng cho máy tính, khi chúng cần hiểu ngôn ngữ và những diễn đạt chúng ta dùng, trước khi chúng có thể thực hiện chúng và trả lời một cách hợp lý. May thay, có một tập thông tin khổng lồ có thể trên Web, chúng có thể giúp nhà nghiên cứu làm các phân tích tự động về ngôn ngữ.

Lý luận phán đoán theo kinh nghiệm (Common sense reasoning) : Đây là một kỹ thuật mà bộ não của chúng ta có thể dễ dàng dùng để vẽ ra những câu trả lời thậm chí từ các lĩnh vực chúng ta không hiểu rõ. Kiến thức về việc phán đoán dựa theo kinh nghiệm là một cách thông thường cho chúng ta để cố gắng vượt qua các câu hỏi chắc chắn, khi bộ não chúng ta có thể hoà trộn và tác động lẫn nhau giữa ngữ cách, nền tảng kiến thức, và sự thành thạo ngôn ngữ. Nhưng việc làm ra các bộ máy để áp dụng kiến thức như thế vô cùng phức tạp và vẫn là một thách thức lớn đối với các nhà nghiên cứu.
AI trong game

http://somegamez.com/wp-content/uploads/2013/09/the-art-of-game-design.jpgGame AI cần bổ sung chất lượng của một game. Vì thế chúng ta cần hiểu yêu cầu nền tảng mà mỗi game cần có. Câu trả lời sẽ dễ dàng hơn. Đó là nhân tố thú vị. Vì vậy, điều gì làm cho một trò game trở nên thú vị để chơi ? Đây là chủ đề cho việc thiết kế game, và tham khảo tốt là trong The Art of Game Design của tác giả Jesse Schell. Chúng ta hãy thử để thảo luận câu hỏi này mà không cần đi sâu vào chủ đề thiết kế game. Chúng ta sẽ nhận ra rằng một trò chơi kích thích thật sự là niềm vui để chơi. Để tôi nhắc lại : đó là về việc làm ra một trò chơi mang tính thách thức. Có nghĩa là game không nên quá khó mà người chơi không thể đánh bại đối thủ, hoặc là quá dễ thắng. Tìm ra mức độ thử thách đúng đắn là chìa khoá để làm cho trò chơi trở nên thú vị.

Và đó là nơi AI đóng góp. Vai trò của AI trong game là để tạo thú vị bằng việc cung cấp những đối thủ khiêu chiến, và những nhân vật NPCs (non-player characters) hành động một cách có đầu óc trong thế giới game. Vì thế, dẫu rằng mục tiêu ở đây không để tái tạo toàn bộ quá trình của loài người và động vật, nhưng để làm cho NPCs có vẻ thông minh bằng việc phản ứng lại để thay đổi tình thế trong thế giới game theo một cách có nghĩa đối với người chơi.

http://i1.cdnds.net/13/28/618x371/gaming-pokemon-x-and-y-july-12-screenshots-10.jpg 

Lý do mà chúng ta không muốn làm hệ thống AI trong game quá xa hoa máy móc là, sức mạnh thực thi cần cho những tính toán AI cần được chia sẻ giữa những phép toán khác như việc lót đồ hoạ và mô phỏng vật lý. Cũng như, đừng quên rằng chúng ta, tất cả đều đang xảy ra trong thế giới thật, và cũng thật sự quan trọng để có được một tốc độ khung qua game. Thậm chí có những nỗ lực để tạo ra bộ xử lý trong máy tính chuyên dụng cho những phép toán AI (Bộ xử lý Intia của AI Seek). Với sức mạnh thực thi chưa từng tăng thêm, chúng ta bây giờ có nhiều chỗ hơn cho các phép toán AI. Tuy nhiên, như tất cả những quy luật khác trong việc lập trình game, việc tối ưu hoá những tính toán AI còn là một thách thức lớn đối với những nhà lập trình AI.

Những kỹ thuật AI

Trong phần này, chúng ta sẽ đi qua vài kỹ thuật AI đang được dùng trong các hình thức khác nhau của game. Chúng ta sẽ học làm sao để thực thi mỗi đặc tính đó trong Unity trong những chương tiếp theo. Khi đó quyển sách này không tập trung vào những kỹ thuật AI chính nó, nhưng việc thực thi của những kỹ thuật đó bên trong Unity, chúng ta sẽ không đi quá sâu vào chi tiết về những kỹ thuật đó ở đây. Vì thế, hãy xem nó như một buổi học cấp tốc, trước khi đi vào thực hiện đầy đủ hiển nhiên. Nếu bạn muốn học nhiều về AI cho game, thật sự có vài quyển sách hay ở đó, chẳng hạn như Programming Game AI by Example bởi Mat Buckland và Buckland and Artificial Intelligence for Games của Ian Millington và John Funge. Bộ sách AI Game Programming Wisdom cũng chứa nhiều tài nguyên hữu ích và các bài về các kỹ thuật AI gần nhất.

Máy Trạng Thái - Finite State Machines (FSM)

Máy Trạng Thái (FSM) có thể được xem như một trong những mô hình AI đơn giản nhất, và thông dụng trong phần lớn các game. Máy trạng thái cơ bản bao gồm một số trạng thái có hạn với một trạng thái khởi tạo, và rồi quan sát những sự kiện và các quy luật mà sẽ gây ra một sự chuyển đổi trạng thái này sang trạng thái khác. Chính xác thì một thực thể game chỉ có thể ở trong một trạng thái vào một thời điểm bất kỳ.

Ví dụ, chúng ta hãy xét một lính canh gác AI trong một game thể loại bắn súng. Trạng thái của nó có thể đơn giản chỉ là đi tuần tra, săn đuổi, và bắn.


FSM đơn giản của một lính canh gác AI


Cơ bản có 4 thành phần trong một FSM đơn giản :


Trạng thái : thành phần này định nghĩa một tập trạng thái mà game hoặc một NPC có thể chọn trong tuần tra, đi săn, và bắn.

· Chuyển trạng thái : thành phần này định nghĩa mối quan hệ giữa các trạng thái khác nhau


· Quy luật : thành phần này được dùng để khởi đầu một sự chuyển trạng thái (người chơi trong tầm ngắm, tiếp cận đủ gần để tấn công, và người chơi thua hoặc bị giết)


· Sự kiện : đây là thành phần, mà sẽ khởi động để kiểm tra quy luật (khu vực có thể thấy của lính, khoảng cách với người chơi,…)

Vì thế, một con quỷ ở Quake 2 có thể có những trạng thái sau : đứng, đi, chạy, lẩn tránh, đứng yên và tìm kiếm.
http://gunpowered.com/q2cheese/screens/quake2-12.jpg
 
FSM được dùng chủ yếu trong game AI rộng rãi, vì chúng thật sự dễ dàng để thực thi và nhiều hơn cho cả những game đơn giản và phức tạp hơn một chút. Việc sử dụng if/else hoặc switch, chúng ta có thể dễ dàng thực thi một FSM. Nó có thể lộn xộn, khi chúng ta bắt đầu có nhiều trạng thái và nhiều chuyển đổi. Chúng ta xem cách quản lý một FSM đơn giản trong chương tiếp theo.