5

我已经看到多个资源之间可能存在依赖关系。因此resource1 使用resource2 的功能。资源之间的通信是如何工作的?

什么时候应该将不同资源中的脚本分开?将一个资源用于整个游戏模式还是将其拆分更好?

干杯

4

1 回答 1

4

服务器端

每个资源都是相互隔离的。资源使用 cpp-sdk 进行通信。隔离取决于脚本运行时。一些运行时如 c# 支持在资源之间共享内存,而 nodejs 不支持在不同线程上运行的资源之间共享内存。您总是必须明确地告诉运行时您想要向其他资源公开哪些函数和数据。这意味着您在调用函数或访问数据时会有很小的运行时开销,因为通信数据需要序列化到非托管 cpp 内存,然后再返回到其他资源的内存。当运行时支持共享相同的内存时,这种开销不会发生在具有相同类型的资源之间。当坚持单一资源时,你不会'

客户端

它与服务器端基本相同,只是当前仅存在一个不支持在资源之间共享内存的 v8 javascript 模块。对于客户端而言,调用其他资源的开销很可能不如服务器端那么重要。特别是当您想减少服务器主线程必须执行的 CPU 密集型任务时。对于客户端,多个资源也减少了客户端必须下载的数据量,因为当您更改资源中的某些内容时,客户端必须重新下载整个资源。

tl;博士

服务器端

当性能最重要时,最重要的是服务器端的单一资源。当您需要不时更换资源时,请使用多个资源。

客户端

当您使用其他人的资源或想要拥有模块化资源时,请使用多个资源。将您的资产(模组、图像等)拆分为尽可能多的资源,这是有意义的,以减少发生更改时的数据下载。

于 2020-07-24T10:42:52.693 回答