4 月:载具生命值、文档++!
载具生命值、文档++、精简资产、工具类及更多!

来看看 4 月最新更新的汇总吧!
载具损坏系统
这次更新是我们即将获得的最酷的新增内容之一!现在 VehicleWheeled 有了新的损坏与生命值系统,它们可以受到损坏,如果生命值归零,载具会爆炸,失去轮胎并变成烧毁状态!
此行为可以通过新方法配置:Vehicle.SetExplosionSettings()。
我们仍将继续改进并为该系统添加新功能,例如允许更多自定义和破坏阶段。
载具轮胎爆胎
除了生命值系统外,载具现在在受损时轮胎可以爆炸!
也可以通过新方法手动编写脚本:Vehicle.SetTireFlat(index, true)。
为了使其生效,每个车轮骨骼必须在载具骨骼资产中具有物理体碰撞。
文档改进
我们的文档这个月经历了许多改进和修复,它正变得越来越自动化和健壮!
另外值得一提的是,我们成功修复了最大的问题,即链接指向页面中错误锚点的问题。
基础概念
我们创建了新的基础指南概念,涵盖了 nanos world 所有重要的基本概念,帮助新手更好地入门开始编写脚本和制作模组!
这是每个人应该首先阅读的新初始指南!
基础概念getting-started/essential-concepts更好的示例
我们实现了新的示例格式,自动显示在每个函数/事件下方的下拉菜单中,并分组在每个页面的 # 示例 部分中:

标准 Lua 类
我们在文档中新增了一个部分,列出所有标准 Lua 库 string、math 和 table,记录了其方法和示例!帮助新手学习 Lua 基础知识!
函数提示格式
现在函数类型将有一个工具提示,告诉此函数将使用哪些参数调用,并详细描述每个参数!

表格提示格式
此外,表格现在也有工具提示,描述预期/返回的表格格式!

枚举用法
我们开发了一项功能,自动识别 API 中使用枚举的所有位置,并将它们全部列在每个枚举定义下:

日志文件
日志文件现在按文件夹组织并按日期分隔,每次会话创建一个新的日志文件,以便更好地组织。
在服务器上,根目录下存在一个名为 .logs/ 的新文件夹来包含所有文件:

服务器精简资产
这可能是我们为服务器所有者引入的最好的东西之一!现在可以在不需要在服务器上安装资产包的情况下启动服务器!
服务器端从来不需要资产文件,但直到上次更新我们仍然需要从资源库下载它,因为里面可能有地图包。
但由于我们有了新的地图包系统,服务器完全不需要资产文件,我们正在添加一个新的命令行标志 --use_vault_assets_lean!
此标志将告诉服务器不下载任何资产包(如果尚未安装),而是仅下载其 .toml 文件并以精简模式加载资产包!玩家仍将像往常一样从资源库下载所有资产。
工具与原生表格
我们重组了工具类,并新增了 NanosTable 工具类!此类将包含处理 Lua 表格的实用方法!
我们还扩展了一些原生类,例如 string,为其添加了自定义辅助方法,如 StartsWith()、Trim() 和 EndsWith(),可以像这样在字符串上原生调用:
local my_string = "Hello Mom!"
local starts = my_string:StartsWith("Hello")
添加到原生类的所有自定义方法都将使用 PascalCase。在文档中可以通过图标 或
来区分。
改进的 Esc 菜单
我们继续改进 Esc 菜单,现在它与资源库集成,显示当前游玩的地图和游戏模式,还显示服务器徽标!

蓝图参数
我们进一步改进了蓝图集成的实现,现在允许将任何虚幻结构体作为参数传递给它!
它通过动态迭代和解析所有结构体属性,并从作为参数传递的 Lua 表格中检索这些值来工作。
反之亦然。将虚幻结构体作为参数传递给 Lua 会将其解析为 Lua 表格!适用于原生和自定义结构体!
一些虚幻结构体如 FTransform 或 FSlateBrush 具有一些复杂参数以及“假的” Setter/Getter,不允许正确解析。
对于其他类似的结构体,我们仍然需要实现自定义的与 Lua 之间的解析。如果你遇到更多类似的结构体并希望集成,请告诉我们!
新的调试设置
我们在调试设置中新增了一个部分,允许我们使用模拟网络条件进行测试,这有助于我们(开发者)以及脚本编写者测试游戏在连接不良的玩家那里的表现!
我们可以用它模拟高延迟、有限带宽甚至丢包!
多客户端
我们终于解决了启动多客户端实例的所有问题!现在你可以启动多个游戏实例来测试脚本的多人游戏方面,没有任何障碍,也不会因文件传输问题而被断开/踢出!

新的缓存系统
我们实现了新的缓存系统!与旧系统相比它超级快,这意味着加载时间将大大减少!
缓存系统通过本地缓存资产哈希来加速加载时间,这样客户端/服务器只需验证它,而无需每次加入或打开服务器时重新计算整个文件的哈希(哈希文件是一个非常慢的操作)。
旧的缓存系统通过在 Assets/.cache/ 文件夹下为每个资产创建一个文件来存储缓存信息。但这导致了很多问题,因为访问操作系统文件系统来访问每个文件很慢,而且由于存在大量 .cache 文件,压缩资产文件夹也非常慢。
但现在我们改进了这个系统,每个资产包只有一个 .cache 文件!这使一切都超级快,加载时间现在大大提升!
客户端文件
现在 File 类也是客户端的了!允许脚本编写者在客户端也创建和访问持久文件!
客户端的文件访问是沙盒化的,仅允许在 Packages/127.0.0.1/.transient/ 文件夹内,出于安全考虑不允许访问任何外部文件或文件夹。
这个小改动通过在客户端本地存储缓存和自定义保存文件,带来了许多其他可能性!
杂项改进
我们还获得了一堆较小的杂项改进!
文件字符限制
我们成功重构了内部对文件系统的访问,修复了 Windows 上不允许文件/资产超过 240 个字符的问题,该问题在尝试加载时会导致错误!
角色交互
Character 现在始终计算交互对象,即使是在瞄准时。改善整体游戏手感。
加载屏幕时间
这个月整体游戏加载时间极大改善!随着新缓存系统的加入以及我们做出的多项内部改进,我们将最低硬编码耗时从 3-5 秒降至 0.5 秒!现在加入服务器超级快!
鼠标事件
现在鼠标事件将始终触发,即使 WebUI/控件在前方拥有焦点!
画布屏幕位置
我们的 Canvas 类获得了多项改进,允许使用新的 screen_position 在屏幕上定位。构造函数参数,以及新方法 Resize()、SetScreenPosition() 和 SetAutoResize()。
这使得画布渲染到屏幕可以更加自定义!
结语
总之,4 月对 nanos world 来说是激动人心的一个月,在改善新手入门体验方面取得了重大进展。文档的各种改进和新指南将对初学者产生巨大影响。
允许服务器无需下载资产即可启动的新功能也是一个改变游戏规则的功能,使自动化服务器安装和启动变得更简单。
此外,我们还解决了几个一直困扰大家的问题,包括同时连接多个客户端实例以及一个阻止游戏/服务器在 Windows 上加载长路径资产的漏洞。更不用说 WebUI 获得焦点时鼠标输入事件不触发的问题,这是一个反复出现的投诉,现在已完全解决!
总的来说,这是充满巨大可能性和新功能加入的一个月,再次非常感谢大家的支持!下个月见! 😁
