separation-of-concerns - 如何在 alt :V 中设置资源依赖项

标签 separation-of-concerns altv

我已经看到多个资源之间可能存在依赖关系。因此resource1 使用resource2 的功能。资源之间的通信是如何工作的?
什么时候应该将不同资源中的脚本分开?将一个资源用于整个游戏模式还是将其拆分更好?
干杯

最佳答案

服务器端
每个资源都是相互隔离的。资源使用 cpp-sdk 进行通信。隔离取决于脚本运行时。一些运行时如 c# 支持在资源之间共享内存,而 nodejs 不支持在不同线程上运行的资源之间共享内存。
您总是必须明确地告诉运行时您想要向其他资源公开哪些函数和数据。
这意味着在调用函数或访问数据时,您的运行时开销很小,因为通信数据需要序列化到非托管 cpp 内存,然后再返回到其他资源的内存。
当运行时支持共享相同的内存时,这种开销不会发生在具有相同类型的资源之间。
坚持使用单个资源时,您没有运行时开销,但无法单独交换资源。
客户端
它与服务器端基本相同,只是目前仅存在一个不支持在资源之间共享内存的 v8 javascript 模块。
对于客户端而言,调用其他资源的开销很可能不如服务器端那么重要。特别是当您想减少服务器主线程必须执行的 CPU 密集型任务时。对于客户端,多个资源也减少了客户端必须下载的数据量,因为当您更改资源中的某些内容时,客户端必须重新下载整个资源。
tl;博士
服务器端
当性能最重要时,最重要的是服务器端的单一资源。当您需要不时更换资源时,请使用多个资源。
客户端
当您使用其他人的资源或想要拥有模块化资源时,请使用多个资源。将您的 Assets (模组、图像等)拆分为尽可能多的资源,这是有意义的,以减少发生更改时的数据下载。

关于separation-of-concerns - 如何在 alt :V 中设置资源依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63071617/

相关文章:

repository-pattern - 用于检索标量值的没有域对象的存储库模式

entity-framework - Entity Framework 6 数据库优先和洋葱架构

c# - 适当的存储库设计,将一个对象附加到另一个对象

asp.net-mvc - 如何在 POST 操作中将 View 模型映射回域模型?

javascript - 如何将 Web 组件分离到单个文件并加载它们?