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.

4 comments:

  1. Em đang tìm hiểu về AI, cám ơn bài viết của tác giả! :D

    ReplyDelete
  2. Hay quá, e cám ơn ad, thông tin cần thiết lắm.
    ------------------------------------
    Truyền hình số HD - Xem tivi hơn 50 kênh miễn phí thuê bao tháng.
    Chuyên phân phối: Dau thu DVB T2 chính hãng VTV, VTC, LTP...
    Đầu thu nhiều người quan tâm: Dau thu DVB T2 VTC T201

    ReplyDelete
  3. nếu có video tham khảo thì tối biết mấy

    ReplyDelete
  4. nếu có video tham khảo thì tối biết mấy

    ReplyDelete