Các mô-đun chức năng chính
Quản lý đội
- Tạo/Giải tán đội: Người chơi khởi tạo hoặc kết thúc nhóm
- Thành viên: Thêm/Xóa thành viên, duy trì danh sách
- Quyền trưởng nhóm: Chuyển quyền, quản lý hành động đặc quyền
- Trạng thái đội: Cập nhật tình trạng trực tuyến và sẵn sàng
Mời và xin tham gia
- Cơ chế mời: Trưởng nhóm hoặc thành viên mời người chơi khác
- Cơ chế xin vào đội: Người chơi gửi yêu cầu tham gia nhóm công khai
- Thông báo: Hiển thị yêu cầu mời/xin tham gia theo thời gian thực
Truyền thông và đồng bộ
- Trò chuyện: Hỗ trợ chat văn bản và thoại trong nhóm
- Đồng bộ trạng thái: Cập nhật tức thời tình trạng thành viên
- Phát sự kiện: Thông báo sự kiện thay đổi thành viên
Ghép trận và chơi theo đội
- Ghép nhóm: Đảm bảo cả đội vào trận cùng nhau
- Phân bổ trong trận: Chia đội và vai trò khi bắt đầu trận đấu
- Liên máy chủ: Hỗ trợ chơi chéo giữa các server
Bảo mật và quyền hạn
- Phân quyền: Phân biệt quyền trưởng nhóm và thành viên
- Chống gian lận: Ngăn hành vi phá hoại hoặc lợi dụng
- An toàn dữ liệu: Bảo vệ thông tin đội khi truyền tải
Kiến trúc hệ thống
Máy khách
- Giao diện: Hiển thị UI quản lý đội
- Xử lý: Quản lý trạng thái và xử lý sự kiện
- Mạng: Giao tiếp với máy chủ
Máy chủ
- Dịch vụ đội: Quản lý dữ liệu nhóm và xử lý yêu cầu
- Dịch vụ chat: Xử lý tin nhắn nội bộ đội
- Dịch vụ ghép trận: Logic ghép đội vào trận đấu
- Xác thực: Kiểm tra quyền hạn thao tác
Mẫu cấu trúc dữ liệu
class NguoiChoi {
string id;
string ten;
bool online;
bool sanSang;
bool laTruongDoi;
};
class Doi {
string doiId;
NguoiChoi truongDoi;
List<NguoiChoi> thanhVien;
string trangThai; // VD: Cho, DangGhep, TrongGame
};
Quy trình hoạt động
Khởi tạo đội
- Người chơi gửi yêu cầu tạo đội tới máy chủ
- Máy chủ tạo ID đội mới, thiết lập trưởng nhóm
- Máy chủ xác nhận thành công, cập nhật giao diện
Mời thành viên
- Trưởng nhóm gửi lời mời
- Máy chủ chuyển thông báo tới người được mời
- Người chơi chấp nhận, máy chủ thêm vào đội
- Thông báo cập nhật tới toàn bộ thành viên
Ghép trận đấu
- Trưởng nhóm khởi động ghép trận
- Dịch vụ ghép trận tìm đối thủ phù hợp
- Thông báo thành công và đưa cả đội vào game
Thiết kế giao thức tin nhắn
Định dạng JSON chuẩn cho tất cả tin nhắn:
{
"loaiTin": "string",
"idYeuCau": "string",
"duLieu": { ... }
}
Loại tin nhắn
| Loại tin | Hướng | Mô tả |
|---|---|---|
| TaoDoi | Máy khách → Máy chủ | Yêu cầu tạo đội |
| ThongBaoMoi | Máy chủ → Máy khách | Thông báo lời mời |
| YeuCauVaoDoi | Máy khách → Máy chủ | Xin tham gia đội |
| CapNhatDoi | Máy chủ → Máy khách | Thông báo thay đổi thành viên |
Ví dụ tin nhắn
// Yêu cầu tạo đội
{
"loaiTin": "TaoDoi",
"idYeuCau": "yc001",
"duLieu": { "idNguoiChoi": "nguoiA" }
}
// Thông báo cập nhật đội
{
"loaiTin": "CapNhatDoi",
"duLieu": {
"doiId": "doi123",
"thanhVien": [ ... ]
}
}
Mẫu tương tác máy khách-máy chủ
// Máy khách gửi lời mời
void GuiLoiMoi(string idDoi, string nguoiMoi, string nguoiDuocMoi) {
string maYeuCau = TaoMa();
var tin = new {
loaiTin = "MoiThanhVien",
idYeuCau = maYeuCau,
duLieu = new { idDoi, nguoiMoi, nguoiDuocMoi }
};
GuiTin(tin);
}
// Máy chủ xử lý cập nhật
void GuiCapNhatToanDoi(string idDoi) {
Doi doi = LayThongTinDoi(idDoi);
var tin = new {
loaiTin = "CapNhatDoi",
duLieu = new {
idDoi = idDoi,
thanhVien = doi.thanhVien
}
};
foreach (var tv in doi.thanhVien) {
GuiDenMayKhach(tv.id, tin);
}
}
Yếu tố thiết kế trọng tâm
- Đồng bộ thời gian thực: Đảm bảo độ trễ thấp cho trạng thái đội
- Khả năng mở rộng: Hỗ trợ đa dạng chế độ chơi theo nhóm
- Xử lý lỗi: Quản lý ngắt kết nối và tái kết nối
- Bảo mật: Kiểm tra quyền hạn và chống lạm dụng
- Đa nền tảng: Hoạt động trên PC, console và thiết bị di động