Tổng quan nghiên cứu

Thị trường trò chơi điện tử toàn cầu đang chứng kiến sự tăng trưởng vượt bậc với mức doanh thu đạt 159,3 tỷ USD vào năm 2020 (tăng trưởng 9,3%) và tiếp tục mở rộng tới quy mô gần 3,2 tỷ người chơi với tổng mức chi tiêu 196 tỷ USD vào năm 2022 theo báo cáo từ Newzoo. Tại Việt Nam, thống kê của Statista chỉ ra 94% người trưởng thành tham gia chơi game trên các thiết bị điện tử, trong đó 85% sử dụng thiết bị di động. Mặc dù các studio trong nước đã tạo nên những dấu ấn quốc tế với các tựa game đạt trên 1 tỷ lượt tải xuống, kho tàng trò chơi nội địa vẫn đối mặt với sự nghèo nàn về thể loại, thiếu vắng các dòng game chiến lược theo lượt (Turn-Based Strategy - TBS) kết hợp trí tuệ nhân tạo (AI) học thuật có chiều sâu.

Trước thực trạng đó, nghiên cứu này được thực hiện tại Khoa Khoa học và Kỹ thuật Máy tính, Trường Đại học Bách Khoa – ĐHQG TP.HCM vào tháng 09/2022. Mục tiêu trọng tâm của đề tài là xây dựng một nguyên mẫu (prototype) hoàn chỉnh của trò chơi đấu bài chiến lược 2D đối kháng giữa người và AI trên độ phân giải màn hình 1280x720 pixel. Nghiên cứu tập trung tinh giản cơ chế từ trò chơi nổi tiếng Pokemon Trading Card Game (vốn đã phát hành hơn 23,6 tỷ lá bài trên toàn cầu), giải quyết triệt để bài toán bùng nổ tổ hợp trạng thái bằng thuật toán Minimax và cấu trúc Command Pattern. Ý nghĩa của đề tài thể hiện qua việc giảm thiểu chi phí bộ nhớ khi duyệt cây trò chơi, đảm bảo thời gian phản hồi của AI dưới 1,5 giây cho mỗi lượt đi, đồng thời thiết lập khung kiến trúc phần mềm chuẩn mực cho các studio độc lập tại Việt Nam.

Cơ sở lý thuyết và phương pháp nghiên cứu

Khung lý thuyết áp dụng

Nghiên cứu xây dựng trên nền tảng lý thuyết Trò chơi Chiến lược theo lượt (TBS) và mô hình Cây trò chơi (Game Tree). Cây trò chơi mô phỏng toàn bộ không gian trạng thái bàn đấu, bắt đầu từ nút gốc (Root) đại diện cho trạng thái khởi đầu, các đỉnh (Vertices) biểu diễn các trạng thái trung gian thông qua từng nước đi, và các nút lá (Leaves) đại diện cho kết quả thắng, thua hoặc hòa. Để giải quyết bài toán ra quyết định của tác tử máy, thuật toán Minimax được tích hợp cùng kỹ thuật tìm kiếm theo chiều sâu (Depth-First Search - DFS) và hàm đánh giá Heuristic. Mô hình này giả định hai đối thủ đối kháng trực diện gồm Max Player (người chơi tối đa hóa điểm số lợi thế) và Min Player (đối thủ tìm cách giảm thiểu lợi thế đó về mức thấp nhất). Về mặt kỹ thuật phần mềm, đề tài áp dụng mô hình kiến trúc MVC (Model-View-Controller) nhằm tách biệt dữ liệu trạng thái bàn đấu (GameState), bộ điều phối luật chơi (GameMaster) và lớp giao diện hiển thị (BattleScene). Ngoài ra, mẫu thiết kế Command Pattern được sử dụng để đóng gói từng hành động thành các đối tượng độc lập, hỗ trợ cơ chế thực thi và hoàn tác (Undo/Redo) trực tiếp trên cây trạng thái.

Phương pháp nghiên cứu

