3 月:大规模优化与 500 名玩家齐聚一堂!
海量性能优化、500 名玩家同屏、默认角色包、载具操控修复、全新脚本方法、游戏内服务器列表、团队改进、新配置项以及更多精彩内容!

欢迎阅读我们上个月最新更新的汇总!
Zenkai 突破 500+ 玩家!
我们非常自豪地宣布,Zenkai(全新的法国 🇫🇷 忍者 RP 服务器)已实现 500 名玩家同时在线并在同一个服务器上!
这对我们和 Zenkai 团队而言都是一项巨大的成就!我们可以看到 nanos world 在地图上拥有数百名玩家和数千个实体时依然表现出色!网络占用非常稳定且低开销,服务器 CPU 使用率平稳运行,极少出现峰值!
Zenkai 的成功证明了 nanos world 是一个强大且可靠的平台,足以承载宏大的游戏模式项目。 Zenkai 团队致力于打造沉浸式忍者 RP 体验的努力得到了回报,我们非常期待继续突破极限!
如果你还没有加入,快去 Zenkai 的 Discord 看看吧! 🥷
我截取的一些幕后截图:






全新 default-characters 包
我们创建了一个全新的 default-characters 包,其中包含了所有实现为 Class 的原生角色,可轻松生成并用于你的项目中。
每个角色都已经配置了各自的材质、自定义网格体或衣物。
使用示例:
local adventure_male_b = AdventureMaleB(Vector(0, 0, 100), Rotator())
local male = Male(Vector(0, 0, 100), Rotator())
local post_apocalyptic = PostApocalyptic(Vector(0, 0, 100), Rotator())
local chicken = Chicken(Vector(0, 0, 100), Rotator())
...
它们包含基础的 NPC 行为,可以四处移动并在受到伤害时逃跑。
鸡
我们还使用 CharacterSimple 在该包中添加了一个全新的 Chicken 类,你甚至可以附身操控它!

