Báo Cáo Nghiên Cứu: Xây Dựng Module Hỗ Trợ Hai Chương Trình Máy Tính Thi Đấu Cờ Caro Tự Động (HCMUTE)


Tóm tắt nghiên cứu (Abstract)

  • Câu hỏi nghiên cứu (Research Question): Làm thế nào để xây dựng một nền tảng kiến trúc phần mềm chuẩn hóa, minh bạch và có khả năng điều phối tự động các trận thi đấu đối kháng giữa hai thuật toán/chương trình trí tuệ nhân tạo (AI) trong trò chơi cờ Caro qua môi trường mạng nội bộ?
  • Phương pháp tiếp cận (Methodology Snapshot): Nghiên cứu ứng dụng mô hình Client – Server kết hợp giao thức truyền thông hướng kết nối TCP Stream Socket trên nền tảng .NET Framework và C#. Giao diện được phát triển bằng Windows Presentation Foundation (WPF/XAML) nhằm tối ưu hiệu năng hiển thị đồ họa dạng vector, đồng bộ cơ chế giao tiếp liên tiến trình (Inter-Process Communication - IPC) để điều khiển và ghi nhận nước đi từ các tiến trình AI độc lập. Hệ thống quản trị cơ sở dữ liệu Microsoft SQL Server được tích hợp để lưu trữ trạng thái bàn cờ và quản lý tài khoản.
  • Kết quả then chốt (Key Findings): Hệ thống đã hoàn thiện với đầy đủ phân hệ Server (quản trị, ghép cặp đấu, giám sát thời gian thực, lưu trữ và khôi phục trạng thái khi ngắt kết nối) và Client (đăng nhập, nạp bot AI, cầu nối IPC). Module thực thi mượt mà trên bàn cờ chuẩn $20 \times 20$, hỗ trợ tùy biến luật chặn hai đầu và cho phép phát lại (replay) trực quan từng bước đi của trận đấu.
  • Ý nghĩa thực tiễn (Implications): Đề tài cung cấp giải pháp tự động hóa quá trình chấm điểm bài tập lập trình trí tuệ nhân tạo, tối ưu hóa quy trình tổ chức các sân chơi học thuật CNTT và thúc đẩy sinh viên nghiên cứu sâu về thuật toán đối kháng.

Bối cảnh và tầm quan trọng (Context & Significance)

Thực trạng nghiên cứu và ứng dụng

Trong bối cảnh bùng nổ của cuộc Cách mạng Công nghiệp 4.0 và chuyển dịch mạnh mẽ sang nền kinh tế tri thức, Trí tuệ Nhân tạo (AI) đã trở thành trụ cột trọng tâm trong chương trình đào tạo Khoa học Máy tính và Công nghệ Thông tin. Cờ Caro (Gomoku) là một trò chơi đối kháng có luật chơi đơn giản nhưng không gian trạng thái phức tạp, thường được sử dụng làm bài toán kinh điển để rèn luyện kỹ năng xây dựng thuật toán tìm kiếm như Minimax, Alpha-Beta Pruning, Heuristic Evaluation hay MCTS (Monte Carlo Tree Search).

Tuy nhiên, hầu hết các phần mềm cờ Caro hiện nay trên thị trường (như các sản phẩm mã nguồn mở viết bằng Python hay C# của các cộng đồng lập trình) chủ yếu dừng lại ở hai mô hình: Người đấu với Người (PVP) qua mạng LAN/Internet hoặc Người đấu với Máy (PVE) với cấp độ cố định. Khi tổ chức các cuộc thi học thuật, các đơn vị giáo dục và doanh nghiệp (như FPT Software) thường phải dựa vào hình thức thi đấu trực tiếp thủ công hoặc các quy trình chấm điểm rời rạc, tốn nhiều nhân lực và dễ phát sinh sai sót cảm tính.

Khoảng trống nghiên cứu (Research Gap)

Tại Việt Nam thời điểm năm 2020, gần như chưa có một nền tảng chuyên dụng nào cho phép kết nối tự động giữa hai chương trình máy tính (Bot vs Bot) một cách đồng bộ, khách quan và độc lập với ngôn ngữ lập trình của thí sinh. Sự thiếu vắng của một Automated Competition Harness Module tạo ra rào cản lớn trong việc tự động hóa đánh giá học phần và tổ chức các giải đấu lập trình quy mô lớn.

Tính cấp thiết và tác động

Đề tài mã số SV2020-09 do nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) dưới sự hướng dẫn của ThS. Trần Công Tú thực hiện đã giải quyết trực tiếp bài toán này. Nền tảng không chỉ giải phóng thời gian chấm thi của giảng viên mà còn tạo ra môi trường thử nghiệm đối kháng thuật toán công bằng, minh bạch và chuẩn mực cho sinh viên CNTT.


Methodology và Phương pháp tiếp cận

Nghiên cứu áp dụng quy trình thiết kế công nghệ phần mềm thực nghiệm kết hợp với phương pháp chuyên gia và khảo sát nhu cầu người học.

       +-------------------------------------------------------+
       |                  CHƯƠNG TRÌNH SERVER                  |
       |  (WPF UI / TCP Listener / Match Engine / SQL Server)  |
       +---------------------------+---------------------------+
                                   | (TCP Socket / LAN)
                +------------------+------------------+
                |                                     |
+---------------v---------------+     +---------------v---------------+
|        CLIENT MODULE 1        |     |        CLIENT MODULE 2        |
|  - TCP Client Stream Handler  |     |  - TCP Client Stream Handler  |
|  - Process Launcher (IPC)     |     |  - Process Launcher (IPC)     |
+---------------+---------------+     +---------------+---------------+
                | (Standard I/O Streams)              | (Standard I/O Streams)
+---------------v---------------+     +---------------v---------------+
|     CONTESTANT 1 BOT (AI)     |     |     CONTESTANT 2 BOT (AI)     |
+-------------------------------+     +-------------------------------+

1. Kiến trúc hệ thống và Thiết kế mạng

  • Mô hình Client – Server tập trung: Đóng vai trò là trung gian trọng tài. Server làm nhiệm vụ lắng nghe kết nối, xác thực danh tính thí sinh, tạo bảng đấu, kiểm soát tính hợp lệ của nước đi và đồng bộ thời gian thực.
  • Giao thức Stream Socket (TCP/IP): Sử dụng các lớp TcpListener và TcpClient thuộc namespace System.Net.Sockets. Việc chọn giao thức TCP hướng kết nối (Connection-oriented) đảm bảo các gói tin nước đi được truyền tuần tự, tin cậy, không thất thoát dữ liệu và có cơ chế kiểm tra lỗi tự động qua checksum tầng mạng.

2. Giao tiếp liên tiến trình (IPC - Inter-Process Communication)

  • Phân hệ Client đóng vai trò là "Wrapper Module". Client nhận chỉ dẫn từ Server qua mạng LAN, sau đó khởi chạy tệp thực thi chương trình AI của thí sinh (độc lập tiến trình).
  • Dữ liệu tọa độ nước đi được truyền trực tiếp vào luồng xuất/nhập chuẩn (StandardInput / StandardOutput qua Console Stream) của tiến trình AI, giúp tách biệt hoàn toàn mã nguồn của trọng tài và mã nguồn của thí sinh, đảm bảo tính bảo mật và công bằng.

3. Công nghệ giao diện và Quản trị dữ liệu

  • WPF (Windows Presentation Foundation): Sử dụng ngôn ngữ XAML để bóc tách giữa lớp giao diện và lớp xử lý logic. Tận dụng thư viện đồ họa DirectX tích hợp trong WPF nhằm tối ưu hóa CPU, giúp việc vẽ lại bàn cờ kích thước $20 \times 20$ và các hiệu ứng trực quan đạt tốc độ khung hình ổn định.
  • Hệ quản trị CSDL Microsoft SQL Server: Lưu trữ cấu trúc bảng dữ liệu người dùng, kết quả từng ván đấu, chuỗi nước đi (Move History) để phục vụ tính năng phục hồi trạng thái khi gặp sự cố và xem lại ván đấu (Replay Engine).

Phát hiện chính và Kết quả thực nghiệm

Quá trình triển khai và thử nghiệm hệ thống tại Khoa Công nghệ Thông tin – Trường ĐH Sư phạm Kỹ thuật TP.HCM đã ghi nhận các kết quả kỹ thuật nổi bật:

+-----------------------------------------------------------------------+
|                       ĐẶC TÍNH KỸ THUẬT NỀN TẢNG                      |
+------------------------------------+----------------------------------+
| Thành phần                         | Thông số kỹ thuật / Giải pháp    |
+------------------------------------+----------------------------------+
| Kích thước bàn cờ chuẩn            | 20 x 20 ô vuông                  |
| Tùy biến luật thi đấu              | Bật / Tắt luật chặn hai đầu      |
| Cơ chế giao tiếp Server-Client     | TCP Socket (Port tùy chỉnh)      |
| Cơ chế giao tiếp Client-AI Bot     | IPC qua Standard I/O Stream      |
| Cơ chế lưu vết trận đấu            | SQL Server Transaction Log       |
| Khả năng chịu lỗi (Fault-Tolerance)| Tự động khôi phục phiên ngắt kết |
| Chế độ Replay                      | Play, Pause, Next, Back, Fast-Fwd|
+------------------------------------+----------------------------------+

1. Đồng bộ hóa trận đấu với độ trễ tối thiểu

Hệ thống TCP Stream Socket đảm bảo thời gian phản hồi giữa hai máy khách dưới 5ms trong mạng LAN. Tốc độ nhận và chuyển tiếp nước đi diễn ra gần như tức thì, loại bỏ hoàn toàn hiện tượng lệch bước (desynchronization) giữa hai bên đối kháng.

2. Quản lý trạng thái và Khả năng chịu lỗi (Fault Tolerance)

Một điểm sáng bất ngờ trong giải pháp thiết kế là khả năng phục hồi dữ liệu ván đấu. Khi Client gặp sự cố mất nguồn hoặc đứt kết nối mạng đột ngột, Server lưu vết toàn bộ chuỗi tọa độ nước đi vào SQL Server. Ngay khi Client tái lập kết nối và hoàn tất xác thực, Server có khả năng dựng lại nguyên vẹn trạng thái bàn cờ để tiếp tục trận đấu mà không cần bắt đầu lại từ đầu.

3. Công cụ trực quan hóa và Tường thuật thông minh

Màn hình Tường thuật trận đấu (Match Replay) cung cấp bộ điều khiển hoàn chỉnh:

  • Duyệt từng nước đi (Step-by-step: Next, Back).
  • Phát tự động (Play/Pause) và tua nhanh về thời điểm kết thúc ván (Fast-forward).
  • Phân biệt trực quan quân đi: Nước cờ $X$ hiển thị màu đỏ, nước cờ $O$ hiển thị màu xanh trên lưới bàn cờ $20 \times 20$.

4. Tính linh hoạt trong quy tắc nghiệp vụ

Chương trình Server cho phép người điều hành cấu hình linh hoạt số lượng ván đấu (đấu 1 ván hoặc đấu chuỗi nhiều ván liên tục) và lựa chọn bật/tắt Luật chặn hai đầu – một biến thể luật chơi phổ biến của cờ Caro Việt Nam giúp hạn chế lợi thế của bên đi trước.


Đóng góp khoa học và Giá trị thực tiễn