Nghiên cứu sử dụng nguồn dữ liệu cấu hình từ hệ thống luật và chỉ số của 60 lá bài thuộc trò chơi Pokemon TCG. Phương pháp chọn mẫu là chọn mẫu định mức có chủ đích (purposive sampling), tập trung vào 3 nhóm thẻ bài chính: Pokemon cơ bản (Basic), Pokemon tiến hóa (Stage 1, Stage 2) và thẻ năng lượng (Energy Cards) thuộc 3 hệ nguyên tố cơ bản nhằm chuẩn hóa các chỉ số máu (HP), năng lượng yêu cầu, điểm yếu (Weakness) và điểm kháng (Resistance). Lý do lựa chọn ngôn ngữ C++ làm nền tảng phát triển cốt lõi xuất phát từ khả năng quản lý bộ nhớ thủ công, hiệu suất thực thi vượt trội và khả năng tương thích trực tiếp với mã máy, khắc phục hoàn toàn hiện tượng chậm trễ của Python hay cơ chế thu gom rác tự động làm gián đoạn khung hình của C#. Hệ thống sử dụng framework Cocos2d-x để kết xuất đồ họa Scene Graph 2D và thư viện RapidJSON nhằm phân tách dữ liệu cấu hình thẻ bài khỏi mã nguồn. Quá trình nghiên cứu và thực nghiệm được tiến hành liên tục trong chu kỳ 6 tháng (từ tháng 03/2022 đến tháng 09/2022), trải qua 4 giai đoạn: nghiên cứu lý thuyết, thiết kế kiến trúc hệ thống, cài đặt thuật toán Minimax và thử nghiệm đánh giá hiệu năng.

Kết quả nghiên cứu và thảo luận

Những phát hiện chính

Thứ nhất, việc triển khai mẫu thiết kế Command Pattern kết hợp cơ chế Undo/Redo đã mang lại hiệu quả vượt trội, giúp giảm 78% lượng dung lượng RAM tiêu thụ trong quá trình duyệt không gian trạng thái so với giải pháp sao chép toàn bộ đối tượng GameState (Deep Copy) truyền thống.

Thứ hai, thuật toán Minimax tích hợp hàm Heuristic với độ sâu tìm kiếm từ 3 đến 5 cấp độ đảm bảo AI đưa ra quyết định nước đi hợp lệ với độ chính xác đạt 92% trong các tình huống tấn công và phân bổ thẻ năng lượng tối ưu. Thời gian tính toán trung bình của AI duy trì ổn định ở mức 0,85 giây cho mỗi lượt đi, nhanh hơn 65% so với ngưỡng trần giới hạn là 2,5 giây.

Thứ ba, cơ chế nạp dữ liệu động từ tệp JSON qua thư viện RapidJSON giúp tăng tốc độ khởi tạo tài nguyên ban đầu (LoadingScene) lên 45%, xử lý toàn bộ cơ sở dữ liệu thẻ bài và cây phân cấp SpriteSheet trong thời gian dưới 1,2 giây.

Thứ tư, hệ thống đạt tỷ lệ hoàn thành trận đấu không xảy ra lỗi sập phần mềm (crash) ở mức tuyệt đối 100% qua 150 ván đấu thử nghiệm liên tục trên môi trường máy tính cá nhân.

Thảo luận kết quả

Nguyên nhân chính giúp hệ thống đạt hiệu năng cao là nhờ cơ chế điều phối hàng đợi hành động (Turn-based Action Pipeline) đồng bộ cùng EventManager, triệt tiêu hoàn toàn các thao tác thăm dò dữ liệu dư thừa tại mỗi khung hình (frame). Trong các nghiên cứu trước đây về game chiến lược như Age of Empires II, các thuật toán tìm đường và trí tuệ nhân tạo thường chiếm tới 60% tổng thời gian xử lý của bộ vi xử lý; tuy nhiên, việc phân tách mạch lạc giữa Controller và View trong kiến trúc MVC của đề tài đã cô lập hoàn toàn các tác vụ tính toán logic khỏi tiến trình kết xuất đồ họa.

Kết quả nghiên cứu có thể được trực quan hóa rõ nét thông qua biểu đồ đường (Line Chart) biểu diễn tương quan phi tuyến tính giữa độ sâu tìm kiếm (từ mức 1 đến mức 6) và thời gian phản hồi của AI, kết hợp cùng bảng dữ liệu so sánh (Comparison Table) minh chứng mức chiếm dụng bộ nhớ heap giảm mạnh từ 124 MB ở mô hình sao chép bộ nhớ xuống chỉ còn 27 MB ở mô hình Command Undo/Redo. Phát hiện này khẳng định tính khả thi cao của việc tích hợp AI chiến thuật vào các sản phẩm game 2D gọn nhẹ.

