10 月: C 模块包与 UE 5.3!
C 模块包与虚幻引擎 5.3 更新!

来看看 10 月最新更新的汇总吧!
新包类型:C 模块
我们正在引入一种新的包类型:C 模块!
在上次的博客新闻中,我谈到了我正在对模块和 DLL 加载系统进行的重构,到目前为止,我们有一个 Modules/ 根文件夹,可以加载 .dll 和 .so 预编译二进制文件供 Lua 执行,因为它们随后可以通过 Package.Require() 加载。
在那篇博客中,我谈到了一项改进,使二进制库不再由 Lua 的 require() 加载,而是由我自己的加载系统加载,从而允许使用 Package.Require() 来加载它们(改进了加载这些自定义库时的沙盒化和安全性)。
现在我们有了一个完全专用的包类型,因此不再需要显式使用 Package.Require 来加载 DLL,我们现在只需加载模块的包,该包将配置 DLL 列表,并在包加载时自动加载。
此外,还可以将这些模块包上传到资源库,实现一切整合!
在专门的 C 模块页面查看更多信息:
C 模块包core-concepts/packages/c-module虚幻引擎 5.3

我们终于将 nanos world 的虚幻引擎版本更新到了最新的 5.3!我们也已经用上了最新的热修复版本 5.3.2。
这个版本总体上带来了许多改进,但我们仍在解决一些与原生地图相关的问题,这些地图在某些视频设置下无法正常工作。
杂项
以下是本月所做的次要功能改进的摘要:
GetAllValuesKeys
现在所有实体、静态 Server 和 Client 类都有一个新方法 GetAllValuesKeys,它返回一个包含所有值集合键的列表
重启与切换地图事件
Server 获得了两个新事件:Restart 和 ChangeMap,它们分别在服务器重启和地图更改(通过控制台或脚本)时触发。
请注意,当地图更改时,服务器也会重启,从而同时触发这两个事件。
改进的 Table.Dump
我对我们的 Table.Dump 做了一些改进,现在它会生成 Lua 兼容的格式,可以轻松复制粘贴到代码中。示例:
Console.Log(NanosTable.Dump(Server.GetMaps()))
{
[1] = {
["author"] = "nanos™",
["compatible_game_modes"] = {
[1] = "sandbox",
},
["key"] = "nanos-world::BlankMap",
},
[2] = {
["author"] = "nanos™",
["compatible_game_modes"] = {},
["key"] = "nanos-world::EmptyMap",
},
[3] = {
["author"] = "nanos™",
["compatible_game_modes"] = {
[1] = "sandbox",
},
["key"] = "nanos-world::OceanMap",
},
[4] = {
["author"] = "nanos™",
["compatible_game_modes"] = {
[1] = "sandbox",
},
["key"] = "nanos-world::TestingMap",
}
}
Zip 清理
现在从资源库下载的资产包中所有已下载的 .zip 文件都会自动删除,释放大量磁盘空间!(这早就该做了 😜)。
请注意,资产 .download/ 文件夹中现有的 .zip 文件仍会保留,你需要手动清理或使用维护标签页进行清理。
万圣节活动

上个月我们举办了万圣节活动,其中我们推出了万圣节主题的游戏模式,并通过 Steam 的 Playtest 系统让整个 Steam 社区都能游玩这款游戏。
今年 Steam 的做法相当不同,不再推广带有万圣节活动的游戏,而只推广万圣节(恐怖)游戏本身,不幸的是这没有像去年那样很好地推广 nanos world。
但我们要感谢所有参与为 nanos world 创建新游戏模式的人,这些新游戏模式始终是我们资源库的绝佳补充!
我们将用特殊标签和徽章在资源库中突出显示万圣节创建的内容!
结语
上个月我们没有发布新闻博客(这是自开始以来的第一次),但现在我们恢复了常规!
本月我想为我们的模块系统提供一个最终的解决方案,现在它更加稳固,可以更广泛地使用,并更好地与其余核心系统集成!
虚幻引擎 5.3 更新也是我们一直耐心等待迈出的一大步,因为我们没有更新到虚幻引擎 5.2,我们已经将近一年没有更新虚幻引擎版本了。保持更新到最新版本总是好的!
所有其他杂项改进都是得益于你们的建议和漏洞报告!再次感谢你们继续这样做并支持 nanos world!
下个月见!
