云端客户端配置
云端客户端配置
Headless Client(云端客户端)拥有巨大的配置潜力。为了实现这一点,需要使用配置文件。配置文件采用 JSON 格式编写。
默认配置文件
可以在云端客户端安装目录下的 Config 子目录中找到默认配置文件,文件名为 DefaultConfig.json。如果该文件不存在,请运行一次云端服务器程序以生成它。
创建你自己的配置文件
要开始配置,请将 DefaultConfig.json 文件复制并重命名为 Config.json。当你运行 Headless Client 时,程序会自动读取该文件。复制完成后,建议编辑 comment(注释)属性,将其改为描述该文件功能的文字。默认文件中的注释值是不准确的,请将其修改为反映你预期用途的内容。
之后,你可以参照配置文件格式继续编辑你的配置文件。
使用多个配置文件
运行 Resonite.exe 时,你可以使用命令行选项 -HeadlessConfig 来指定一个配置文件。这允许你为不同的项目或活动维护多个配置文件。例如,你可以创建并使用:
Resonite.exe -HeadlessConfig Config/CoolConvention.json- 用于大型漫展或活动Resonite.exe -HeadlessConfig Config/SeriousBusinessMeeting.json- 用于非常严肃的商务会议
这完全取决于你,你可以随意编写和使用任意数量的文件。
文件格式
云端客户端配置文件有很多选项,其中大多数是可选的。
| 名称 | 类型 | 描述 | 必填 |
|---|---|---|---|
| comment | string |
该文件的可选自由格式注释。用于标识你的配置用途。 | 否 |
| loginCredential | string |
此 Headless 服务器使用的 Resonite 用户名或邮箱。 | 否 |
| loginPassword | string |
此 Headless 服务器使用的 Resonite 用户密码。 | 否 |
| startWorlds | 见 启动世界 | 此 Headless 服务器启动时要开始/创建的世界或房间数组。 | ✓ 是 (不能为 null) |
| universeId | string |
可选,指定此 Headless 服务器所属的宇宙(Universe)。详见 Universes。 | 否 |
| tickRate | number |
配置每秒应发生多少个 Tick(更新)。默认为 60。 | 否 |
| maxConcurrentAssetTransfers | integer |
指定此 Headless 服务器的最大并发资产传输数。默认为 4。 | 否 |
| usernameOverride | string |
配置一个用户名,该名称将在世界浏览器等处覆盖 LoginCredential 显示的名称。 |
否 |
| dataFolder | string |
可选,覆盖 Resonite 为此 Headless 服务器存储数据的文件夹。 | 否 |
| cacheFolder | string |
可选,覆盖 Resonite 为此 Headless 服务器存储缓存的文件夹。 | 否 |
| logsFolder | string |
可选,覆盖 Resonite 为此 Headless 服务器存储日志的文件夹。 | 否 |
| allowedUrlHosts | string array |
Resonite 内部 HTTP/WebSocket 操作自动允许的主机列表。数组类型的值需用方括号 [] 括起来。 |
否 |
| autoSpawnItems | string array |
世界启动时要生成的物品 URI 列表。数组类型的值需用方括号 [] 括起来。 |
否 |
Start Worlds(启动世界)
配置文件中包含一个名为 startWorlds 的数组,这是 Headless Client 启动时应自动开启的世界列表。你可以在单个 Headless Client 上运行任意数量的世界。如果该数组留空,Headless 将不会自动启动任何世界。该选项的格式如下:
...
"startWorlds":[
{
...世界 1 的配置
},
{
...世界 2 的配置
}
]
...
每个启动世界拥有以下属性:
| 名称 | 类型 | 描述 | 必填 | 示例 |
|---|---|---|---|---|
| Name | null,string |
在世界/房间浏览器中显示的房间名称。 | 否 | "cheese" |
| customSessionId | string |
可选的自定义房间 ID。运行时会自动加上 S- 前缀。格式应为 <UserID>:<Custom Id>。详情见 Custom 房间 IDs。 |
否 | U-ProbablePrime:CheeseLand |
| description | string |
可选的房间描述,显示在世界/房间浏览器中。 | 否 | The land of the cheese |
| maxUsers | integer |
允许加入此房间的最大用户数。 | 否,默认:32 | 42 |
| accessLevel | any |
此房间的访问等级,详情请见 房间AccessLevel。 | 否 | Anyone |
| hideFromPublicListing | boolean,null |
决定此房间是否应从世界/房间浏览器中隐藏。 | 否 | |
| tags | array,null |
JSON 字符串数组形式的标签列表,用于辅助搜索或发现房间。 | 否 | ["cheese","world","game"] |
| mobileFriendly | boolean |
决定此房间是否对移动端/Quest 用户友好。 | 否 | |
| loadWorldURL | null,string |
提供世界 URL 时,房间将加载该世界。请使用以 resrec:/// 开头的 URL。在世界浏览器中使用“Copy record URL(复制记录链接)”按钮获取。 |
否 | resrec:///U-ProbablePrime/R-ABC123-CHEESE-MOOO |
| loadWorldPresetName | null,string |
如果提供且有效,将在房间中加载指定的世界预设。 | 否 | Grid |
| overrideCorrespondingWorldId | any |
覆盖此房间的世界 ID,使其能与具有此世界 ID 的其他房间分组显示。 | 否 | { "ownerId": "U-SomeOwner", "recordId": "R-SomeRecord" } |
| forcePort | integer,null |
可选,如果指定,将强制此房间在特定网络端口上运行。 | 否 | 4242 |
| keepOriginalRoles | boolean |
可选,如果指定,将保留世界中保存的原始角色设置。 | 否 | |
| defaultUserRoles | null,object |
提供用户名和权限对的列表时,将在这些用户加入时授予其列出的权限。 | 否 | { "ProbablePrime":"Admin", "Frooxius":"Guest" } |
| roleCloudVariable | null,string |
可选的云变量名称,用于确定此用户的角色。详情见 Cloud Variables#Roles。 | 否 | |
| allowUserCloudVariable | null,string |
可选的云变量名称,用于确定是否允许此用户进入房间。详情见 Cloud Variables#Allowing User's Access。 | 否 | |
| denyUserCloudVariable | null,string |
可选的云变量名称,用于确定是否拒绝此用户进入房间。详情见 Cloud Variables#Denying User's Access。 | 否 | |
| requiredUserJoinCloudVariable | null,string |
可选的云变量名称,用于确定是否拒绝此用户进入房间(加入控制)。详情见 Cloud Variables#Joining Control。 | 否 | |
| requiredUserJoinCloudVariableDenyMessage | null,string |
当用户被 RequiredUserJoinCloudVariable 拒绝访问时显示的消息。详情见 Cloud Variables#Joining Control。 | 否 | |
| useCustomJoinVerifier | boolean |
设为 true 时,将使用 VerifyJoinRequest ProtoFlux 节点代替默认的房间访问规则。 | 否 | |
| awayKickMinutes | number |
配置用户在被踢出前可以离开世界(非焦点状态)的分钟数。设为 -1 禁用此选项。 | 否 | |
| isEnabled | boolean |
设为 false 时,将禁用此世界条目的启动。这对于开关世界很有用。 | 否 | |
| saveAsOwner | string |
控制保存此世界时的归属者。详情见 SaveAsOwner。 | 否 | |
| autoInviteUsernames | array,null |
此列表中的用户将在世界启动时自动收到邀请。 | 否 | ["ProbablePrime","Frooxius","kazzypoof"] |
| inviteRequestHandlerUsernames | array,null |
发送给 Headless 的邀请请求将转发给此列表中的用户。他们必须是 Headless 账号的好友才能生效。 | 否 | ["ProbablePrime", "Frooxius"] |
| parentsessionIds | array,null |
为此房间提供父房间 ID 列表。详情见 Parent 房间s。 | 否 | |
| autoInviteMessage | null,string |
随邀请一同发送给 AutoInviteUsernames 列表中用户的自动消息。 | 否 | Come and play! |
| autoRecover | boolean |
(自动恢复,文档待补充) | 否 | |
| idleRestartInterval | number |
如果设置此值(>0)且世界中没有用户,它将定期重启,该值决定重启之间的秒数。 | 否 | |
| forcedRestartInterval | number |
如果设置此值(>0),它将定期重启,该值决定重启之间的秒数。 | 否 | |
| saveOnExit | boolean |
如果设为 true,将在关闭 Headless Client 时保存此世界。 | 否 | |
| autosaveInterval | number |
如果设置此值(>0),它将自动保存,该值决定保存之间的秒数。 | 否 | |
| autoSleep | boolean |
如果设为 true,将防止空世界(或充满挂机用户的世界)定期运行完整的更新周期。 | 否 | |
| enableResoniteLink | boolean |
如果设为 true,将为此世界启用 ResoniteLink。 | 否 | |
| forceResoniteLinkPort | null,integer |
如果设置,将强制 ResoniteLink 监听的端口。 | 否 |
房间AccessLevel(房间访问等级)
房间AccessLevel 控制房间的访问权限等级。可能的值包括:
- Private(私有)
- LAN(局域网)
- Contacts(好友)
- ContactsPlus(好友+)
- RegisteredUsers(注册用户)
- Anyone(任何人)
这些值与你在游戏内看到的常规房间访问等级相匹配。
SaveAsOwner(另存为拥有者)
Save As Owner 控制 Headless Client 如何保存其运行的世界。
除 null 以外的任何值都类似于 Dash 菜单“房间”选项卡中的“Save As...(另存为...)”选项,每次保存都会创建一个新记录。
可能的值包括:
- LocalMachine - 将世界保存为本地机器归属。
- CloudUser - 将世界保存为通过“login credentials(登录凭据)”登录的云用户归属。
- null - 尝试将世界保存到加载它的位置,类似于“房间”选项卡中的“Save Changes(保存更改)”选项。
大多数情况下应将其设为 null,除非你想为世界创建一个全新的记录(例如当你运行一个从未在 Headless 上保存过的世界时)。
示例文件
我们理解这些配置文件可能看起来令人望而生畏,因此我们准备了一些示例文件:
- Headless Client/Example Configurations#Default - 安装时的默认配置文件
- Headless Client/Example Configurations#Minimal - 最精简的配置
- Headless Client/Example Configurations#Minimal_with_Login - 带有用户登录的最精简配置
JSON 架构 (Schema)
对于 Headless Client 配置文件,我们正在试验使用 JSON Schemas。JSON Schemas 是描述 JSON 文件布局和架构的文件。你可以使用它们来生成代码、验证 JSON 等。在支持的编辑器中编辑配置文件时,你的配置文件将自动进行错误验证等操作。
查看我们的 Schema 仓库 以获取更多信息。
启动配置文件 (Startup Configuration File)
Headless 服务器软件也兼容 Startup Config File(启动配置文件),你可以使用其中的所有设置来控制 Headless 服务器软件的各方面。要做到这一点,只需按照 Startup Config File 页面上的说明操作即可。
请记住,由于 Headless 房间没有渲染器,某些设置选项可能不适用。
采用这种方法的一个很好的理由是处理代理(Proxy)设置。
将来,鉴于这种分开的设置可能会令人困惑,我们可能会将这两个文件合并为一个包含这两种设置的更通用的版本。
No comments to display
No comments to display