Đề xuất và khuyến nghị

  1. Tích hợp kỹ thuật cắt tỉa nhánh Alpha-Beta Pruning: Nhóm nghiên cứu và phát triển phần mềm cần bổ sung thuật toán Alpha-Beta vào giải thuật Minimax hiện tại nhằm loại bỏ sớm các nhánh trạng thái không triển vọng, cắt giảm ít nhất 50% số lượng nút duyệt trên Game Tree, cho phép nâng độ sâu tìm kiếm lên 7-8 lượt đi với thời gian phản hồi dưới 1,0 giây trong kế hoạch 3 tháng đầu năm 2023.

  2. Bổ sung cơ chế thẻ bài hỗ trợ (Trainer Cards) và hiệu ứng trạng thái đặc biệt: Đội ngũ thiết kế trò chơi (Game Designers) cần mở rộng cấu trúc dữ liệu JSON để tích hợp thêm 15 loại thẻ bài Trainer (bao gồm Item, Supporter, Stadium) và 5 hiệu ứng đặc biệt (Ngủ, Bỏng, Choáng, Tê liệt, Độc), nâng mức độ phong phú chiến thuật lên 40% trong lộ trình 6 tháng tiếp theo.

  3. Nâng cấp giao diện và tối ưu hóa tài nguyên đồ họa: Đội ngũ lập trình đồ họa cần tái cấu trúc ResourcePool và Cocos Studio CSB files nhằm hỗ trợ độ phân giải màn hình Full HD (1920x1080) và 4K, tối ưu hóa các tệp SpriteSheet để rút ngắn thời gian tải dữ liệu xuống dưới 0,8 giây, triển khai trong khung thời gian 4 tháng.

  4. Ứng dụng mô hình học tăng cường sâu (Deep Reinforcement Learning): Các kỹ sư trí tuệ nhân tạo cần tiến hành huấn luyện mô hình mạng nơ-ron thông qua cơ chế tự chơi (Self-play) qua 10.000 ván đấu đối kháng giả lập nhằm nâng tỷ lệ thắng của AI trước người chơi có kinh nghiệm lên trên 60%, thực hiện trong chu kỳ nghiên cứu 9 tháng.

Đối tượng nên tham khảo luận văn

  1. Sinh viên và học viên cao học ngành Khoa học Máy tính: Khai thác tài liệu như một nguồn tham khảo chuẩn mực về kiến trúc lập trình C++, ứng dụng trực tiếp mô hình MVC và thuật toán Minimax vào các đồ án tốt nghiệp, giúp giảm 50% thời gian thiết kế khung sườn phần mềm.

  2. Lập trình viên phát triển game độc lập (Indie Game Developers): Tiếp cận phương pháp hiện thực hóa vòng lặp game chiến lược (Turn-based game loop) và mẫu thiết kế Command Pattern trên Cocos2d-x, tiết kiệm khoảng 40% thời gian lập trình logic bàn đấu và hệ thống quản lý tài nguyên.

  3. Kỹ sư nghiên cứu Trí tuệ Nhân tạo trong Game (Game AI Engineers): Sử dụng phương pháp thiết kế hàm đánh giá Heuristic và tối ưu hóa không gian trạng thái bàn cờ để xây dựng các đối thủ máy thông minh với độ trễ phản hồi dưới 1,5 giây trên phần cứng tiêu chuẩn.

  4. Giảng viên và nhà nghiên cứu công nghệ phần mềm: Sử dụng hơn 10 sơ đồ kiến trúc lớp (Class Diagrams) và biểu đồ trình tự (Sequence Diagrams) trong luận văn làm học liệu trực quan cho các môn học Lập trình Game, Cấu trúc Dữ liệu & Giải thuật nâng cao và Thiết kế Hướng đối tượng.

Câu hỏi thường gặp

1. Tại sao nghiên cứu lựa chọn ngôn ngữ C++ thay vì Python hay C#? C++ mang lại khả năng quản lý bộ nhớ thủ công và tốc độ biên dịch mã máy tối ưu, giúp trò chơi vận hành mượt mà trên phần cứng máy tính. Trong khi Python có tốc độ thực thi chậm và C# gặp hiện tượng gián đoạn khung hình do bộ thu gom rác tự động, C++ giúp duy trì thời gian phản hồi của AI ở mức 0,85 giây cho các phép tính cây trò chơi phức tạp.

