如何在 alt:V 中设置资源依赖关系
How to setup resources dependencies in alt:V
我发现多个资源之间可能存在依赖关系。这样 resource1 使用 resource2 的功能。资源之间的通信是如何进行的?
什么时候应该将不同资源中的脚本分开?在整个游戏模式中坚持使用一种资源还是将其拆分更好?
干杯
服务器端
每个资源都是相互隔离的。这些资源使用 cpp-sdk 进行通信。隔离取决于脚本运行时。某些运行时如 c# 支持资源之间共享内存,而 nodejs 不支持不同线程上的资源 运行 之间共享内存。
您始终必须明确告诉运行时您要向其他资源公开哪些函数和数据。
这意味着您在调用函数或访问数据时的运行时开销很小,因为通信数据需要序列化到非托管 cpp 内存,然后再返回到其他资源的内存。
当运行时支持共享同一内存时,这种开销不会发生在具有相同类型的资源之间。
当坚持使用单个资源时,您没有运行时开销,但不能单独换出资源。
客户端
它与服务器端基本相同,只是目前只有一个 v8 javascript 模块不支持在资源之间共享内存。
对于客户端,调用其他资源的开销很可能不像服务器端那么重要。特别是当你想减少服务器主线程必须执行的 cpu 密集任务时。对于客户端,多个资源也减少了客户端必须下载的数据量,因为当您更改资源中的某些内容时,客户端必须重新下载整个资源。
tl;dr
服务器端
当性能最重要时,坚持使用服务器端的单一资源。当您需要不时换出资源时,请使用多个资源。
客户端
当您使用其他人的资源或想要拥有模块化资源时,请使用多个资源。将您的资产(模组、图像等)拆分为尽可能多的有意义的资源,以减少发生变化时的数据下载。
我发现多个资源之间可能存在依赖关系。这样 resource1 使用 resource2 的功能。资源之间的通信是如何进行的?
什么时候应该将不同资源中的脚本分开?在整个游戏模式中坚持使用一种资源还是将其拆分更好?
干杯
服务器端
每个资源都是相互隔离的。这些资源使用 cpp-sdk 进行通信。隔离取决于脚本运行时。某些运行时如 c# 支持资源之间共享内存,而 nodejs 不支持不同线程上的资源 运行 之间共享内存。 您始终必须明确告诉运行时您要向其他资源公开哪些函数和数据。 这意味着您在调用函数或访问数据时的运行时开销很小,因为通信数据需要序列化到非托管 cpp 内存,然后再返回到其他资源的内存。 当运行时支持共享同一内存时,这种开销不会发生在具有相同类型的资源之间。 当坚持使用单个资源时,您没有运行时开销,但不能单独换出资源。
客户端
它与服务器端基本相同,只是目前只有一个 v8 javascript 模块不支持在资源之间共享内存。 对于客户端,调用其他资源的开销很可能不像服务器端那么重要。特别是当你想减少服务器主线程必须执行的 cpu 密集任务时。对于客户端,多个资源也减少了客户端必须下载的数据量,因为当您更改资源中的某些内容时,客户端必须重新下载整个资源。
tl;dr
服务器端
当性能最重要时,坚持使用服务器端的单一资源。当您需要不时换出资源时,请使用多个资源。
客户端
当您使用其他人的资源或想要拥有模块化资源时,请使用多个资源。将您的资产(模组、图像等)拆分为尽可能多的有意义的资源,以减少发生变化时的数据下载。