如何在Unity3D中设计一款适合修补的游戏?

4
我正在设计我的开放世界RPG的结构(我只是出于兴趣创建它,不打算制作一款热门游戏:D),但现在不得不停下来,因为遇到了一个严重的问题。
如果我创建一个大型开放世界游戏,那么它的大小将非常大。
让我们想象一下,我的游戏有一个启动器,当发现新补丁时自动更新。
再次下载整个游戏是不可接受的,因为如果只有一个小错误修复,谁会重新下载整个游戏呢?
所以我必须设计一个可以修补的结构,使得如果有更新,我的启动器仅会下载更改过的文件而不是整个客户端。
当我构建我的游戏时,90%(如果不是更多)的游戏数据都在一个程序调试数据库中。
当我看到例如《魔兽世界》这样的游戏时,它的文件组织在压缩目录中。如果某个区域的特定位置有一个小的修复(例如缺少一棵树),他们不必更新整个游戏,甚至不必更新整个地图或整个地区。
而是只需更新文件,该文件确定在世界上的哪个20x20平方米的区域中存在错误。
那么让我们用一个简单的例子来实践一下:
我有一个带有大地形的场景,我需要修复其中的一小部分。
如何更新已发布客户端中的有缺陷部分而不必重新下载整个客户端?
提前感谢您的帮助!:)

1
如果你认为这个问题太宽泛,请点击“标记”以便关闭。 - Fattie
2
Tudvari - (1)只需使用资产包,这是Unity完全为此目的内置的(2)没有人关心修补程序。这是一个无关紧要的问题。只需发布普通更新即可。 - Fattie
请点击一个答案,OP,谢谢。 - Fattie
1个回答

1

有几种方法可以实现此目的。其中在中最常见的方法之一是通过asset-bundles。这将允许您以类似于例如魔兽世界的方式更新游戏。

应用商店中也有大量的资源可用。我个人使用的是M2HPatcher,主要是因为当时它是免费的。我不确定现在是否仍然如此。


1
我找到了M2HPatcher,但它已经不再可用了,因为所有者不想出售有缺陷的产品。 - Tudvari
我看到了一些资产包的例子,但我不知道它是否是我想要的。例如,我在场景中有两个对象,我想制作一个“补丁”,删除一个对象,编辑另一个对象,并在某个地方添加一个新对象。如果我不能将脚本放在资产包中,那么我该怎么做呢? - Tudvari
@Tudvari 在Windows Store应用和Windows Phone上不支持从资源包中加载脚本。此外,这是完全可能的。但你可以从资源包中删除对象。如果你以面向对象的方式编写通用/可重用代码,就不应该经常遇到问题。 - MX D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接