服务器性能全面革新
Zenkai 在地图上拥有数百名玩家和数千个实体,正不断推高 nanos world 的极限,这是一次绝佳的压力测试,也让我们找到了若干瓶颈与改进空间。因此,本月我们在服务器性能与优化方面做出了重大改进。
距离优化
我们实现了一套全新的距离优化系统,可大幅减少远距离 Actor 的网络流量。服务器不再为每位玩家持续同步所有 Actor 快照(位置/旋转/速度),而是根据距离智能降低同步频率。
该系统可通过 Config.toml 中的 distance_optimization 设置或控制台命令进行配置:
# 通过减少来自远距离 Actor 的同步来提高网络利用率的距离优化级别 (0 - 9)
# (0) 禁用,(4) 是一个不错的中间值,(9) 最激进
distance_optimization = 4
随着 Actor 距离玩家越来越远,其同步率会线性降低,直到达到最大距离后完全停止同步。在包含大量实体的大型地图上,这能将网络占用最高降低 80%,同时依然保证附近玩家拥有良好的体验!
快照同步批处理
我们重做了服务器向客户端同步 Actor 位置/旋转/速度的方式。
此前,我们总是针对每个更新的 Actor 发送独立的网络数据包来同步快照,这可能导致繁忙的服务器每秒产生数千个数据包。
现在我们将所有快照更新打包在一起,并在每个 Tick 中通过单次网络调用发送,从而大幅降低开销并提升性能。
角色性能
我们对 Character 和 CharacterSimple 的实现进行了多项改进,以降低它们的 CPU 及网络开销,尤其是对于不需要完整模拟或同步的远处角色。
我们根据距离和网络主控动态启用/禁用多个组件和功能,这为包含大量角色的服务器带来了显著的性能提升;例如移动组件、相机组件以及多个 Tick 函数,现在都会根据需要自动激活。
语音通话重做
我们重构了 VOIP 系统,以提升性能、减少网络占用并降低语音卡顿/断音现象。
现在 VOIP 音频数据的发送更加快速高效,能更好地应对网络状况并降低服务器端的 CPU 使用率,同时确保不会阻塞其他更关键的网络调用。
此外,我们通过在客户端语音传输中添加缓冲区,改善了微卡顿/断音问题。
文件传输系统
我们降低了文件传输的优先级,以防止其干扰关键的游戏数据。此外,借助全新的 max_file_transfer_rate 设置,你现在可以控制用于文件传输的最大带宽,确保即使在玩家下载大型资产或脚本文件时,服务器依然能保持快速响应。
劣质连接
我们新增了一套系统,可自动检测劣质连接并踢出触及最大挂起网络缓冲区的玩家,因为这此前会导致服务器不同步和不稳定。
Steam 维护
现在当 Steam 因维护而宕机时,玩家将不再会被踢出服务器,允许他们在 Steam 服务中断期间依然保持连接并继续游玩。
更小的数据包
此外,我们成功缩减了所有网络数据包的大小,改善了体积占用并降低了每次网络调用的整体网络开销。
脚本与 API
我们为脚本 API 添置了大量全新方法、事件与改进:
新方法
-
Server.SetDefaultPlayerDimension() -
Server.SetDefaultEntityDimension() -
Server.AddMapSpawnPoint() -
Server.GetConnectionCount() -
Client.OpenEscapeMenu() -
WebUI:IsReady() -
Decal:SetSize() -
Decal:SetFadeIn() -
Decal:SetFadeOut() - Failed to load method CallRemotePlayers (事件) data.
改进的方法
VehicleWheeled:SetSteeringSetup()- 新增steering_curve参数VehicleWheeled:SetTransmissionSetup()- 新增forward_gear_ratios/reverse_gear_ratios参数Sky.SetTimeOfDay()- 新增transition_time参数Actor:IsNetworkDistributed()- 现在返回该 Actor 是否 能够 分配主控- Failed to load function data. - 现在返回所有子类的实体数量
新事件
PlayerDisconnect (Server)- 当玩家断开连接时触发(即使尚未完全生成)
新枚举
- 新增枚举 SoundType:
Ambient(受新增的 ** Ambient Sound** 音频设置影响)。
载具操控修复
我们终于修复了一个困扰已久的载具操控和驾驶问题;此前该功能完全损坏,导致手感极差且非常打滑。
现在配置载具设置可以正确地影响其手感和操控性能。
此外,我们添加了用于配置载具转向和传动设置的新方法,从而大幅提升对驾驶操控手感的控制力:
VehicleWheeled:SetSteeringSetup()- 新增steering_curve参数VehicleWheeled:SetTransmissionSetup()- 新增forward_gear_ratios/reverse_gear_ratios参数
线程池系统
我们实现了一套全新的线程池系统来处理所有异步操作:
- HTTP 请求 -
HTTP.RequestAsync() - 数据库操作 -
Database:SelectAsync()Database:ExecuteAsync() - 文件操作 -
File:ReadAsync()
新增命令行参数 --thread_pool_count,用于配置为异步操作初始化的线程数量。默认情况下,它将初始化 8 个线程或当前可用的 CPU 核心数(取二者中较大值)。
这通过按需复用工作线程,避免了为每个新异步操作重新分配线程,从而提升了服务器性能。
身份验证排队系统
当大量玩家同时加入时,Steam 身份验证有时会对服务器实施速率限制。我们添加了身份验证队列来优雅地应对此问题:
玩家将排队并以平稳的速率进行验证,防止触发 Steam 速率限制错误,即使在海量并发连接时也能顺利加入。
全新光线追踪设置
我们在视频设置中添加了全新的光线追踪设置!你现在可以独立开启或关闭全局光线追踪、硬件光线追踪或超量光源系统。
加载屏幕增强
加载屏幕现在可以更清晰地展示初始阶段的状态,目前会显示:
- 正在发送客户端信息
- 正在等待 Steam 认证
- 正在获取服务器需求
Windows 任务栏进度条
现在 Windows 任务栏 将只显示一个从 0 到 100% 的连续进度条,而不会在每个阶段重复在 0 到 100% 之间来回跳动,从而提供更好的进度直观感受。
全新原生资产
我们在默认资产包中新增了两个 Fab 资产包:
- FXVarietyPack Particles:各种粒子效果
- Ancient Treasure:来自 Dekogon 的各种宝藏网格体
新配置与命令
新配置
我们在 Config.toml 中新增了若干服务器配置项:
# 语言(国家/地区代码)
language = "br"
# 最大同步率(Hz,即每秒同步次数)(1 - 30)- 控制玩家之间以及与玩家相关的
# 位置/旋转/速度等 Actor 的同步速率 - 固然受到刻速率的限制
max_sync_rate = 30
# 每个客户端的最大文件传输速率(KB/s)(128 - max_send_rate)- 限制每个已连接玩家的
# 文件传输带宽 - 这将受到 'max_send_rate' 设置的限制
max_file_transfer_rate = 1024
# 距离优化级别,通过减少远距离 Actor 的同步来优化网络占用(0 - 9)
# (0) 禁用,(4) 是折中的推荐值,(9) 最激进
distance_optimization = 4
新增服务器语言国旗