Đóng góp về mặt phương pháp và kỹ thuật

  • Chuẩn hóa khung giao tiếp đối kháng: Đề xuất bộ quy ước truyền thông dữ liệu chuẩn (Communication Protocol Framework) tinh gọn giữa nền tảng trọng tài và thuật toán người dùng, mở đường cho việc tích hợp nhiều ngôn ngữ lập trình khác nhau (C++, Python, Java, C#) vào cùng một hệ thống chấm tự động.
  • Mô hình kiến trúc module hóa: Tách biệt triệt để 3 lớp: Lớp Điều hành trung tâm (Server) – Lớp Cầu nối môi trường (Client) – Lớp Thuật toán cốt lõi (AI Core).

Giá trị ứng dụng giáo dục và đào tạo

  • Giảm tải chi phí và nhân lực vận hành: Giảng viên các môn học Trí tuệ nhân tạo, Cấu trúc dữ liệu & Giải thuật có thể tổ chức chấm điểm tự động cho hàng trăm sinh viên chỉ qua một vài thao tác thiết lập trên Server.
  • Thúc đẩy phong trào học thuật: Hệ thống tạo ra một nền tảng thực nghiệm cạnh tranh lành mạnh, khuyến khích sinh viên tối ưu hóa thuật toán tìm kiếm cục bộ, phát triển chiến lược heuristic và bước đầu tiếp cận các kỹ thuật học tăng cường (Reinforcement Learning).

Đối tượng hưởng lợi và Quan tâm

  • Giảng viên và Nhà nghiên cứu học thuật: Sử dụng làm công cụ bổ trợ giảng dạy, đánh giá khách quan năng lực giải thuật của sinh viên trong các môn học AI/Khoa học máy tính.
  • Sinh viên ngành CNTT / Kỹ thuật Phần mềm: Có được môi trường chuẩn hóa để kiểm thử, đánh giá hiệu năng và so tài thuật toán cờ Caro tự động với các bạn học khác.
  • Ban tổ chức các cuộc thi lập trình (Hackathons / Tech Arenas): Có ngay giải pháp trọn gói để điều hành các giải đấu đối kháng thuật toán tự động trên mạng cục bộ mà không cần đầu tư hạ tầng máy chủ đám mây phức tạp.

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

1. Phát hiện và cải tiến quan trọng nhất của đề tài là gì?

Điểm đột phá là việc xây dựng thành công module trung gian giúp hai chương trình AI độc lập có thể thi đấu đối kháng trực tiếp và tự động qua mạng LAN, loại bỏ hoàn toàn sự can thiệp thủ công của con người trong quá trình ghi nhận nước đi và phân định thắng thua.

2. Giao thức giao tiếp giữa Client và chương trình AI của thí sinh hoạt động ra sao?

Client khởi chạy tệp thực thi AI dưới dạng tiến trình con và giao tiếp thông qua cơ chế Inter-Process Communication (IPC). Nước đi được truyền qua dòng nhập/xuất chuẩn (Standard Input/Output), giúp chương trình AI của thí sinh không cần tích hợp thư viện mạng phức tạp mà chỉ cần đọc/ghi console thông thường.

3. Nền tảng này có thể mở rộng sang các trò chơi đối kháng khác không?

Có. Mặc dù đề tài tập trung vào cờ Caro ($20 \times 20$), kiến trúc Socket và mô hình phân lớp Client - Server hoàn toàn có thể tái sử dụng để áp dụng cho các board game đối kháng theo lượt khác như Cờ vây (Go), Cờ vua (Chess), Cờ tướng (Xiangqi), Cờ Othello/Reversi.

4. Hệ thống xử lý thế nào khi một máy thi đấu mất kết nối mạng giữa chừng?

Server duy trì cơ chế Transaction Logging trên SQL Server. Khi phát hiện ngắt kết nối (TcpState.Unknown hoặc timeout), Server sẽ tạm dừng ván đấu và lưu lại trạng thái bàn cờ hiện tại. Khi Client kết nối lại, hệ thống sẽ khôi phục chính xác vị trí các quân cờ để tiếp tục thi đấu.

5. Sinh viên lập trình Bot AI bằng ngôn ngữ khác ngoài C# có tham gia thi đấu được không?

Được. Nhờ cơ chế giao tiếp qua luồng dữ liệu chuẩn (Console Standard I/O), chương trình AI có thể được viết bằng bất kỳ ngôn ngữ nào (C++, Python, Java, Rust...) miễn là có thể biên dịch thành tệp thực thi và đọc/ghi dữ liệu dạng chuỗi theo chuẩn quy ước của ban tổ chức.


Kết luận (Conclusion)

Công trình nghiên cứu "Xây dựng module hỗ trợ hai chương trình máy tính thi đấu cờ caro tự động" của nhóm sinh viên Trường ĐH Sư phạm Kỹ thuật TP.HCM (HCMUTE) là một giải pháp công nghệ hoàn chỉnh, kết hợp nhuần nhuyễn giữa lý thuyết mạng máy tính, công nghệ phần mềm và bài toán trí tuệ nhân tạo. Đề tài không chỉ đáp ứng xuất sắc các yêu cầu kỹ thuật về độ trễ, tính toàn vẹn dữ liệu và giao diện trực quan, mà còn mang lại giá trị ứng dụng to lớn trong công tác giảng dạy và tổ chức sân chơi học thuật.

Hướng phát triển tiếp theo của hệ thống là nâng cấp khả năng kết nối qua giao thức WebSockets/Cloud để hỗ trợ thi đấu qua mạng diện rộng (WAN/Internet), đồng thời tích hợp bảng xếp hạng Elo tự động cho các chương trình AI tham gia.