Kiến trúc máy chủ cho game MMO trên điện thoại

Phát triển gameKiến trúc phần mềmMáy chủ

Chó Cỏ trên phố trong game Một Ngày Làm Chó do AuraX phát triển

Một game nhập vai trực tuyến nhiều người chơi (MMO) trên điện thoại phải giải cùng lúc ba bài toán: công bằng (người chơi không thể tự sửa chỉ số), mượt (mạng di động chập chờn vẫn chơi được) và dễ vận hành (đội thiết kế chỉnh số liệu mà không cần phát hành bản mới). Bài viết này tóm tắt cách AuraX xây dựng máy chủ cho Một Ngày Làm Chó – game nhập vai mà người chơi vào vai một chú chó tại Công viên Lãm Làng, Bắc Ninh – và những nguyên tắc có thể áp dụng cho các ứng dụng thời gian thực khác.

Nền tảng công nghệ

Thành phầnCông nghệVai trò
Máy chủ trò chơiNakamaĐăng nhập, phiên kết nối, phòng thời gian thực, lưu trữ
Luật chơiGo (module của Nakama)Tính sát thương, phần thưởng, nhiệm vụ, chế tạo
Cơ sở dữ liệuPostgreSQLHồ sơ người chơi, dữ liệu thiết kế, bảng tra cứu vật phẩm
Ứng dụngGodot 4Hiển thị, dự đoán chuyển động, giao diện
Hạ tầngDockerĐóng gói máy chủ, chạy giống nhau ở máy phát triển và máy thật

Nguyên tắc 1: máy chủ quyết định mọi thứ

Trong Một Ngày Làm Chó, ứng dụng trên điện thoại không được ghi trực tiếp vào hồ sơ người chơi. Mọi thay đổi – nhặt Xương, nâng cấp trang bị, mở khóa chiêu, nhận thưởng nhiệm vụ – đều đi qua một lệnh gọi lên máy chủ. Máy chủ kiểm tra điều kiện (đủ cấp chưa, đủ vật phẩm chưa, có đứng cạnh quầy NPC không) rồi mới áp dụng.

Riêng chiến đấu được xử lý trong phòng thời gian thực: ứng dụng chỉ gửi "dùng chiêu nào, nhắm vào ai", còn máy chủ tự tính hồi chiêu, tầm đánh, sát thương, chí mạng và hiệu ứng. Mọi yếu tố ngẫu nhiên như chỉ số phụ của trang bị mới hay tỉ lệ chế tạo thành công cũng chỉ máy chủ gieo.

Để người chơi không phải chờ, ứng dụng dự đoán kết quả của các thao tác tất định (ví dụ nâng cấp luôn thành công) và hiển thị ngay. Nếu máy chủ từ chối, ứng dụng nhận lại hồ sơ chuẩn và ghi đè lên bản dự đoán.

Nguyên tắc 2: chỉ đồng bộ những gì người chơi nhìn thấy

Bản đồ được chia thành các ô 250 × 250 mét. Mỗi người chơi chỉ nhận cập nhật của người chơi khác và quái trong vùng quan tâm 3 × 3 ô quanh mình. Cách làm này giữ băng thông ổn định khi số người chơi tăng, đồng thời giảm lượng dữ liệu điện thoại phải xử lý.

Nguyên tắc 3: hồ sơ trong bộ nhớ, ghi theo đợt

Ghi cơ sở dữ liệu cho mỗi lần nhặt một khúc xương là lãng phí. Máy chủ giữ hồ sơ người đang chơi trong bộ nhớ và phân loại thao tác:

  • Thao tác quan trọng hoặc hiếm (tạo nhân vật, nâng cấp, chế tạo, mở rộng túi): ghi ngay.
  • Thao tác dày đặc (nhặt Xương, mặc hoặc tháo đồ): chỉ cập nhật bộ nhớ, ghi theo đợt mỗi 15 giây, khi người chơi thoát và khi máy chủ tắt.

Trường hợp xấu nhất – máy chủ dừng đột ngột – người chơi chỉ mất tối đa 15 giây tiến trình của các thao tác nhỏ. Hồ sơ không có ai dùng trong 10 phút được giải phóng khỏi bộ nhớ.

Nguyên tắc 4: dữ liệu thiết kế nằm trong cơ sở dữ liệu

Chỉ số quái, công thức chế tạo, giá vật phẩm, phần thưởng nhiệm vụ… được lưu trong PostgreSQL thay vì đóng cứng trong mã. Khi đội thiết kế cân bằng lại game, máy chủ:

  1. Kiểm tra toàn bộ dữ liệu mới (tham chiếu chéo, khoảng giá trị, vật phẩm người chơi đang giữ).
  2. Áp dụng ngay nếu hợp lệ; nếu sai thì giữ nguyên bản cũ và báo lỗi cụ thể.
  3. Ghi lại "bản tốt gần nhất" để luôn có phương án dự phòng khi khởi động.

Ứng dụng tải dữ liệu thiết kế theo số phiên bản sau khi đăng nhập và lưu đệm trên máy, nên thay đổi số liệu không cần cập nhật ứng dụng trên cửa hàng.

Tài khoản: khách trước, liên kết sau

Người chơi vào game ngay bằng tài khoản khách gắn với thiết bị, không cần đăng ký. Khi muốn giữ nhân vật lúc đổi điện thoại, họ liên kết tài khoản Google. Cách làm này giảm tỉ lệ bỏ cuộc ở bước đầu mà vẫn đáp ứng yêu cầu của cửa hàng ứng dụng về khôi phục và xóa tài khoản.

Kiểm thử tự động

Mỗi hệ thống lớn (chiến đấu, trang bị, nhiệm vụ, phó bản, xã hội) có kịch bản kiểm thử tự động chạy cả phía máy chủ lẫn ứng dụng. Kiến trúc mã máy chủ được kiểm tra theo lớp để luật chơi thuần tách khỏi phần lưu trữ và kết nối, giúp viết kiểm thử nhanh và an toàn khi mở rộng.

Áp dụng cho dự án của bạn

Các nguyên tắc trên không chỉ dành cho game. Ứng dụng đặt xe, sàn giao dịch, hệ thống điểm thưởng hay ứng dụng học trực tuyến có tương tác thời gian thực đều cần máy chủ quyết định, đồng bộ có chọn lọc và cấu hình thay đổi được mà không phát hành lại ứng dụng.

AuraX nhận tư vấn và phát triển ứng dụng di động và hệ thống máy chủ cho cá nhân và doanh nghiệp. Tìm hiểu sản phẩm game của chúng tôi tại motngaylamcho.com hoặc liên hệ để trao đổi về dự án.

Bài viết khác