Home » Machine Learning » AI trong phát triển game: Artificial stupidity

AI trong phát triển game: Artificial stupidity


Artificial Stupidity (sau đây viết tắt là AS tương tự với cách viết tắt của AI) thường được dùng như là một khái niệm đối lập vui vẻ với AI, thể hiện việc bất lực của AI khi mà thực hiện một tác vụ đơn giản nào đấy. Tuy nhiên, trong khoa học máy tính, AS còn được sử dụng như một kỹ thuật “dumbing down” chương trình máy tính để cố tình đưa ra sai sót trong kết quả trả về.

Mục tiêu của việc phát triển AI cho game không chỉ là tạo nên một AI thông minh chiến thắng mọi game mà còn phải tạo ra một AI đủ tính giải trí, đủ thách thức, tạo nên hứng thú cho người chơi. AI phải đủ thông minh để không bị đánh bại theo một kiểu giống nhau, không đưa ra những quyết định ngớ ngẩn nhưng mà cũng không được quá hoàn hảo đến mức người chơi không thể thắng được. Từ đó chúng ta có nghệ thuật của việc cố tình tạo ra sai lầm cho AI.

Tác giả của bài báo “Làm thế nào để kết hợp sự ngốc nghếch vào AI” miêu tả vấn đề ông ấy gặp phải trong việc phát triển chương trình AI của ông ấy. Game đầu tiên của tác giả sử dụng AI là một game có tên là “Steve Davis World Snooker” (hơi giống với game Soccer của SepXGate). AI của tác giả tương đối đơn giản, chọn một bóng có điểm cao nhất có thể cho vào lỗ và đưa nó vào lỗ. Tác giả đa dạng các mức độ khó bằng việc thêm vào sai số ngẫu nhiên cho góc đánh của các cú đánh ở các mức độ dễ hơn. Tuy nhiên tác giả gặp phàn nàn của khách hàng về việc AI quá giỏi ở mức độ dễ. Người dùng báo cáo về việc AI chạy bóng quá giỏi, luôn đưa bóng vào vị trí thuận lợi cho mình hoặc là khóa bóng ở vị trí bất lợi cho người chơi. Vấn đề ở đây AI của tác giả không tính toán đến việc chạy bóng, tất cả chỉ là ngẫu nhiên. Tác giả đề cập lý do của trường hợp này là con người có xu hướng nhân cách hóa AI. Chúng ta thường nghĩ máy tính cũng trải qua quá trình suy nghĩ như con người trong trường hợp tương tự. Vì vậy người dùng cho rằng AI cố tình chạy bóng trong khi đấy chỉ là kết quả ngẫu nhiên của cú đánh.

Vấn đề này có thể đến từ mã nguồn hoặc thiết kế của game. Ở một mức độ nào đó, nó phụ thuộc vào thể loại game, phụ thuộc vào mức độ mô phỏng con người của các AI trong các tình huống. Ví dụ như trong các thể loại game trí tuệ đối đầu như cờ hoặc snooker hoặc đánh bài, thì AI thường phụ thuộc nhiều vào mã nguồn, còn trong các thể loại game như FPS thì thường AI được quyết định ở mức thiết kế, ví dụ như thiết kế AI có thể hơi yếu hơn người chơi.

Cách đơn giản nhất để giảm sự thông minh của AI là giảm lượng tính toán của AI. Thông thường AI thực hiện càng nhiều tính toán thì AI càng thông minh. Tuy nhiên vấn đề của cách tiếp cận này là có thể làm cho AI trở nên mất thật. Nó có thể thực hiện các hành động rất ngớ ngẩn mà không một người chơi thực nào thực hiện cả. Điều này sẽ làm giảm cảm giác đang tranh đấu với một đối thủ thực sự của người chơi rất nhiều.


Trong các trò chơi với AI thì không hề có khái niệm trận đấu công bằng. Máy tính có lợi thế về việc có thể thực hiện hàng tỉ tính toán mỗi giây, còn con người có lợi thế về việc tính toán song song của bộ não. Sự cân bằng trong game gần như chỉ là một cảm giác, một cảm giác mà bất kỳ một nhà lập trình game nào đều cố gắng đạt được bằng cách tạo ra một AI ngốc nghếch có thể mắc sai lầm một cách tự nhiên nhất. Một AI thông minh sẽ “bán độ” để trò chơi trở nên thú vị hơn. Khi bạn thắng một game, gần như là tương đương với việc AI để cho bạn thắng (tất nhiên không kể đến việc AI quá kém), chỉ là nó để cho bạn thắng một cách mà bạn cảm thấy sung sướng, cảm giác như bạn vừa thằng một đối thủ khó nhằn. Một lập trình viên game không nên tạo ra một AI được lập trình để thua người chơi, họ nên lập trình một AI thông minh nhất nhưng luôn tạo cho người chơi một cơ hội để có thể thắng. Nếu như người chơi chưa đủ trình độ AI vẫn chiến thắng nhưng ít nhất họ nhìn thấy được cơ hội chiến thắng của mình trước AI. Ví dụ như bạn có thể tạo ra một AI cố tình tạo ra một tình huống có lợi mà người chơi có thể khai thác (tất nhiên là không được quá lộ liễu, người chơi phải có trình độ để có thể khai thác được), một khi người chơi đã tận dụng được cơ hội này thì AI của bạn sẽ dùng hết khả năng để chiến thắng người chơi. Điều này sẽ tăng tính đối kháng của game và tạo cảm giác hưng phấn cho người chơi.

Như vậy, mục tiêu của một lập trình viên game từ việc tạo ra một AI hoàn hảo thắng mọi game trở thành tạo ra một AI luôn luôn cố gắng thắng một game nhưng cho phép người chơi có thể chiếm một chút ưu thế và sau đó vận dụng hết khả năng để chiến thắng. AI trong game không chỉ có mỗi nhiệm vụ chiến thắng người chơi mà còn phải duy trì sự cân bằng cho game, phải trở nên con người nhất có thể. Việc cố gắng tích hợp sai lầm một cách có chủ đích cho AI sẽ khó khăn hơn việc giảm độ chính xác của AI, tuy nghiên nó cũng tạo ra được nhiều ưu điểm cho trò chơi như tăng sự hứng thú của người chơi, hướng người chơi tập trung đến các sai lầm mình cố tình tạo ra hơn là tìm kiếm các sai lầm không dự định trước của AI.