当前位置: 首页 > 知识库问答 >
问题:

如何在Unity3D中设计一个可以修补的游戏?

游炳
2023-03-14

我正在设计我的开放世界RPG的架构(我创建它是为了好玩,我不想让它成为热门游戏:D),我不得不停止它,因为我撞到了一堵严重的墙。

如果a创造了一个大型的开放世界游戏,那么它的规模也会很大。

假设我的游戏有一个启动器,当发现新补丁时,它会自动更新自己。

再次下载整个游戏是不可接受的,因为如果有一个小错误修复,如果只有一个小变化,谁会再次下载整个游戏?

所以我不得不做一个可修补的架构,所以如果有更新,我的启动器将只下载改变的文件,而不是整个客户端。

当我构建游戏时,90%(如果不是更多)的游戏数据都在一个程序调试数据库中。

当我看一个游戏,例如魔兽世界,它的文件被组织在压缩的目录中。如果一个区域的特定位置有一个小的修复(比如缺少一棵树),他们不必更新整个游戏,甚至不需要更新整个地图,甚至不需要更新整个区域。

相反,他们只需要更新文件,该文件确定(例如)世界上20x20米的区域是错误所在。

因此,让我们用一个简单的例子来实践:

我有一个场景有一个很大的地形,我必须修复它的一小部分。

如何在不再次下载整个客户端的情况下更新已发布客户端的错误部分?

提前感谢您的帮助!:)

共有1个答案

经博延
2023-03-14

有几种方法可以做到这一点。unity-3d中最常见的方法之一是使用资产捆绑。这将允许您以类似于wow的方式更新游戏。

应用商店中也有很多资产。我个人使用的是M2HPatcher,主要是因为它当时是免费的。我不确定它是否仍然

 类似资料:
  • 问题内容: 我正在使用其他人编写的模块。我想猴子修补模块中定义的类的方法。我发现的示例显示了如何执行此操作的所有示例均假设我自己将自己称为该类(例如Monkey-patch Python类)。然而,这种情况并非如此。在我的情况下,该类是在另一个模块的函数中初始化的。请参阅下面的(大大简化的)示例: thirdpartymodule_a.py thirdpartymodule_b.py mymodu

  • 我正在开发两个REST API,它在我的后端编辑和暂停一些东西。对于编辑,我使用的是: 什么是最好的方法开发暂停视频服务。我应该为此使用还是?输入将只是ID。如果我使用,那么如何区分编辑和暂停呢?如果我有另一个API需要开发,例如:视频重启,我如何在REST API中容纳这些动词?

  • 问题内容: 我遇到了有关monkey修补Django的帖子: 我知道这不是理想的选择,最好User通过单独的模型添加字段和函数Profile。 话虽如此,我只想了解这是如何工作的: 我将把monkey补丁代码放在哪里? 代码何时运行-仅运行一次?每个Python解释器启动一次?每个请求一次? 大概我仍然需要更改数据库架构。因此,如果我放下桌子运行,会syncdb“知道”是否已添加新字段吗?如果没有

  • 问题内容: 我在用另一个功能替换另一个模块中的功能时遇到麻烦,这让我发疯。 假设我有一个看起来像这样的模块bar.py: 我还有另一个看起来像这样的模块: 我希望得到结果: 但是我得到了这个: 我究竟做错了什么? 问题答案: 考虑一下Python名称空间的工作原理可能会有所帮助:它们实际上是字典。因此,当您执行此操作时: 这样想: 希望您能明白为什么它不起作用:-)将名称导入名称空间后, 从中 导

  • 我用Unity3d制作了一个游戏。我想在游戏中制作一个按钮,玩家可以点击这个按钮链接GooglePlay,给我的游戏打分。我需要什么插件,如何做到这一点?我刚找到这个:链接

  • 主要内容:1.服务注册,2.服务消费,3.注册中心高可用,4.动态感知服务上下线服务如何注册 consumer如何知道provider 服务注册中心如何高可用 服务上下线,消费端如何动态感知 1.服务注册 当我们把服务信息注册上去后,就应该是: 服务列表保存通常有三种方式:本地内存、数据库、第三方缓存系统 注册上去后,consumer需要服务地址的时候,就可以用相应key去注册中心获取对应的服务列表。 同一个服务注册中心,我们可以注册多个服务,比如、、… 2.服务消费 con