配置 #
YAML配置文件可以配置您的Nakama服务器运行方式的多项内容。您可以在不指定配置文件而是依赖默认配置的情况下运行Nakama。
指定配置文件 #
您可以使用
--config
标志在运行时指定配置文件。
|
|
如果您正在通过Docker-Compose运行Nakama,则需要在机器中绑定一个文件夹,使其在Docker中可用。在文档中查看 配置在Docker 上运行的Nakama。
服务器端口 #
Nakama系统非常灵活。您可以通过gRPC, HTTP, Websockets和rUDP与服务器交换数据。由于这种灵活性,Nakama需要4个端口可用于绑定到:
- 在端口7350上绑定到HTTP API服务器 可以在配置中更改端口。
- 在7351端口上绑定到HTTP API服务器,这个服务器启动嵌入式开发人员控制台。 可以在配置中更改端口。
- 在端口7349上绑定到gRPC API服务器。 根据API服务器端口选择端口。
- 在7348端口上绑定到gRPC API服务器,该服务器启动嵌入式控制台。 根据API服务器端口选择端口。
共同属性 #
在大多数环境中以及在将Nakama部署到实时生产环境之前,需要更改部分配置属性,例如,您必须更改**
socket.server_key
,
session.encryption_key
** 和**
runtime.http_key
**的值。
配置的完整列表见
页面底部
。
Parameter | Description |
---|---|
name
|
Nakama 节点名称(必须是唯一的)- 默认将为“nakama”。 |
data_dir
|
Nakama 要存储数据(包括日志)的可写文件夹的绝对路径。默认值是 Nakama 启动时的工作目录。 |
runtime.path
|
要扫描和加载的模块的路径。默认值为“data_dir/modules”。 |
database.address
|
要连接的数据库节点列表。应该遵循“username:password@address:port/dbname”的形式(“postgres://”协议会自动追加到路径中)。默认值为“root@localhost:26257”。 |
socket.server_key
|
用于与服务器建立连接的服务器密钥。默认值为“defaultkey”。 |
runtime.http_key
|
密钥用于保护服务器的运行时 HTTP 调用。默认值为“defaulthttpkey”。 |
session.encryption_key
|
用于生成客户令牌的加密密钥。默认值为“defaultencryptionkey”。 |
session.token_expiry_sec
|
会话令牌过期时间(以秒为单位)。默认值为 60。 |
session.refresh_encryption_key
|
用于生成会话刷新令牌的加密密钥。默认值为“defaultrefreshencryptionkey”。 |
session.refresh_token_expiry_sec
|
刷新令牌过期时间(以秒为单位)。默认值为 3600。 |
服务器配置 #
Nakama有各种配置选项,可以充分用于各种用例和部署环境。
Nakama为所有配置选项提供了合理的值,因此您可能仅需要覆盖选项的子集。您也可以仅设置您自己的配置文件,并通过命令行标志覆盖配置文件中的值。例如,覆盖运行时路径:
|
|
对于非特殊字段,将使用默认值。查看 服务器命令行 页面,获取关于如何覆盖标志的更多信息。
Parameter | Flag | Description |
---|---|---|
name
|
name
|
Nakama 节点名称(必须是唯一的)- 将被默认为“nakama”。日志文件中也使用这个名称。 |
data_dir
|
data_dir
|
Nakama 将存储数据(包括日志)的可写文件夹的绝对路径。默认值是 Nakama 启动时的工作目录。 |
shutdown_grace_sec
|
shutdown_grace_sec
|
关闭前等待服务器完成工作的最大秒数。如果为 0,服务器将在收到终止信号时立即关闭。默认值为“0”。 |
集群 #
本节介绍如何连接各个节点形成集群。
以下配置选项仅在Nakama服务器的Nakama企业版中可用。
Nakama的设计使其在生产环境中作为高度可用的集群运行。如果您正在运行 Nakama企业版 ,可以在您的开发机器上本地启动集群。在生产中,您可以使用Nakama企业版或我们的 Heroic Cloud 服务。
Parameter | Flag | Description |
---|---|---|
gossip_bindaddr
|
cluster.gossip_bindaddr
|
将 Nakama 绑定以便于发现的接口地址。默认所有接口都处于监听状态。 |
gossip_bindport
|
cluster.gossip_bindport
|
将 Nakama 绑定以便于发现的端口编号。默认值为 7352。 |
join
|
cluster.join
|
要连接的其他 Nakama 节点的主机名和端口列表。 |
max_message_size_bytes
|
cluster.max_message_size_bytes
|
允许在 Nakama 节点之间发送的每条消息的最大数据量(以字节为单位)。默认值为 4194304。 |
rpc_port
|
cluster.rpc_port
|
用于在 Nakama 节点之间发送数据的端口编号。默认值为 7353。 |
local_priority
|
cluster.local_priority
|
设置为“true”时,尽可能使用本地资源。 |
work_factor_interval_ms
|
cluster.work_factor_interval_ms
|
工作因素同步操作的更新频率。 |
控制台 #
本节定义了与嵌入式开发人员控制台相关的配置。
Parameter | Flag | Description |
---|---|---|
address
|
console.address
|
控制台通信监听接口的 IP 地址。默认所有地址/接口都处于监听状态。 |
max_message_size_bytes
|
console.max_message_size_bytes
|
每条消息允许从客户端套接字中读取的最大数据量(以字节为单位)。 |
idle_timeout_ms
|
console.idle_timeout_ms
|
启用存活时,等待下一个请求的最大时间量(以毫秒为单位)。 |
password
|
console.password
|
嵌入式控制台的密码。默认值为“password”。 |
port
|
console.port
|
接受嵌入式控制台的连接、使所有接口处于监听状态的端口。默认值为 7351。 |
read_timeout_ms
|
console.read_timeout_ms
|
读取整个请求的最大时间量(以毫秒为单位)。 |
signing_key
|
console.signing_key
|
用于签署控制台会话令牌的密钥。 |
token_expiry_sec
|
console.token_expiry_sec
|
令牌过期时间(以秒为单位)。默认值为 86400。 |
username
|
console.username
|
嵌入式控制台的用户名。默认值为“admin”。 |
write_timeout_ms
|
console.write_timeout_ms
|
响应写入超时之前等待的最大时间量(以毫秒为单位)。 |
数据库 #
Nakama需要一个可用的CockroachDB服务器。Nakama 在CockroachDB数据库中创建并管理自己的名为
nakama
的数据库。
Parameter | Flag | Description |
---|---|---|
address
|
database.address
|
要连接的数据库节点列表。应该遵循“username:password@address:port/dbname”的形式(“postgres://”协议会自动追加到路径中)。默认值为“root@localhost:26257”。 |
conn_max_lifetime_ms
|
database.conn_max_lifetime_ms
|
终止数据库连接并创建新的连接之前,重新使用该数据库连接的时间(以毫秒为单位)。默认值为 0(无限期)。 |
max_idle_conns
|
database.max_idle_conns
|
允许开放但未使用的数据库连接的最大数量。默认值为 100。 |
max_open_conns
|
database.max_open_conns
|
允许开放的数据库连接的最大数量。默认值为 0(无限制)。 |
dns_scan_interval_sec
|
database.dns_scan_interval_sec
|
查找数据库主机名称的 DNS 解析变更的扫描间隔秒数。默认值为 60。 |
您可以通过命令将多个数据库地址传递给Nakama,例如:
|
|
IAP(应用程序内的购买行为) #
Nakama可以通过连接到各个商店并保存有效购买的分类账来验证应用程序内的购买行为。这有助于防止常见的使用有效收据进行应用程序内购买行为重放攻击,也有助于根据需要恢复用户账户的购买行为。
Apple #
Apple应用程序内购买行为的配置
Parameter | Flag | Description |
---|---|---|
shared_password
|
apple.shared_password
|
您的应用程序的共享密码。 |
Google #
Google应用程序内购买行为的配置
Parameter | Flag | Description |
---|---|---|
client_email
|
google.client_email
|
服务帐户客户电子邮件值。 |
private_key
|
google.private_key
|
服务帐户私钥值。 |
华为 #
Parameter | Flag | Description |
---|---|---|
public_key
|
huawei.public_key
|
华为 IAP 存储 Base64 编码格式公钥。 |
client_id
|
huawei.client_id
|
华为 OAuth 客户端密钥。 |
client_secret
|
huawei.client_secret
|
华为 OAuth 应用程序客户端密钥。 |
排行榜 #
您可以更改与排行榜和锦标赛系统相关的配置选项。
Parameter | Flag | Description |
---|---|---|
blacklist_rank_cache
|
leaderboard.blacklist_rank_cache
|
禁用具有匹配排行榜名称的排行榜的排名缓存。使用“*”完全禁用排名缓存,留空则启用排名缓存。 |
callback_queue_size
|
leaderboard.callback_queue_size
|
排序到期/重置/结束调用的排行榜和锦标赛回调队列的大小。默认值为 65536。 |
callback_queue_workers
|
leaderboard.callback_queue_workers
|
并发处理排行榜和锦标赛回调的工作线程的数量。默认值为 8。 |
记录器 #
Nakama生成JSON格式的日志,以便各种系统可以与日志交互。默认将这些日志写入到标准输出(控制台)中。
Parameter | Flag | Description |
---|---|---|
compress
|
logger.compress
|
这决定了是否应使用 gzip 压缩轮替日志文件。 |
file
|
logger.file
|
将日志输出到一个文件中(以及“stdout”,如有设置)。确保目录和文件可写入。 |
format
|
logger.format
|
设置日志输出格式。可以是“JSON”或“Stackdriver”。默认为“JSON”。 |
level
|
logger.level
|
要生成的最小日志级别。值分别为“debug”、“info”、“warn”和“error”。默认为“info”。 |
local_time
|
logger.local_time
|
这决定了备份文件中时间戳是否使用计算机的本地时间。默认使用世界协调时间(UTC)。 |
max_age
|
logger.max_age
|
根据文件名中编码的时间戳保留旧日志文件的最大天数。默认不会根据时间删除旧日志文件。 |
max_backups
|
logger.max_backups
|
要保留的旧日志文件的最大数量。默认保留所有旧日志文件(尽管有些旧日志文件可能会因为“max_age”被删除)。 |
max_size
|
logger.max_size
|
日志文件轮替前的最大大小(以 MB 为单位)。默认值为 100 MB。默认值为 100。 |
rotation
|
logger.rotation
|
轮替日志文件。默认值为 false。 |
stdout
|
logger.stdout
|
将日志重定向为控制台标准输出。日志文件将不再使用。默认值为“true”。 |
无论
logger.stdout
字段的值为多少,都会始终将标准的启动日志消息打印到控制台。
匹配 #
您可以更改与授权多玩家运行时相关的配置选项。
Parameter | Flag | Description |
---|---|---|
call_queue_size
|
match.call_queue_size
|
权威匹配缓冲对匹配处理程序回调的调用进行排序,确保无重叠。本参数指这种权威匹配缓冲的大小。默认值为 128。 |
deferred_queue_size
|
match.deferred_queue_size
|
权威匹配缓冲在每个循环执行结束前保留延迟的消息广播。本参数指这种权威匹配缓冲的大小。默认值为 128。 |
input_queue_size
|
match.input_queue_size
|
在客户端消息可以在下一个循环周期中被处理之前,权威匹配缓冲存储这些客户端消息。本参数指这种权威匹配缓冲的大小。默认值为 128。 |
join_attempt_queue_size
|
match.join_attempt_queue_size
|
权威匹配缓冲限制正在进行的连接尝试数量,这种权威匹配缓冲的大小。默认值为 128。 |
join_marker_deadline_ms
|
match.join_marker_deadline_ms
|
客户端权威匹配连接等待匹配处理程序确认连接的截止时间(以毫秒为单位)。默认值为 5000。 |
label_update_interval_ms
|
match.label_update_interval_ms
|
匹配标签更新间隔时间(以毫秒为单位)。默认值为 1000。 |
max_empty_sec
|
match.max_empty_sec
|
允许权威匹配在被停止前连续空出的最大秒数。0 表示无最大值。默认值为 0。 |
指标 #
Nakama生成指标信息。可以将该信息导出到Prometheus。
由于指标包含敏感的服务器信息,需要对指标导出进行保护。
运行时 #
与运行时引擎相关的选项。
Parameter | Flag | Description |
---|---|---|
call_stack_size
|
runtime.call_stack_size
|
(Deprecated) 每次运行时实例调用栈的大小。默认值为 128。 |
env
|
runtime.env
|
作为环境变量显示给运行时脚本的键-值属性列表。 |
event_queue_size
|
runtime.event_queue_size
|
事件队列缓冲的大小。默认值为 65536。 |
event_queue_workers
|
runtime.event_queue_workers
|
用于并发处理事件的工作线程的数量。默认值为 8。 |
http_key
|
runtime.http_key
|
用于验证 HTTP 运行时调用的密钥。默认值为“defaultkey”。 |
js_entrypoint
|
runtime.js_entrypoint
|
指定捆绑的 JavaScript 运行时源代码的位置。 |
js_max_count
|
runtime.js_max_count
|
要分配的 JavaScript 运行时实例的最大数量。默认值为 32。 |
js_min_count
|
runtime.js_min_count
|
要分配的 JavaScript 运行时实例的最小数量。默认值为 16。 |
js_read_only_globals
|
runtime.js_read_only_globals
|
启用后,将所有的 JavaScript 运行时全局标记为只读,以减少内存占用。默认值为 true。 |
lua_call_stack_size
|
runtime.lua_call_stack_size
|
每次运行时实例调用栈的大小。默认值为 128。 |
lua_max_count
|
runtime.lua_max_count
|
要分配的 Lua 运行时实例的最大数量。默认值为 48。 |
lua_min_count
|
runtime.lua_min_count
|
要分配的 Lua 运行时实例的最小数量。默认值为 16。 |
lua_read_only_globals
|
runtime.lua_read_only_globals
|
启用后,将所有的 Lua 运行时全局表标记为只读,以减少内存占用。默认值为 true。 |
lua_api_stacktrace
|
runtime.lua_api_stacktrace
|
在 API 响应中添加 Lua 栈追踪。默认值为 true。 |
lua_registry_size
|
runtime.lua_registry_size
|
每次 Lua 运行时实例注册表的大小。默认值为 512。 |
max_count
|
runtime.max_count
|
(Deprecated) 要分配的运行时实例的最大数量。默认值为 256。 |
min_count
|
runtime.min_count
|
(Deprecated) 要分配的运行时实例的最小数量。默认值为 16。 |
path
|
runtime.path
|
服务器在启动时要扫描和加载的模块的路径。默认值为“data_dir/modules”。 |
read_only_globals
|
runtime.read_only_globals
|
(Deprecated) 启用后,将所有的运行时全局表标记为只读,以减少内存占用。默认值为 true。 |
registry_size
|
runtime.registry_size
|
(Deprecated) 每次运行时实例注册表的大小。默认值为 512。 |
运行时环境是一个键值对。它们由
=
字符分隔:
|
|