Bối cảnh và vấn đề nghiên cứu

Trong ngành công nghiệp giải trí kỹ thuật số, thể loại trò chơi điện tử đối kháng (fighting game) luôn duy trì được lượng người chơi lớn trên phạm vi toàn cầu. Tuy nhiên, theo khảo sát thực tiễn của tác giả Đào Phú Thịnh trong đồ án tốt nghiệp ngành Công nghệ thông tin (Chuyên ngành Lập trình Ứng dụng di động & Game, Trường Đại học Bà Rịa – Vũng Tàu, 2024), thị trường hiện nay vẫn còn thiếu hụt các sản phẩm game đối kháng trực tuyến khai thác sâu đề tài văn hóa truyện tranh Nhật Bản (manga/anime hay cộng đồng "Wibu"). Đồng thời, phần lớn các trò chơi trực tuyến thương mại trên thị trường đang áp đặt nhiều rào cản tài chính đối với người dùng như mô hình nạp tiền mua vật phẩm (pay-to-win), bắt buộc xem quảng cáo thương mại hoặc đòi hỏi người chơi phải đầu tư quá nhiều thời gian "cày cuốc" để tích lũy tài nguyên.

Xuất phát từ thực trạng trên, đề tài "Đồ án tốt nghiệp Game đối kháng WibuPixel" được thực hiện nhằm giải quyết các mục tiêu và nhiệm vụ cụ thể:

  1. Nghiên cứu, thiết kế và phát triển hoàn chỉnh trò chơi đối kháng trực tuyến hai người chơi mang tên "WibuPixel" trên nền tảng máy tính (PC - hệ điều hành Windows), khai thác phong cách đồ họa pixel và hình tượng nhân vật từ các bộ manga nổi tiếng.
  2. Ứng dụng các công nghệ mạng thời gian thực để thiết lập hệ thống phòng đấu, kết nối trực tuyến nhiều người chơi với độ trễ thấp và trải nghiệm vận hành ổn định.
  3. Thiết lập hệ thống tùy biến nhân vật phong phú thông qua cơ chế kỹ năng nâng cấp, hệ thống phép bổ trợ và hệ thống ngọc bổ trợ, đảm bảo tính chiến thuật công bằng.
  4. Triển khai website độc lập để phân phối, cho phép người dùng tải và cài đặt bộ cài trò chơi mà không áp đặt bất kỳ khoản phí nào.

Đối tượng và phạm vi nghiên cứu của đồ án:

  • Đối tượng nghiên cứu: Quy trình phân tích, thiết kế, lập trình và triển khai trò chơi đối kháng trực tuyến 2D nhiều người chơi; các giải pháp đồng bộ hóa mạng trong game.
  • Phạm vi không gian và nền tảng: Trò chơi được phát triển và tối ưu hóa chuyên biệt cho các thiết bị máy tính cá nhân chạy hệ điều hành Windows. Hệ thống máy chủ mạng được quản lý qua dịch vụ đám mây và website triển khai đặt trên máy chủ ảo VPS.
  • Thời gian thực hiện: Đồ án được hoàn thành và bảo vệ vào tháng 04 năm 2024 dưới sự hướng dẫn của ThS. Nguyễn Thị Minh Nương.

Cơ sở lý thuyết và phương pháp

Đồ án áp dụng phương pháp phân tích và thiết kế hệ thống hướng đối tượng thông qua ngôn ngữ mô hình hóa thống nhất (UML - Unified Modeling Language). Toàn bộ các tương tác của hệ thống được chi tiết hóa bằng các biểu đồ Use Case tổng quát, đặc tả Use Case chi tiết (Use Case Specification) và các sơ đồ tuần tự (Sequence Diagram).

Hệ thống công nghệ và nền tảng được tác giả lựa chọn để xây dựng giải pháp bao gồm:

