Godot
本页译自英文。如两者有出入,以英文页面为准。 阅读英文页面
Godot 提供两种语言,Lingara 为每一种都准备了工具包。GDScript 游戏使用 Lingara 插件。Godot C# 游戏使用 Lingara.Embed,也就是 Unity 游戏所用的同一个软件包。在一个项目中只使用其中之一,绝不同时使用两者。下方的标签页分别展示了两者。
安装
GDScript。 从 Godot Asset Library 安装 Lingara 插件,然后在“项目设置”的“插件”中启用它。启用后会添加一个名为 Lingara 的自动加载,每个场景都可以通过 /root/Lingara 访问它。
C#。 把 Lingara.Embed 作为包引用添加到你的项目中。下方的示例节点 LingaraEmbedNode 不属于该软件包:把它的源代码加入你的项目,并把它放进一个场景中。
从你的服务器获取令牌
两个工具包都不持有密钥。当核心需要令牌时,会向你自己的服务器请求,服务器用服务器工具包签发一个令牌,并返回令牌及其过期时间。
使用插件时,在“项目设置”中设置你的服务器的令牌路由,Lingara 会在自己的线程上调用它。如果该路由需要玩家的会话,请改为在运行时设置,因为项目设置会随你的导出一起发布。或者连接 token_needed,自己响应每一个请求。使用 C# 时,每当客户端请求令牌,示例节点都会向你的令牌路由发送 POST 请求。无论哪种方式,都用 token_unavailable 或 TokenUnavailable 报告失败,让正在等待的调用立即失败。
每帧处理事件
核心在自己的线程上执行网络 I/O。插件的自动加载每帧清空一次队列,并为每个事件发出一个信号,所以你只需连接游戏需要的信号,无需自己清空任何东西。C# 节点在 _process 中清空队列,每帧最多 256 个事件,并把每个事件重新作为 Godot 信号发出。
同样的信号也承载流式的 NPC 回复(见 NPC 对话)和练习更新(见练习结果)。
<PackageReference Include="Lingara.Embed" Version="0.1.0-alpha.6" />