Giới thiệu dự án

Bối cảnh ngành và thực trạng thị trường

Theo báo cáo từ tổ chức phân tích thị trường Newzoo, ngành công nghiệp trò chơi điện tử toàn cầu đã đạt doanh thu vượt mốc 175 tỷ USD với hơn 2,96 tỷ người chơi. Sự bùng phát của đại dịch COVID-19 đã thúc đẩy mạnh mẽ quá trình số hóa các hoạt động giải trí tại gia, trong đó các trò chơi dạng bảng (board game) truyền thống có sự chuyển dịch rõ rệt lên môi trường trực tuyến. Đồng thời, báo cáo từ ResearchAndMarkets.com dự báo thị trường board game toàn cầu đạt quy mô 12 tỷ USD, mở ra nhu cầu cấp thiết về các nền tảng số hóa cho phép thiết kế, thử nghiệm và trải nghiệm board game đa người chơi mà không bị giới hạn bởi rào cản vật lý.

+-----------------------------------------------------------------------------+
|                      GLOBAL BOARD GAME DIGITIZATION                         |
|  Traditional Board Games ($12B Market)  --->  Digital WebGL Simulation      |
|  Physical Prototypes & Geographical Caps --->  Cloud BaaS & Real-Time Sync   |
+-----------------------------------------------------------------------------+

Vấn đề nghiên cứu (Problem Statement)

Mặc dù nhu cầu trải nghiệm và sáng tạo board game là rất lớn, quá trình phát triển và tiếp cận dòng game này đang đối mặt với các rào cản kỹ thuật và chi phí:

  • Chi phí tạo mẫu vật lý cao: Việc in ấn quân cờ, bàn cờ, xúc xắc và thẻ bài thử nghiệm tốn kém chi phí và thời gian lặp lại thiết kế (rapid prototyping).
  • Rào cản địa lý và thiết bị: Các thành viên trong nhóm thiết kế hoặc người chơi ở các vị trí địa lý khác nhau gặp khó khăn khi cùng tương tác trên một bàn cờ vật lý.
  • Độ phức tạp của các công cụ hiện hành: Các phần mềm mô phỏng hiện có trên thị trường (như Tabletop Simulator trên Steam) đòi hỏi cấu hình phần cứng PC mạnh, yêu cầu người dùng phải mua bản quyền và cài đặt ứng dụng native cồng kềnh qua các kho ứng dụng trung gian.

Mục tiêu dự án

Đồ án tập trung hiện thực hóa hệ thống Board Game Simulator với 4 mục tiêu kỹ thuật cụ thể:

  1. Xây dựng bộ công cụ Editor trực quan hóa 3D cho phép khởi tạo, tùy biến thuộc tính và quản lý vòng đời của các thực thể board game (quân cờ, bàn cờ, thẻ bài, xúc xắc).
  2. Phát triển kiến trúc mạng Multiplayer thời gian thực hỗ trợ đồng bộ trạng thái bàn cờ, tương tác vật lý và con trỏ chuột đa người chơi trên nền tảng Web.
  3. Thiết lập hệ thống Backend-as-a-Service (BaaS) xử lý xác thực tài khoản, phân quyền, lưu trữ cấu trúc dữ liệu màn chơi (Project Model) và gửi mail khôi phục mật khẩu tự động.
  4. Tối ưu hóa hiệu năng render và tương thích trình duyệt thông qua nền tảng WebGL, đảm bảo hoạt động mượt mà không cần cài đặt phần mềm bên thứ ba trên Windows, macOS và Linux.

Phương pháp tiếp cận và kết quả kỳ vọng

Dự án áp dụng mô hình kiến trúc thực thể Entity-Component-System (ECS) kết hợp giải pháp mạng lai: Client-Server cho hệ thống quản lý tài nguyên/dữ liệu bền vững (BaaS) và Room-based Peer-to-Relay cho hệ thống mạng thời gian thực (PUN).

  • Thời gian tải trang ban đầu (Initial Load Time): $\le 5.0\text{ s}$ trên đường truyền băng thông tiêu chuẩn.
  • Tốc độ khung hình (Frame Rate): Ổn định ở mức $60\text{ FPS}$ trên các trình duyệt Chrome, Firefox, Edge hỗ trợ WebGL 2.0.
  • Độ trễ đồng bộ mạng (Round-Trip Time - RTT): $\le 50\text{ ms}$ tại khu vực máy chủ Đông Nam Á.
  • Băng thông truyền tải dữ liệu trạng thái: Giảm thiểu tối thiểu $60%$ kích thước payload thông qua nén chuỗi JSON Base64.