Thành phần Công nghệ / Nền tảng sử dụng Vai trò và đặc tính kỹ thuật
Game Engine Unity Engine (C#) Động cơ phát triển đa nền tảng, tích hợp hệ thống vật lý 2D, Animation clips, TextMesh Pro và hệ thống quản lý Prefab.
Hạ tầng Mạng Photon 2 (Photon Realtime, PUN) Quản lý kết nối mạng phân tán, đồng bộ hóa trạng thái trận đấu thời gian thực, quản lý sảnh (Lobby) và phòng chơi (Room).
Xử lý Đồ họa Adobe Photoshop Biên tập, tối ưu hóa sprite nhân vật, hiệu ứng chiêu thức và thiết kế giao diện đồ họa người dùng theo phong cách Pixel Art.
Nền tảng Web HTML, Tailwind CSS, JavaScript, VPS Xây dựng website phân phối game độc lập (wibupixel.online) và hỗ trợ tải gói cài đặt trực tiếp.
Nguồn Tài nguyên The Spriters Resource, Open Game Art, DeviantArt, itch.io Khai thác các tài nguyên hình ảnh sprite 2D, hình nền và hiệu ứng âm thanh mở phục vụ phát triển game độc lập.
Lưu trữ Cục bộ Cơ chế PlayerPrefs (Unity) Lưu trữ các cặp khóa - giá trị (Key-Value) nhỏ cho cấu hình hiển thị, âm thanh và thông tin người chơi cục bộ.

Thiết kế và triển khai

1. Cấu trúc thư mục dự án

Mã nguồn và tài nguyên của trò chơi trong môi trường Unity Editor được phân cấp thành 10 thư mục chức năng chính:

  • Animations: Lưu trữ các clip hoạt ảnh (animation clips) của nhân vật và hiệu ứng.
  • Font: Chứa các bộ tệp phông chữ phục vụ hiển thị văn bản trong game.
  • Images: Lưu trữ hình nền, sprite nhân vật và các thành phần đồ họa giao diện.
  • Music: Lưu trữ âm thanh nền, hiệu ứng âm thanh kỹ năng và giọng lồng tiếng nhân vật.
  • Photon: Chứa thư viện SDK và cấu hình kết nối mạng Photon Unity Networking.
  • Prefab: Các đối tượng giao diện và thực thể game được thiết kế sẵn để tái sử dụng động.
  • Resources: Lưu trữ tài nguyên tải động vào bộ nhớ trong quá trình chạy trò chơi.
  • Scripts: Toàn bộ mã nguồn C# điều khiển logic trò chơi, sảnh chờ, kết nối mạng và quản lý dữ liệu.
  • Settings: Chứa các tệp thiết lập cấu hình hệ thống, điều khiển và âm thanh.
  • TextMesh Pro: Tài nguyên hỗ trợ xử lý và kết xuất đồ họa chữ độ phân giải cao.

2. Thiết kế logic mã nguồn và giao diện người dùng

Hệ thống giao tiếp giữa giao diện người dùng (UI) và logic vận hành được lập trình bằng ngôn ngữ C# thông qua cơ chế lắng nghe sự kiện của Unity Engine.

using UnityEngine;
using UnityEngine.UI;

public class ButtonHandler : MonoBehaviour 
{
    // Tham chiếu đến thành phần Button trên giao diện
    public Button myButton;

    void Start() 
    {
        // Gắn sự kiện lắng nghe khi người dùng nhấn nút
        myButton.onClick.AddListener(TaskOnClick);
    }

    void TaskOnClick() 
    {
        Debug.Log("Button Clicked!");
        // Thực thi các logic chức năng tương ứng
    }
}

3. Thiết kế cơ sở dữ liệu và lưu trữ

Thay vì sử dụng hệ quản trị cơ sở dữ liệu quan hệ phức tạp đòi hỏi nhiều tài nguyên quản trị, tác giả sử dụng cơ chế PlayerPrefs có sẵn trong Unity. Cơ chế này lưu trữ trực tiếp các dữ liệu định dạng khóa - giá trị (Key-Value) với dung lượng nhỏ trên máy khách (Client), bao gồm: tên người chơi, cài đặt âm lượng (nhạc nền, hiệu ứng, giọng nói), độ phân giải màn hình, chế độ toàn màn hình, và tùy chọn ẩn/hiện các thông số trong trận đấu.


Nội dung chính theo từng chương

Chương 1: Giới thiệu đề tài

Chương 1 trình bày lý do chọn đề tài, khảo sát thị trường game đối kháng trực tuyến và xác định khoảng trống thị trường cho cộng đồng người hâm mộ văn hóa manga/anime Nhật Bản. Tác giả xây dựng kịch bản trò chơi dựa trên ý tưởng một "quyển sách manga huyền bí", nơi các nhân vật từ các bộ truyện nổi tiếng (như hải tặc trong One Piece, ninja sử dụng kết ấn trong Naruto, hay chiến binh Saiyan) được triệu hồi vào đấu trường chung.

Chương này cũng phân tích chi tiết các công nghệ được lựa chọn: động cơ Unity, nền tảng mạng Photon 2 (bao gồm Photon Realtime, PUN, Photon Voice, Photon Chat), phần mềm đồ họa Adobe Photoshop, bộ công nghệ web (HTML, Tailwind CSS, JavaScript, VPS) và các nguồn tài nguyên mở (DeviantArt, The Spriters Resource, Open Game Art, itch.io).

Chương 2: Phân tích và thiết kế hệ thống

Chương 2 tập trung vào việc mô hình hóa hệ thống bằng UML. Tác nhân chính được xác định là Người dùng. Tác giả thực hiện đặc tả chi tiết và xây dựng sơ đồ tuần tự cho 11 Use Case nòng cốt:

                  +---------------------------------------------------+
                  |                 HỆ THỐNG WIBUPIXEL                |
                  +---------------------------------------------------+
                                            |
        +------------------+----------------+------------------+------------------+
        |                  |                |                  |                  |
+---------------+  +---------------+  +---------------+  +---------------+  +---------------+
|  Đặt tên NV   |  |   Chọn NV     |  | Chọn kỹ năng  |  | Phép bổ trợ   |  |   Chọn Ngọc   |
| (3-15 ký tự)  |  |  (Danh sách)  |  |  (Max cấp 3)  |  | (9 loại phép) |  | (Chọn 6/18 ngọc)|
+---------------+  +---------------+  +---------------+  +---------------+  +---------------+
        |                  |                |                  |                  |
        +------------------+----------------+------------------+------------------+
                                            |
        +------------------+----------------+------------------+------------------+
        |                  |                |                  |                  |
+---------------+  +---------------+  +---------------+  +---------------+  +---------------+
|  Cài đặt Game |  |  Tạo phòng    |  |   Tìm phòng   |  |  Vào trận đấu |  |    Nhắn tin   |
| (Đồ họa, Âm)  |  |  (Chủ phòng)  |  | (3 hình thức) |  | (FPS, Ping, HP|  | (Sảnh / Trận) |
+---------------+  +---------------+  +---------------+  +---------------+  +---------------+
  1. Đặt tên nhân vật: Áp dụng khi người chơi đăng nhập lần đầu hoặc chỉnh sửa qua biểu tượng cây bút. Ràng buộc độ dài từ 3 đến 15 ký tự, không chứa ký tự đặc biệt.
  2. Chọn nhân vật: Cho phép người dùng duyệt và chọn nhân vật manga từ danh sách có sẵn.
  3. Chọn kỹ năng: Quản lý kỹ năng của nhân vật, cho phép nâng cấp tối đa 3 lần để gia tăng sức mạnh hoặc hiệu ứng.
  4. Chọn phép bổ trợ: Cung cấp danh sách 9 phép bổ trợ chiến thuật:
    • Hồi máu: Phục hồi một phần lượng máu tối đa.
    • Hồi năng lượng: Phục hồi năng lượng sử dụng chiêu thức.
    • Tốc biến: Gia tăng tốc độ di chuyển tức thời về phía trước.
    • Triple Jump: Cho phép nhân vật thực hiện 3 lần nhảy liên tiếp.
    • Kháng: Giảm sát thương nhận vào, miễn nhiễm bạo kích và hiệu ứng khống chế trong thời gian nhất định.
    • Lá chắn: Tạo lớp giáp ảo hấp thụ sát thương.
    • Đòn kết liễu: Tăng sát thương và tỷ lệ đòn đánh bạo kích.
    • Khát máu: Hút máu dựa trên lượng sát thương gây ra cho đối phương.
    • Sát thương chuẩn: Gây sát thương trực tiếp bỏ qua giáp và khả năng né tránh.
  5. Chọn ngọc: Hệ thống cung cấp 18 loại ngọc gia tăng chỉ số (Sát thương, Phòng thủ, Năng lượng, Hồi năng lượng, Bạo kích, Sát thương Bạo kích, Né tránh, Giảm hồi máu, Kháng, Đâm xuyên, Tốc độ đánh, Giảm thời gian hồi chiêu, Choáng, Ngọc Thường...). Người chơi được trang bị tối đa 6 viên ngọc và được phép chọn các viên trùng lặp.
  6. Cài đặt hệ thống: Tùy chỉnh độ phân giải, chế độ toàn màn hình/cửa sổ, ẩn/hiện tên người chơi, tên nhân vật, số sát thương hiển thị, khung chat, âm lượng nhạc nền, hiệu ứng, giọng nói và gán phím di chuyển.
  7. Tạo phòng đấu: Khởi tạo phòng chơi mới kèm ID riêng biệt. Người tạo giữ vai trò "Chủ phòng" với các đặc quyền: hiển thị danh hiệu chủ phòng, kick (đuổi) người chơi khác ra khỏi phòng và nhấn nút bắt đầu trận đấu.
  8. Tìm phòng đấu: Hỗ trợ 3 phương thức tham gia: chọn phòng trực tiếp từ danh sách hiển thị, nhập mã ID phòng, hoặc sử dụng tính năng tìm phòng ngẫu nhiên (vào nhanh).
  9. Bắt đầu trận đấu: Kiểm tra điều kiện đủ 2 người chơi trong phòng; chỉ chủ phòng mới có quyền kích hoạt chuyển cảnh sang màn hình thi đấu.
  10. Trận đấu: Xử lý va chạm vật lý, di chuyển, tung kỹ năng, kích hoạt phép bổ trợ, cập nhật chỉ số ngọc, hiển thị thông số hiệu năng (FPS, Ping, thời gian). Trận đấu kết thúc khi một bên cạn thanh máu (HP = 0).
  11. Nhắn tin: Giao tiếp dạng văn bản giữa hai người chơi trong sảnh chờ hoặc trực tiếp trong trận đấu.

Chương 3: Xây dựng phần mềm

Chương 3 trình bày việc hiện thực hóa toàn bộ các bản vẽ thiết kế thành sản phẩm phần mềm thực tế. Tác giả mô tả chi tiết giao diện và quy trình xử lý của các màn hình chức năng:

  • Trang web phân phối (wibupixel.online): Đóng vai trò cổng thông tin giới thiệu và cung cấp liên kết tải tệp cài đặt cho người dùng Windows.
  • Màn hình Loading & Kết nối Server: Thực hiện khởi tạo mạng Photon, kiểm tra định danh người dùng và tải tài nguyên.
  • Màn hình Trang chủ, Đặt tên và Thông tin nhân vật: Giao diện trực quan cho phép người dùng cấu hình hồ sơ và xem thông số.
  • Màn hình Sảnh chờ (Lobby), Danh sách phòng & Tạo/Tìm phòng: Hiển thị danh sách các phòng chơi hiện có cùng trạng thái phòng.
  • Màn hình Tùy chỉnh (Chọn nhân vật, Phép bổ trợ, Ngọc, Cài đặt): Bố cục trực quan dạng lưới để người chơi chuẩn bị chiến thuật.
  • Màn hình Phòng đấu & Trận đấu: Đồng bộ hóa hoạt ảnh chiến đấu, hiệu ứng chiêu thức, thanh máu và các thông số mạng.
  • Màn hình Kết thúc trận đấu: Phân định kết quả với hai giao diện thông báo riêng biệt ("Bạn Chiến Thắng" hoặc "Bạn Đã Thua") trước khi đưa người chơi trở về sảnh chính.

Phần phụ lục của đồ án cung cấp chi tiết 5 tệp mã nguồn C# nòng cốt điều khiển hệ thống: Loading.cs, ChampsManager.cs, Menu.cs, Lobby.cs và Game.cs.

Chương 4: Kết quả đạt được, hạn chế và hướng phát triển

Chương 4 tổng kết các hạng mục đã hoàn thành của đồ án, đồng thời thẳng thắn chỉ ra những điểm còn tồn tại trong quá trình thử nghiệm thực tế và đề ra các định hướng hoàn thiện trong tương lai.


Kết quả và đóng góp

Đồ án đã hoàn thành đầy đủ các mục tiêu đề ra về mặt kỹ thuật và sản phẩm ứng dụng:

  • Xây dựng thành công tựa game đối kháng trực tuyến 2D hoàn chỉnh "WibuPixel" chạy trên hệ điều hành Windows, kết hợp hài hòa phong cách đồ họa Pixel Art với hình tượng các nhân vật truyện tranh Nhật Bản.
  • Tích hợp thành công nền tảng mạng Photon 2 (PUN), cho phép kết nối ổn định hai người chơi qua mạng Internet với đầy đủ các tính năng: sảnh chờ, tạo/tìm phòng đấu (danh sách, mã ID, ghép ngẫu nhiên), chat văn bản và đồng bộ hóa trận đấu thời gian thực.
  • Thiết kế hệ thống gameplay có chiều sâu chiến thuật với cơ chế kỹ năng nâng cấp 3 cấp độ, 9 phép bổ trợ đa dạng và hệ thống 18 loại ngọc thuộc tính (cho phép kết hợp 6 ngọc tùy ý).
  • Xây dựng website phân phối độc lập sử dụng Tailwind CSS trên hạ tầng VPS, cung cấp giải pháp tiếp cận trò chơi hoàn toàn miễn phí, loại bỏ các hình thức thu phí nạp tiền hay ép buộc cày cuốc.

Hạn chế và hướng nghiên cứu tiếp

1. Hạn chế còn tồn đọng

  • Trò chơi hiện chỉ hỗ trợ duy nhất nền tảng máy tính cá nhân (Windows PC), chưa thể mở rộng sang nền tảng di động (Android, iOS) do cơ chế điều khiển đối kháng phức tạp đòi hỏi nhiều thao tác bàn phím.
  • Chưa thể phát hành lên các nền tảng phân phối game thương mại lớn (như Steam) do rào cản chi phí đăng ký (~2.000.000 VNĐ/game) và quy trình kiểm duyệt nghiêm ngặt.
  • Các tính năng cộng đồng trên website và mạng xã hội mới chỉ dừng lại ở mức cơ bản, chưa xây dựng được hệ thống giải đấu và bảng xếp hạng trực tuyến tự động.

2. Hướng phát triển trong tương lai

  • Bổ sung thêm nhiều nhân vật mới từ các tác phẩm manga nổi tiếng nhằm làm phong phú kho nhân vật và hoạt cảnh kỹ năng.
  • Tối ưu hóa mã nguồn mạng để tiếp tục hạ thấp độ trễ (Ping) và ổn định tốc độ khung hình (FPS) trên các đường truyền mạng yếu.
  • Hoàn thiện trang cộng đồng (Fanpage, diễn đàn người chơi), tích hợp tính năng chia sẻ thành tích và thách đấu bạn bè trực tiếp qua đường dẫn web.
  • Nghiên cứu mô hình tài trợ hoặc quyên góp (donate) minh bạch khi quy mô cộng đồng tăng trưởng lớn, nhằm duy trì chi phí máy chủ VPS mà vẫn giữ nguyên cam kết miễn phí cho người chơi.

Giá trị tham khảo

Tài liệu đồ án tốt nghiệp này mang lại giá trị tham khảo thiết thực cho:

  • Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Là tài liệu tham khảo chi tiết về quy trình mô hình hóa UML (Use Case, Sequence Diagram) cho một dự án phát triển game thực tế.
  • Người nghiên cứu và phát triển game độc lập (Indie Game Developers): Cung cấp tài liệu tham khảo về việc tích hợp Photon Unity Networking (PUN 2) vào Unity để xử lý logic phòng chơi, đồng bộ chuyển động và quản lý trạng thái chiến đấu nhiều người chơi.
  • Tham khảo mã nguồn: Phần phụ lục chứa mã nguồn chi tiết của các lớp quản lý nòng cốt (ChampsManager, Lobby, Game, Menu, Loading) giúp người học nắm bắt cách tổ chức kiến trúc mã nguồn game C# chuẩn mực trong Unity.

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

1. Trò chơi WibuPixel hỗ trợ nền tảng nào và tại sao tác giả không phát hành lên Steam hay thiết bị di động?
Trò chơi được thiết kế dành riêng cho máy tính chạy hệ điều hành Windows. Tác giả không đưa game lên thiết bị di động (App Store, CH Play) vì hệ thống kỹ năng và di chuyển đối kháng yêu cầu nhiều thao tác phức tạp, không thuận tiện trên màn hình cảm ứng. Đồng thời, game không đưa lên Steam do phí phát hành cao (khoảng 2 triệu VNĐ cho một đầu game), khâu kiểm duyệt khắt khe, và định hướng của tác giả là phát triển phi lợi nhuận để học tập và giải trí miễn phí cho cộng đồng.

2. Công nghệ mạng nào được sử dụng để xử lý chế độ chơi nhiều người và có những tính năng gì?
Dự án sử dụng nền tảng mạng Photon 2 (bao gồm Photon Realtime và Photon Unity Networking - PUN). Nền tảng này đảm nhận việc tạo và quản lý phòng chơi, truyền tải dữ liệu phân tán, đồng bộ hóa trạng thái di chuyển, chiêu thức của nhân vật theo thời gian thực và hỗ trợ tính năng chat giữa người chơi.

3. Hệ thống tùy biến chiến thuật trước trận đấu của WibuPixel gồm những thành phần nào?
Người chơi có thể tùy biến 3 thành phần chính: (1) Chọn nhân vật manga; (2) Chọn 1 trong 9 phép bổ trợ (như Hồi máu, Tốc biến, Triple Jump, Kháng, Khát máu, Sát thương chuẩn...); (3) Chọn tối đa 6 viên ngọc từ danh mục 18 loại ngọc thuộc tính (Sát thương, Bạo kích, Né tránh, Giảm hồi chiêu...) để gia tăng chỉ số trong trận đấu.

4. Dữ liệu cài đặt và cấu hình người chơi được lưu trữ bằng phương pháp nào?
Do lượng dữ liệu cần lưu trữ không quá lớn và không đòi hỏi quan hệ phức tạp, tác giả sử dụng cơ chế PlayerPrefs có sẵn của Unity để lưu trữ dữ liệu dạng cặp khóa - giá trị (Key-Value) trên máy cục bộ, bao gồm tên người chơi và các thông số cài đặt âm thanh, hình ảnh.

5. Người chơi có thể tham gia vào một phòng đấu bằng những cách nào?
Hệ thống cung cấp 3 cách tìm phòng đấu: (1) Chọn trực tiếp một phòng từ danh sách các phòng đang mở trong sảnh chờ; (2) Nhập trực tiếp mã ID phòng do chủ phòng cung cấp; (3) Sử dụng tính năng "Tìm phòng ngẫu nhiên" (Vào nhanh) để hệ thống tự động đưa vào một phòng trống bất kỳ.


Kết luận

Đồ án tốt nghiệp "Game đối kháng WibuPixel" của sinh viên Đào Phú Thịnh đã giải quyết trọn vẹn bài toán xây dựng một trò chơi đối kháng trực tuyến 2D hoàn chỉnh trên nền tảng Windows bằng Unity và Photon 2. Đề tài thể hiện năng lực phân tích hệ thống bài bản qua mô hình UML, thiết kế gameplay có tính chiến thuật và triển khai thành công mô hình phân phối game miễn phí qua website độc lập. Mặc dù còn hạn chế về nền tảng hỗ trợ và quy mô phát hành, đồ án là tài liệu tham khảo kỹ thuật hữu ích cho sinh viên chuyên ngành phát triển game và lập trình mạng trong Unity.