Skip to content

chungpdz/battleship

Repository files navigation

Battleship - Web Deployment Guide

Hướng dẫn này sẽ giúp bạn đóng gói (export) dự án Godot 4 ra nền tảng Web (HTML5) và triển khai hệ thống Nakama Server lên môi trường production.


Phần 1: Deploy Nakama Server lên VPS

Trong môi trường thực tế (Production), bạn không thể dùng localhost hay 127.0.0.1. Server Nakama cần được đưa lên một máy chủ ảo (VPS) và cấu hình SSL (HTTPS) vì trình duyệt web yêu cầu bảo mật nghiêm ngặt.

Bước 1: Chuẩn bị Server

  1. Thuê một VPS (DigitalOcean, Vultr, AWS, v.v...) cài đặt sẵn Ubuntu.
  2. Cài đặt DockerDocker Compose trên VPS.
  3. Trỏ một tên miền (Domain) về địa chỉ IP của VPS (ví dụ: api.battleship.com).

Bước 2: Khởi chạy Nakama

  1. Copy thư mục server và file docker-compose.yml của dự án lên VPS.
  2. Sửa file cấu hình Nakama để đổi lại localhost thành tên miền của bạn nếu cần.
  3. Chạy lệnh để khởi động Nakama:
    docker compose up -d

Bước 3: Cấu hình SSL / Reverse Proxy (Nginx / Caddy)

Trình duyệt Web yêu cầu kết nối an toàn wss:// (WebSocket Secure) và https://. Bạn nên cài Caddy (hoặc Nginx) để tự động cấp phát chứng chỉ Let's Encrypt:

Ví dụ Cấu hình Caddy (Caddyfile):

api.battleship.com {
    reverse_proxy localhost:7350
}

console.battleship.com {
    reverse_proxy localhost:7351
}

Lưu ý: Port 7350 là API của Nakama, 7351 là màn hình quản trị Console.


Phần 2: Cấu hình Client Godot để kết nối Production

Trước khi Export, bạn cần đổi địa chỉ kết nối trong code của Godot sang tên miền thật trên Internet thay vì localhost.

Mở file thiết lập kết nối (thường là NetworkManager.gd hoặc nơi bạn gọi Nakama.create_client):

# Thông số kết nối cục bộ (Local)
# var server_key = "defaultkey"
# var host = "127.0.0.1"
# var port = 7350
# var scheme = "http"

# Thông số kết nối Production
var server_key = "defaultkey"
var host = "api.battleship.com" # Tên miền VPS của bạn
var port = 443 # Port chuẩn của HTTPS/WSS
var scheme = "https" # Godot Nakama sẽ tự hiểu là dùng wss:// cho Socket

Phần 3: Export Game từ Godot sang Web (HTML5)

Bước 1: Cài đặt Web Export Template

  1. Vào Project -> Export...
  2. Nhấn Add... và chọn Web.
  3. Nếu bạn chưa cài đặt Export Template, Godot sẽ báo đỏ. Hãy click vào link trong bảng thông báo để tải về và cài đặt.

Bước 2: Thiết lập SharedArrayBuffer (Rất Quan Trọng đối với Godot 4)

Godot 4 sử dụng bộ nhớ dùng chung (SharedArrayBuffer) để xử lý đa luồng (multi-threading). Để Web game có thể chạy được, server lưu trữ game của bạn bắt buộc phải trả về 2 Headers sau:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

Nếu bạn dự định host game lên các trang như itch.io hay GitHub Pages, itch.io đã có tùy chọn "SharedArrayBuffer support", bạn chỉ cần tick vào. Github Pages hiện tại KHÔNG hỗ trợ tùy biến Header này một cách dễ dàng.

Cách khắc phục nếu Server host game không hỗ trợ Header: Trong menu Export Web của Godot:

  1. Mở phần Export Path.
  2. Tìm mục Variant.
  3. Đổi từ Thread Support sang Export Type: Single Threaded. Lưu ý: Single Threaded có thể làm game giật hơn hoặc load chậm hơn trên web, nhưng bù lại nó có thể host ở bất kỳ đâu mà không cần thiết lập Header phức tạp.

Bước 3: Export ra thư mục

  1. Nhấn nút Export Project.
  2. Chọn thư mục đầu ra, ví dụ build_web/.
  3. Tắt Export With Debug để tối ưu dung lượng game.
  4. Đặt tên file xuất ra là index.html.

Phần 4: Đưa Game lên Internet

Sau khi Export, bạn sẽ nhận được 1 thư mục chứa các file (index.html, index.js, index.wasm, index.pck).

Bạn có thể up thư mục này lên các dịch vụ Hosting tĩnh miễn phí/trả phí như:

  1. Itch.io: Tạo một project dạng HTML, nén thư mục thành file .zip, tải lên và tick chọn SharedArrayBuffer support.
  2. Netlify / Vercel: Kéo thả thư mục vào để deploy miễn phí. Cần chú ý file _headers nếu cần setup SharedArrayBuffer.
  3. VPS riêng: Nếu host cùng với server Nakama, bạn có thể thiết lập thêm một block Nginx/Caddy phục vụ các file tĩnh này.

Chúc bạn Deploy thành công!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages