Nakama for Mac 搭建開發環境
1.基礎工具
1.1 go環境部署
1.2 數據庫部署
這里本人使用的是PostgreSQL
1.3 nakama源碼下載
2.編譯源碼?
2.1 安裝工具鏈
go install \
"google.golang.org/protobuf/cmd/protoc-gen-go" \
"google.golang.org/grpc/cmd/protoc-gen-go-grpc" \
"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway" \
"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
2.2 如果您對嵌入式控制臺進行了更改
cd console/ui
ng serve
2.3 重新生成協議緩沖區、網關代碼和控制臺 UI
env PATH="$HOME/go/bin:$PATH" go generate -x ./...
2.4 構建代碼
go build -trimpath -mod=vendor
2.5 得到編譯后文件 nakama
2.6 自定義服務器代碼編譯
2.6.1 初始化自定義項目
mkdir go-project
cd go-project
2.6.2 提供有效的Go模塊路徑,并安裝nakama運行時
go mod init example.com/go-project
go get github.com/heroiclabs/nakama-common/runtime
2.7 提供包依賴
go mod vendor
2.8 創建GO共享對象(生成so)
go build --trimpath --mod=vendor --buildmode=plugin -o ./backend.so
3.配制游戲服務
完成2操作之后,我們手上擁有一個nakama Unix可執行文件以及backend.so 文件
接下來我們將編寫nakama配制文件nakama-config.yml
#配制文件相關
name: nakama-node-1 # 節點名稱(必須是唯一的)
data_dir: "./data/" # Nakama 將存儲其數據(包括日志)的可寫文件夾的絕對路徑。默認值是啟動 Nakama 的工作目錄。
logger:
stdout: false # 將日志重定向到控制臺標準輸出。將不再使用日志文件。默認為true。
level: "warn" # 要生成的最低日志級別。值是debug,info,warn和error。默認為info。
file: "./data/path/to/logfile.log" # 將輸出記錄到文件(以及stdout是否已設置)。確保目錄和文件是可寫的。
metrics: # 指標?
reporting_freq_sec: 60 # 指標導出的頻率。默認值為 60 秒。
namespace: "" # Prometheus 的命名空間或 Stackdriver 指標的前綴。它總是在節點名稱前面。默認值為空。
prometheus_port: 0 # 暴露 Prometheus 的端口。默認值為“0”,禁用 Prometheus 導出。
database:
address:
- "ysr:123456@localhost:5432" # 要連接的數據庫節點列表。它應該遵循username:password@address:port/dbname(postgres://協議自動附加到路徑)的形式。默認為root@localhost:26257.
conn_max_lifetime_ms: 0 # 在連接被終止并創建新連接之前重用數據庫連接的時間(以毫秒為單位)。默認值為 0(不確定)。
max_open_conns: 0 # 允許打開的數據庫連接的最大數量。默認值為 0(無限制)。
max_idle_conns: 100 # 允許打開但未使用的數據庫連接的最大數量。默認值為 100。
runtime:
env: # 作為環境變量公開給運行時腳本的鍵值屬性列表。
- "example_apikey=example_apivalue"
- "encryptionkey=afefa==e332*u13=971mldq"
path: "./data/modules/folders" # 服務器在啟動時掃描和加載的模塊路徑。默認值為data_dir/modules。
http_key: "testhttpkey" # 用于驗證 HTTP 運行時調用的密鑰。默認值為defaultkey。
socket:
server_key: "testsocketkey" # 用于建立與服務器的連接的服務器密鑰。默認值為defaultkey
port: 7350
max_message_size_bytes: 4096 # 每條消息允許從客戶端套接字讀取的最大數據量(以字節為單位)。用于實時連接。默認值為 4096。
read_timeout_ms: 10000 # 讀取整個請求的最大持續時間(以毫秒為單位)。用于 HTTP 連接。默認值為 10000。
write_timeout_ms: 10000 # 超時寫入響應之前的最大持續時間(以毫秒為單位)。用于 HTTP 連接。默認值為 10000。
idle_timeout_ms: 60000 # 啟用保持活動時等待下一個請求的最長時間(以毫秒為單位)。用于 HTTP 連接。默認值為 60000。
write_wait_ms: 5000 # 寫入數據時等待來自客戶端的確認的時間(以毫秒為單位)。用于實時連接。默認值為 5000。
pong_wait_ms: 10000 # 發送 ping 后等待來自客戶端的 pong 消息的時間(以毫秒為單位)。用于實時連接。默認值為 25000。
ping_period_ms: 8000 # Must be less than pong_wait_ms 客戶端 ping 消息之間的等待時間(以毫秒為單位)。該值必須小于pong_wait_ms。用于實時連接。默認值為 15000。
outgoing_queue_size: 16 # 等待發送到客戶端的最大消息數。如果超過這個值,客戶端會被認為太慢并且會斷開連接。在處理實時連接時使用。默認值為 16。
social: # 社交網絡獲取用戶信息
steam: # steam
publisher_key: ""
app_id: 0
console: # 嵌入式開發者控制臺相關的配置
port: 7351
username: "admin"
password: "password"
cluster: # 節點應如何相互連接以形成集群
join:
- "10.0.0.2:7352"
- "10.0.0.3:7352"
gossip_bindaddr: "0.0.0.0"
gossip_bindport: 7352
rpc_port: 7353
local_priority: true
work_factor_interval_ms: 1000
matchmaker: # 賽事匹配/房間匹配
max_tickets: 2 # 每個會話或聚會允許的最大并發匹配票數。默認 3
interval_sec: 15 # 媒人嘗試形成比賽的速度,以秒為單位。默認 15
max_intervals: 3 # 在允許最小計數之前,匹配器嘗試在最大玩家計數處查找匹配的時間間隔。默認 2。
iap: # 應用內購買
apple:
shared_password: "password"
google:
client_email: "email@google.com"
private_key: "pk"
huawei:
public_key: "pk"
client_id: "id"
client_secret: "secret"
完成配制文件之后 則進行nakama數據庫遷移以及服務器數據庫配制
# 遷移數據庫 官方推薦默認執行
./nakama migrate up --database.address ysr:123456@localhost:5432
# 通過配制文件啟動nakama服務
./nakama --config /nakama-config.yml --database.address ysr:123456@localhost:5432/nakama
最后通過localhost:7351進入控制臺 查看go modules是否正常導入
image-20220123141407714.png