跳至正文

8 月:API、自动文档以及更多!

· 7 分钟读完
Gabriel • SyedMuhammad
lead developer™

开源 API、自动生成文档及更多!

又一个月过去了,以下是期间发生的事情的总结!

开源 API​

本月,我们在整个社区的帮助下创建了官方 nanos world API,这是一个有组织的所有类、静态类、工具类、结构体及其所有函数和事件的集合。我们这样做是为了有一个官方的地方可以获取 nanos world 的所有脚本。

VSCode 扩展​

有了 API,就可以专业化 nanos world for VSCode 扩展,由 @Derpius 创建。现在它使用 API 生成所有 Lua 存根!

这样,API 中的所有更新直接反映在 VSCode 扩展上,始终保持更新!

别忘了给它评分 😉。

智能文档​

我们的文档在底层经历了完整的重构!现在所有脚本参考页面都使用我们的新 API 自动生成!这是向前迈出的一大步,因为之前我在每个页面中分别编写每个函数。现在我只需要更新一个 JSON,文档就会正确构建!

不仅是自动化,现在我们有一些交互式弹出窗口,当你悬停时显示类/结构体/函数的更多信息!这将极大地帮助新人理解 nanos world 的基础知识!

新 UI(控制台和聊天)​

我更新了我们剩余的控制台和聊天的旧设计 UI!现在它们与菜单风格相同!

新的性能分析统计信息​

我添加了一个实时性能分析视图,用于显示游戏和脚本的性能信息。它显示操作累积花费的时间以及最后一秒帧内的平均值。

它对于调试和查找核心游戏及你的包中的瓶颈非常有用!它显示每个包的单独事件以及它们执行所需的时间。

触发器白名单​

现在触发器可以在构造函数中传递一个列表,以便仅对特定类触发!这有助于脚本编写者更加关注性能,并减少在 Lua 端检查触发的实体是否为我们想要的类型所需的大量校验!

-- 仅触发角色和载具
local trigger = Trigger(
Vector(), -- 位置
Rotator(), -- 旋转
Vector(100), -- 范围
TriggerType.Sphere, -- 触发器类型
true, -- 是否可见
Color(1, 0, 0), -- 颜色
{ "Character", "Vehicle" } -- 仅重叠类
)

SceneCapture 仅渲染​

SceneCapture 获得了新方法,仅渲染通过参数手动设置的 Actor。这允许在仅渲染特定实体(例如角色)时使用透明背景。

SceneCapture.AddRenderActor(actor)
SceneCapture.RemoveRenderActor(actor)
SceneCapture.ClearRenderActors()

近战改进​

Melee 类获得了几项改进,包括新方法和事件,使其更加灵活。你现在可以根据击中的表面设置攻击动画和撞击声音列表!它还获得了一个新事件 Attack,在攻击发生时触发。更不用说近战上也进行了几个漏洞修复和改进!

Melee.AddAnimationCharacterUse(asset_path, play_rate, slot_Type)
Melee.SetImpactSound(surface_type, asset_path, volume, pitch)

新追踪​

我添加了两个新的追踪方法 Trace.LineSingle() 和 Trace.LineMulti(),取代旧的 Trace。这些新方法现在接收一个 trace_mode 参数,支持以按位标志传递多个参数,这种新的参数传递方式非常适合未来更新,因为它不会增加破坏性更改,并且还减少了方法中所需的参数数量。

例如,你可以这样传递:

-- 追踪复杂碰撞,将实体作为实体表值返回,并在世界中绘制调试线。
TraceMode.TraceComplex | TraceMode.ReturnEntity | TraceMode.DrawDebug

性能改进​

我一直在努力提高性能,这是我的主要优先事项之一。现在有了新的性能分析统计信息,我们能够更快地找到瓶颈!

我们在瞄准时以及血液贴花/粒子生成方面的性能有了很大改进。现在血液会考虑所有效果可扩展性设置级别,根据此生成更多/更少。

我意识到在生成数万个实体时(实体 Tick 时间)会导致性能下降的“问题”,我正在思考解决方案。问题出现是因为每个实体每帧都被“tick”,所以数千个实体意味着每帧数千个更多的 tick。

原生 LoadPackage​

我在 Package.LoadPackage() 方法上做了很大改进,实现了 Lua 代码的原生加载。因此你在加载文件中返回的任何内容都将在加载器侧正确接收!之前它对返回的数据进行丑陋而奇怪的序列化/反序列化,现在它的行为像原生操作符!

CEF 改进​

我仍在不断改进和调整与 CEF 集成的边缘问题。上个月我修复了几个漏洞和崩溃,并致力于性能改进,仍有一些点需要改进,还有一个我关注的漏洞需要纠正。

此外,我将始终使我们的 CEF 版本保持最新,它刚刚更新到 104.4.26,我们的版本也更新了!

新游戏设置​

我们的设置获得了可以更改的新选项:

  • 在世界中绘制网络调试
  • 在屏幕上显示网络统计信息
  • 自动重新对齐视角
  • 视场角可被玩法更改

认证网站重新设计​

@MegaThorx 对我们的认证网站进行了大规模重构,现在支持深色模式和新的 UI/UX 以获得更好的可用性!

大量漏洞修复​

值得一提的是我们本月获得的大量漏洞修复和改进,这些都写在我们 Discord 的更新日志中。

一些例子包括:使用触发器时导致服务器死锁的漏洞(服务器冻结)、使用协程时导致崩溃的漏洞、日志重复、UX 问题、服务器缓存不工作(加载需要数分钟)、主菜单崩溃等等!

社区亮点​

向法国 🇫🇷 社区大声致意,他们在服务器上发展了很多!特别是 Mouloud,他正在为 nanos world 创建令人惊叹的包!

结语​

许多事情正在改进,漏洞正在修复,API 的创建和文档的自生成正在改变生活(尤其是对我来说,现在用新内容更新文档要容易得多),对于所有脚本编写者也是如此,他们可以依赖 100% 基于官方 API 的 VSCode 扩展。

我再次强调在我们的反馈中心发布想法并投票的重要性。例如很明显,目前每个人最大的需求是维度 😜。

另外,也不要犹豫在我们的问题追踪器中发表漏洞。如果你在那里发布你的漏洞,它被修复的几率增加 10000%。

这个月就到这里,再次感谢大家的支持!!!