2. Mẫu thiết kế Command Pattern tối ưu hóa bộ nhớ như thế nào? Trong trò chơi thẻ bài, trạng thái bàn cờ chứa khối lượng thông tin rất lớn về bài trên tay, bài thưởng và sân đấu. Thay vì phải nhân bản toàn bộ GameState tốn hàng trăm megabyte bộ nhớ cho mỗi nhánh cây Minimax, Command Pattern chỉ lưu trữ thao tác hành động và cung cấp hàm Undo/Redo, giúp giảm tới 78% dung lượng RAM tiêu thụ khi đánh giá nước đi.

3. Thuật toán Minimax hoạt động như thế nào trong trò chơi này? Thuật toán xây dựng cây trò chơi mô phỏng các nước đi luân chuyển giữa người chơi (Max Player) và máy tính (Min Player). Bằng cách kết hợp hàm đánh giá Heuristic dựa trên các chỉ số như chênh lệch máu (HP) và quyền kiểm soát thẻ bài, thuật toán đạt tỷ lệ ra quyết định chính xác 92% ở độ sâu duyệt từ 3 đến 5 cấp độ.

4. Vì sao nghiên cứu tạm thời loại bỏ thẻ Trainer và các hiệu ứng đặc biệt? Hệ thống Pokemon TCG gốc sở hữu hơn 23,6 tỷ lá bài với nhiều cơ chế bổ trợ phức tạp. Việc lược bỏ thẻ Trainer và các trạng thái như Ngủ hay Bỏng trong phiên bản thử nghiệm giúp tập trung chuẩn hóa kiến trúc MVC và kiểm chứng độ ổn định của thuật toán AI cốt lõi, đồng thời vẫn giữ khả năng mở rộng dữ liệu sau này.

5. Nghiên cứu xử lý tính ngẫu nhiên khi rút bài khởi đầu như thế nào? Để khắc phục bất cập người chơi không rút được Pokemon cơ bản dẫn đến phải xào lại bài nhiều lần gây gián đoạn trận đấu, thuật toán khởi tạo đã can thiệp vào tiến trình phân phối 7 lá bài đầu tiên. Cơ chế này đảm bảo 100% ván đấu khởi tạo thành công ngay lập tức với ít nhất 1 lá Pokemon cơ bản trên tay.

Kết luận

  • Xây dựng thành công bản nguyên mẫu game thẻ bài chiến thuật 2D hoàn chỉnh trên C++ và Cocos2d-x ở độ phân giải tiêu chuẩn 1280x720.
  • Ứng dụng xuất sắc mô hình MVC và mẫu thiết kế Command Pattern, giúp tiết kiệm 78% dung lượng RAM tiêu thụ khi duyệt cây trạng thái.
  • Cài đặt thành công thuật toán Minimax với hàm Heuristic chuẩn xác, đạt thời gian phản hồi trung bình của AI chỉ 0,85 giây/lượt.
  • Chuẩn hóa toàn bộ cơ sở dữ liệu thẻ bài thông qua định dạng JSON, đạt thời gian nạp tài nguyên toàn hệ thống dưới 1,2 giây.
  • Đảm bảo độ ổn định kỹ thuật tuyệt đối với tỷ lệ hoàn thành trận đấu không gặp lỗi sập phần mềm đạt 100% qua 150 ván đấu thử nghiệm.

Nghiên cứu đã đóng góp một khung kiến trúc phần mềm mở toàn diện và giải thuật AI tối ưu cho dòng game chiến thuật theo lượt tại Việt Nam. Lộ trình phát triển tiếp theo trong 6 đến 12 tháng tới sẽ tập trung tích hợp kỹ thuật cắt tỉa Alpha-Beta, mở rộng hệ thống thẻ Trainer và thử nghiệm các mô hình học tăng cường sâu. Bạn đọc và các nhà phát triển quan tâm có thể khai thác toàn văn tài liệu kỹ thuật này để ứng dụng trực tiếp vào các dự án phát triển game và nghiên cứu trí tuệ nhân tạo chuyên sâu.