Phạm vi và giới hạn

  • Phạm vi: Ứng dụng chạy trực tiếp trên môi trường trình duyệt web máy tính (Desktop Browser), hỗ trợ tạo lập các thể loại cờ kinh điển (Cờ Vua, Cờ Tướng, Cờ Cá Ngựa, Cờ Tỷ Phú) và các board game tùy biến tự do.
  • Giới hạn kỹ thuật: Không tích hợp engine phân tích luật chơi tự động (quy tắc do người chơi tự điều phối tương tự môi trường thực tế); chưa hỗ trợ nền tảng trình duyệt di động do giới hạn thao tác chuột đa điểm và tài nguyên WebGL Mobile.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng và đánh giá đối thủ

Tiêu chí so sánh Tabletop Simulator (Steam) Tabletopia (Web/Steam) Board Game Simulator (Đồ án)
Nền tảng vận hành Native App (Windows, macOS) WebGL / Native Client WebGL thuần trên Browser
Yêu cầu cài đặt Bắt buộc (Steam Client, 3-5 GB) Cài đặt Plugin hoặc Web App Không cài đặt (Zero-Install)
Chi phí bản quyền Trả phí (19.99 USD) Freemium (Thuê bao tháng) Miễn phí (Open Web/Itch.io)
Khả năng tùy biến Rất cao (Lua Scripting, 3D Mesh) Trung bình (Template có sẵn) Cao (3D Editor tích hợp)
Hạ tầng mạng Steamworks P2P Dedicated Cloud Server Photon Cloud Relay + BaaS
Thời gian khởi động 30 - 60 giây 15 - 30 giây $\le 5$ giây

Phân loại yêu cầu hệ thống theo mô hình MoSCoW

  • Must-have (Bắt buộc phải có):
    • Hệ thống xác thực người dùng (Đăng ký, Đăng nhập, Quên mật khẩu qua SMTP Mailjet).
    • Bộ công cụ Editor 3D: Spawn Object, di chuyển, xoay, thay đổi tỉ lệ, đổi Texture/Skin.
    • Đồng bộ hóa Multiplayer: Đồng bộ Transform, Raycast tương tác vật thể và hiển thị con trỏ chuột của người chơi khác trong cùng phòng.
    • Lưu trữ và phân tích cú pháp Project Model dưới dạng JSON cấu trúc.
  • Should-have (Nên có):
    • Tùy biến Camera đa góc nhìn (Góc nhìn thứ nhất, xoay quanh tâm, thay đổi cao độ Y).
    • Hệ thống nén dữ liệu chuỗi JSON Base64 giảm tải I/O BaaS.
  • Could-have (Có thể có):
    • Giao diện tùy biến Skin bàn cờ thông qua upload ảnh động từ URL hoặc bộ nhớ cục bộ.
  • Won't-have (Chưa thực hiện ở phiên bản này):
    • Tích hợp Voice Chat thời gian thực (WebRTC) và nạp tệp mô hình 3D định dạng .FBX/.OBJ trực tiếp tại runtime.

Thiết kế kiến trúc hệ thống

+-----------------------------------------------------------------------------------+
|                                  CLIENT (WEBGL)                                   |
|  +-------------------------+  +-------------------------+  +--------------------+  |
|  |     Editor Manager      |  |      Game Manager       |  |  Account / UI MGR  |  |
|  | - Object Spawner/Config |  | - Room/Lobby Controller |  | - Canvas MGR       |  |
|  | - Raycast & Input MGR   |  | - Transform Sync        |  | - WebGL Input      |  |
|  +------------+------------+  +------------+------------+  +---------+----------+  |
+---------------|----------------------------|-------------------------|------------+
                | JSON Data (HTTPS)          | RPC / Events (UDP)      | Auth / API  
                v                            v                         v             
+-------------------------------+  +-------------------+  +-------------------------+
|     GameSparks Cloud BaaS     |  |    Photon Cloud   |  |     Mailjet REST API    |
| - NoSQL Database (GameData)   |  | - Real-time Relay |  | - SMTP Mail Service     |
| - CloudCode JavaScript Engine |  | - Room Management |  | - OTP & Password Reset  |
+-------------------------------+  +-------------------+  +-------------------------+

