nakama mac 运行环境搭建

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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容