全新的 language 设置允许指定服务器的语言,并会在服务器列表中显示对应的国旗。
max_send_rate 变更
我们将 max_send_rate 的单位定义从 MB/s 改为 KB/s,并将默认值设置为 1024 KB/s。
如果你配置了自定义的 max_send_rate 设置,可能需要进行相应调整(乘以 1024)。
全新控制台命令
以及全新的控制台命令,允许你在无需重启服务器的情况下实时修改这些设置:
profilinglog_levelmax_send_ratemax_file_transfer_rate
Esc 菜单中的服务器列表

现在,即使你已经连接到了某个服务器,也可以直接浏览并连接至其他 nanos world 服务器!
再也不需要先断开连接再通过启动器重新连接了!
Vault Improvements
Markdown 支持
资源库中的资源描述和更新日志现在支持简化的 Markdown 语法:
# 标题
## 标题
### 标题
**粗体文本**
*斜体文本*
- 列表项

这能让创作者们将自己的资源库资源排版得更加美观且易于阅读!

团队身份组
资源库团队现在拥有一套完善的身份组系统:
- 管理员 (Admin):管理团队成员、编辑团队信息、管理所有资源
- 维护者 (Maintainer):管理资源与更新
- 开发者 (Developer):可以推送资源更新
- 成员 (Member):拥有受限权限的团队成员
你可以在游戏内的 管理 标签页中点击你的团队,从而管理团队身份组和信息:

Updated Dependencies
我们更新了若干关键依赖项:
- 虚幻引擎 5.7.4:
- DLSS 8.5
- Steam SDK 1.64
- Sentry 1.9.1
漏洞修复与稳定性
本月我们修复了 40 多个漏洞、致命错误和崩溃。请在我们的 Changelog Discord 频道查看完整变更:
Changelog Discord 频道https://discord.com/channels/124107916432113666/680526360015274047结语
三月又是成果丰硕的一个月! Zenkai 服务器在 nanos world 上运行并突破 500+ 玩家,证明了 nanos world 已经为承载大型项目做好了准备。
距离优化系统和 Actor 同步效率的改进为服务器性能带来了颠覆性的提升。我们现在看到服务器可以在网络开销和 CPU 占用极低的情况下处理数千个实体。
这些改进共同使 nanos world 成为一个更具可扩展性的平台,能够支持更有野心和规模的项目。无论你是运行一个小型角色扮演服务器还是大型沙盒,nanos world 现在都能更好地从容应对!
我们仍在持续迭代和优化服务器性能,并在未来几个月规划了大量改进,敬请期待更多更新!
感谢大家在优化 nanos world 期间给予的耐心与支持。我们致力于将其打造成支持多玩家游戏模式的最佳平台! 💙
下一次更新再见!