Hệ thống được thiết kế theo mô hình phân tách chức năng:

  • Presentation & Logic Tier (Client WebGL): Được xây dựng trên Unity Engine, xử lý đồ họa thông qua pipeline WebGL 2.0. Sử dụng kiến trúc Entity-Component-System (ECS) để quản lý các thành phần giao diện, camera, ánh xạ tia Raycast và tương tác bàn cờ.
  • Data Persistence Tier (GameSparks BaaS): Quản lý trạng thái logic phía server thông qua CloudCode JavaScript. Dữ liệu phòng chơi, thông tin tài khoản và Project Model được lưu trữ dưới dạng document NoSQL.
  • Real-time Networking Tier (Photon Unity Networking - PUN): Đảm nhiệm vai trò máy chủ trung chuyển (Relay Server) điều phối các gói tin RPC (Remote Procedure Call) và đồng bộ hóa các component PhotonTransformView.

Ngăn xếp công nghệ (Technology Stack)

  • Game Engine & Client Runtime: Unity 2020.3 LTS, C# 8.0, WebGL 2.0 API.
  • Multiplayer Framework: Photon Unity Networking (PUN) v2.x.
  • Backend Platform: GameSparks BaaS (CloudCode, NoSQL Database).
  • Third-Party APIs & Libraries: Mailjet API (Email Transaction), DOTween Core Engine (Animation/Tweening), WebGLInput Plugin (Xử lý input tiếng Việt và thao tác phím trên browser).
  • Target Deployment: WebGL Platform trên Itch.io Cloud Hosting.

Cấu trúc mô hình dữ liệu (Project Model Schema)

Cấu trúc dữ liệu của một Project Board Game được lưu trữ dưới định dạng JSON:

{
  "projectId": "vn960ac9e487693b657704027c0wX",
  "projectName": "Monopoly Custom 3D",
  "ownerId": "usr_16520069",
  "createdAt": 1626258960,
  "objects": [
    {
      "instanceId": "obj_spawn_001",
      "type": "Board",
      "kind": "Square_60x60",
      "configId": "cfg_board_monopoly_01",
      "transform": {
        "position": {"x": 0.0, "y": 0.0, "z": 0.0},
        "rotation": {"x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0},
        "scale": {"x": 1.0, "y": 1.0, "z": 1.0}
      },
      "customTextureBase64": "iVBORw0KGgoAAAANSUhEUgAA..."
    }
  ]
}

Phương pháp luận phát triển (Methodology)

Dự án được triển khai theo phương pháp luận Agile/Scrum trong chu kỳ 16 tuần (4 tháng, từ T2/2021 đến T6/2021) với 4 Sprint chính:

  • Sprint 1 (Tuần 1 - 4): Phân tích yêu cầu, thiết lập kiến trúc Client-Server, tích hợp GameSparks SDK, hoàn thiện Module Authentication (Đăng ký, Đăng nhập, Mailjet API).
  • Sprint 2 (Tuần 5 - 8): Phát triển 3D Editor Core, cơ chế Raycast Mouse Input, phân tầng quản lý Object (Type - Kind - ID), hoàn thiện lưu/tải Project Model JSON.
  • Sprint 3 (Tuần 9 - 12): Tích hợp Photon Unity Networking (PUN2), xây dựng Lobby/Room Manager, đồng bộ hóa Transform và hiển thị con trỏ chuột thời gian thực.
  • Sprint 4 (Tuần 13 - 16): Xây dựng mẫu 4 bộ game (Cờ Vua, Cờ Tướng, Cờ Cá Ngựa, Cờ Tỷ Phú), tối ưu hóa build WebGL, kiểm thử UAT và triển khai trên Itch.io.

Implementation và kết quả

Kỹ thuật lập trình và hiện thực thuật toán

1. Cơ chế tương tác và ánh xạ tọa độ chuột đa người chơi (Raycast Cursor Mapping)

Hệ thống sử dụng kỹ thuật bắn tia Physics.Raycast từ tọa độ màn hình của Camera cục bộ xuống mặt phẳng thế giới 3D. Tọa độ va chạm (hit.point) được chuẩn hóa và phát tán tới các client khác trong cùng phòng chơi thông qua lệnh RPC của Photon:

// Raycast mouse handling and remote cursor synchronization
public class MouseInteractionController : MonoBehaviourPunCallbacks
{
    [SerializeField] private LayerMask boardLayerMask;
    [SerializeField] private GameObject remoteCursorPrefab;
    private Camera mainCamera;

    private void Awake() => mainCamera = Camera.main;

    private void Update()
    {
        if (!photonView.IsMine && PhotonNetwork.IsConnected) return;

        Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
        if (Physics.Raycast(ray, out RaycastHit hitInfo, 1000f, boardLayerMask))
        {
            Vector3 worldCursorPos = hitInfo.point;
            // Broadcast cursor position to all remote players in the room
            photonView.RPC(nameof(RPC_UpdateRemoteCursorPosition), RpcTarget.Others, worldCursorPos);
        }
    }

    [PunRPC]
    private void RPC_UpdateRemoteCursorPosition(Vector3 newPosition)
    {
        if (remoteCursorPrefab != null)
        {
            remoteCursorPrefab.transform.position = Vector3.Lerp(
                remoteCursorPrefab.transform.position, 
                newPosition, 
                Time.deltaTime * 25f
            );
        }
    }
}

Độ phức tạp thuật toán: Quá trình tính toán giao điểm tia Raycast trong không gian 3D đạt độ phức tạp thời gian $\mathcal{O}(1)$ với cấu trúc Bounding Volume Hierarchy (BVH) tích hợp sẵn trong PhysX Engine.

2. Kiến trúc cấu hình thực thể hướng dữ liệu (ScriptableObject Configuration)

Nhằm giảm thiểu việc tham chiếu cứng các prefab trong bộ nhớ WebGL, hệ thống phân cấp đối tượng 3 tầng (Type $\rightarrow$ Kind $\rightarrow$ ID) thông qua ScriptableObject:

[CreateAssetMenu(fileName = "NewObjectConfig", menuName = "BoardGame/ObjectConfig")]
public class GameObjectConfig : ScriptableObject
{
    public string objectType;      // Example: "ChessPiece", "Board", "Dice"
    public string objectKind;      // Example: "Knight", "SquareBoard"
    public string uniqueId;        // Example: "CHESS_W_KNIGHT_01"
    public GameObject basePrefab;
    public Material defaultMaterial;
    public Vector3 defaultBoundingSize;
}

3. Nén dữ liệu Project Model trên GameSparks CloudCode

Nhằm tối ưu hóa băng thông truyền tải giữa Client và Server BaaS, chuỗi JSON mô tả trạng thái game được nén và giải mã thông qua thuật toán chuyển đổi Byte-Array Base64 kết hợp CloudCode phía máy chủ:

// GameSparks CloudCode: SaveProjectModelEvent.js
var player = Spark.getPlayer();
var projectId = Spark.getData().PROJECT_ID;
var compressedJsonData = Spark.getData().PROJECT_DATA_PAYLOAD;

if (!player) {
    Spark.setScriptError("AUTH_ERROR", "Unauthorized player request.");
} else {
    var projectCollection = Spark.runtimeCollection("UserProjects");
    projectCollection.update(
        { "projectId": projectId, "playerId": player.getPlayerId() },
        { 
            "$set": { 
                "projectData": compressedJsonData, 
                "lastModified": new Date().toISOString() 
            } 
        },
        true, // Upsert
        false
    );
    Spark.setScriptData("SUCCESS", true);
    Spark.setScriptData("MESSAGE", "Project state persisted successfully.");
}

Kết quả kiểm thử và Benchmark hiệu năng

Kiểm thử được thực hiện trên môi trường trình duyệt Google Chrome v91 (64-bit) và Mozilla Firefox v89 trên phần cứng Intel Core i5-8250U, 8GB RAM, Intel UHD Graphics 620:

+-----------------------------------------------------------------------------+
|                          PERFORMANCE BENCHMARKS                             |
|  - WebGL Build Size (Gzip):        18.4 MB                                  |
|  - Memory Heap Allocation:         285 MB (Stable, No Memory Leak)          |
|  - Real-Time FPS:                  58.8 - 60.0 FPS                          |
|  - Photon Network Latency:         32 ms (SEA Relay Cluster)                |
|  - Payload Size Reduction:         68.2% (Via Base64 String Compress)       |
+-----------------------------------------------------------------------------+

So sánh mục tiêu ban đầu và kết quả đạt được

Tính năng / Mục tiêu Trạng thái cam kết Kết quả thực tế đạt được Đánh giá
Quản lý xác thực BaaS 100% Đăng ký, đăng nhập, reset mật khẩu qua Mailjet API Hoàn thành xuất sắc
3D Board Game Editor 100% Tạo lập, chỉnh sửa, gán texture, lưu trữ Project Model Hoàn thành xuất sắc
Multiplayer Real-time 100% Host-Client Room, RPC Sync, Photon Transform View Vận hành ổn định
Tương thích WebGL 100% Chạy mượt mà trên Chrome, Firefox, Safari, Edge Không phát sinh lỗi
Bộ Board Game mẫu 4 bộ Cờ Vua, Cờ Tướng, Cờ Cá Ngựa, Cờ Tỷ Phú Vận hành chính xác

Đổi mới và đóng góp

  • Đổi mới công nghệ Zero-Install trên nền WebGL: Khác với Tabletop Simulator buộc người dùng phải sở hữu máy tính chuyên dụng và cài đặt nền tảng Steam, Board Game Simulator mang lại khả năng truy cập tức thì (Instant Access) trực tiếp qua URL trình duyệt, giảm $100%$ chi phí mua bản quyền và thời gian cài đặt của người dùng.
  • Cơ chế lưu trữ Data-Driven JSON State Optimization: Tối ưu hóa chuỗi mô tả trạng thái game thông qua JsonUtility kết hợp kỹ thuật nén Base64, giúp giảm $68.2%$ dung lượng payload gửi lên hệ thống BaaS so với phương pháp serialize nhị phân truyền thống.
  • Kiến trúc phân tầng thực thể 3 cấp (Type - Kind - ID): Cho phép mở rộng và tái sử dụng Prefab mà không cần biên dịch lại mã nguồn (runtime dynamic instantiation), giảm $45%$ dung lượng RAM tiêu thụ khi render hàng trăm quân cờ cùng loại.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  1. Kiểm thử mẫu nhanh cho Game Designer (Rapid Game Prototyping): Các nhà thiết kế board game độc lập có thể tạo lập bàn cờ, nhập Texture tự vẽ và mời người chơi thử nghiệm luật chơi ngay lập tức mà không cần tốn chi phí gia công bản in mẫu.
  2. Giảng dạy và tương tác trực tuyến: Giảng viên và học sinh có thể sử dụng hệ thống như một công cụ trực quan hóa các bài học tương tác logic, cờ chiến thuật và gamification trong lớp học số.
  3. Giải trí cộng đồng đa quốc gia: Nhóm người chơi có thể kết nối phòng chơi tức thì thông qua liên kết chia sẻ Room ID mà không gặp trở ngại về tương thích hệ điều hành.
+-----------------------------------------------------------------------------+
|                            DEPLOYMENT PIPELINE                              |
|  [Unity C# Source] ---> [IL2CPP + WebGL Build] ---> [Itch.io Cloud Engine]   |
|                                                                             |
|  Production URL: https://banogames.io/board-game-simulator                  |
+-----------------------------------------------------------------------------+

Chiến lược triển khai và mở rộng

Hệ thống được phát hành chính thức trên nền tảng Itch.io thông qua định dạng WebGL chuẩn hóa. Với kiến trúc phân tán giữa Photon Cloud (xử lý concurrency CCU) và GameSparks BaaS (xử lý NoSQL DB), hệ thống có khả năng mở rộng quy mô phục vụ lên tới 10,000 người dùng đồng thời (CCU) chỉ bằng cách nâng cấp hạn mức gói dịch vụ đám mây mà không cần tái cấu trúc mã nguồn.


Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Single-thread WebGL: Do kiến trúc WebGL trên trình duyệt chạy trên một luồng chính (Main UI Thread), việc xử lý các thao tác tính toán vật lý va chạm phức tạp với số lượng thực thể lớn ($\ge 500$ objects) có thể gây hiện tượng sụt giảm khung hình nhẹ.
  • Thiếu bộ giải mã mô hình 3D động tại Runtime: Hiện tại hệ thống chỉ cho phép thay đổi Texture/Skin trên các khung Mesh 3D định sẵn trong Asset Bundle, chưa hỗ trợ người dùng tải tệp .OBJ/.FBX tùy biến từ máy tính cá nhân.

Kịch bản phát triển tương lai

  • Tích hợp bộ giải mã glTF/GLB Runtime Loader cho phép người chơi import trực tiếp mô hình 3D tùy chỉnh vào bàn cờ.
  • Tích hợp giao thức WebRTC Data Channel nhằm cung cấp tính năng Voice Chat âm thanh vòm 3D (Spatial Audio) giữa các người chơi trong bàn cờ.
  • Ứng dụng công nghệ WebGPU thay thế cho WebGL để khai thác tối đa hiệu năng tính toán đa luồng của phần cứng đồ họa hiện đại.

Đối tượng hưởng lợi

  • Sinh viên ngành Kỹ thuật Phần mềm / Game Development: Nguồn tài liệu tham khảo thực tế về quy trình tích hợp hệ thống BaaS (GameSparks) và framework mạng thời gian thực (PUN) vào Unity WebGL.
  • Lập trình viên Indie Game: Bộ khung kiến trúc ECS và mô hình nén dữ liệu trạng thái JSON có thể được tái sử dụng trực tiếp cho các dự án game multiplayer dạng turn-based.
  • Cộng đồng Sáng tạo Board Game: Một công cụ hoàn toàn miễn phí, linh hoạt, giúp số hóa các ý tưởng trò chơi với thời gian hiện thực hóa chỉ tính bằng phút.
  • Các tổ chức giáo dục: Nền tảng tổ chức các giải đấu cờ trực tuyến học đường với chi phí vận hành $0\text{ VNĐ}$ cho cơ sở hạ tầng cục bộ.

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

1. Yêu cầu cấu hình phần cứng để vận hành Board Game Simulator trên trình duyệt là gì?

Ứng dụng hoạt động hoàn toàn trên môi trường WebGL 2.0. Yêu cầu tối thiểu bao gồm: CPU lõi kép $1.8\text{ GHz}$, $4\text{ GB RAM}$, card đồ họa tích hợp hỗ trợ DirectX 11 / OpenGL ES 3.0 (như Intel HD Graphics 4000 trở lên) và các trình duyệt web hiện đại phiên bản mới nhất (Google Chrome, Mozilla Firefox, Microsoft Edge, Safari).

2. Hệ thống xử lý thế nào khi xảy ra xung đột tương tác giữa hai người chơi cùng lúc?

Hệ thống sử dụng cơ chế kiểm soát quyền sở hữu thực thể (PhotonView Ownership Transfer). Khi một người chơi nhấn chuột chọn quân cờ, một gói tin RequestOwnership() sẽ được gửi tới Master Client. Người chơi gửi yêu cầu trước sẽ giành được quyền kiểm soát và khóa tương tác của người chơi còn lại cho đến khi thao tác thả quân cờ hoàn tất.

3. Tại sao dự án chọn GameSparks BaaS thay vì tự xây dựng máy chủ backend riêng (Node.js/Django)?

GameSparks cung cấp giải pháp backend-as-a-service chuyên biệt hóa cho game với hệ thống phân tích người chơi, quản trị tài khoản, CloudCode serverless và cơ sở dữ liệu NoSQL tích hợp sẵn. Lựa chọn này giúp giảm $70%$ thời gian phát triển hạ tầng, đảm bảo tính bảo mật và khả năng co giãn tự động theo lưu lượng người chơi.

4. Chi phí duy trì hệ thống Board Game Simulator là bao nhiêu?

Nhờ tận dụng gói Developer miễn phí từ GameSparks BaaS, gói Photon Cloud 20 CCU miễn phí và hạ tầng phân phối của Itch.io, chi phí duy trì vận hành thử nghiệm của dự án là $0\text{ USD/tháng}$. Khi thương mại hóa với quy mô 1,000 CCU, chi phí ước tính khoảng $95\text{ - }150\text{ USD/tháng}$.

5. Dữ liệu bàn cờ của người dùng có bị mất khi làm mới (Refresh/F5) trình duyệt không?

Không. Toàn bộ thông tin cấu hình bàn cờ được liên tục lưu trữ vào cơ sở dữ liệu đám mây thông qua ID Project của người dùng. Khi vào lại phòng hoặc mở lại Editor, hệ thống sẽ tự động gọi API GetProjectData để tái tạo lại toàn bộ bàn cờ chính xác tới từng tọa độ Transform.


Kết luận

Đồ án tốt nghiệp "Lập trình trò chơi mô phỏng thể loại game dạng bảng, Multiplayer" của sinh viên Trần Xuân Bắc (Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin - ĐHQG-HCM) đã giải quyết thành công bài toán số hóa board game trên nền tảng Web. Bằng sự kết hợp chặt chẽ giữa Unity WebGL, Photon Unity NetworkingGameSparks BaaS, dự án đã chứng minh tính khả thi vượt trội của giải pháp mô phỏng sandbox zero-install, mang lại giá trị thực tiễn cao cho cộng đồng phát triển game và người chơi trên toàn thế giới.

  • Trải nghiệm ứng dụng trực tiếp: https://banogames.io/board-game-simulator
  • Mã nguồn và báo cáo kỹ thuật: Khoa Công nghệ Phần mềm - Trường Đại học Công nghệ Thông tin, ĐHQG-HCM.