我正在开发一款目前可用于桌面,Mac,Linux的游戏。在这个游戏中有一个游戏更新程序,只下载游戏的更新部分。
我想与移动平台进行类似的流程。我看过大小超过1 GB的游戏。要仅通过稍微更改代码来更新此类游戏或应用程序,用户必须再次完全下载整个游戏。这看起来很疯狂。
我想知道我是否有任何设施或程序可以在游戏中克服这些问题。我在桌面上的游戏大小约为1.75 GB。我使用较轻的资源用于手机。所以它可以是大约700 - 900 MB。但是,这仍然可以为小型更新提供大量下载。
让我知道你的建议。您的想法适合任何流行的移动操作系统,如iOS,Android或其他。我并不具体。
让我举个例子
当应用或游戏启动时,它首先会在播放前下载所需的更新(从我的服务器中)。完成更新后,它允许用户玩游戏。我的意思是在同一个应用程序中可以有一个更新程序组件,它执行更新并允许游戏模块运行。这只是一个可能的例子
答案 0 :(得分:1)
是的,在Android上它可以很容易地完成,你只需要组织一些不同的东西......除非你的游戏真的很奇怪,只有700-900 MB的代码:D
http://developer.android.com/google/play/expansion-files.html
只有你的代码在APK中。 您的资源不是,它们位于最大大小为2GB的扩展文件中。 用户下载一个非常小的APK,然后下载扩展文件。
代码中只是一个小小的改动?新的APK,仍然很小,没人会关心。 外部资产的变化?使用第二个扩展文件修补第一个。
答案 1 :(得分:0)
只是一个建议,我认为你可以在Lua等脚本中编写频繁更改的代码,然后你只能下载并替换这些脚本。
答案 2 :(得分:0)
在iOS上可以完成。您可以在后台线程中运行的应用程序中下载资产,并将其保存在设备上。
代码示例:
dispatch_queue_t downloader = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(downloader, ^(){
NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
UIImage *image = [UIImage imageWithData:data];
if ([image rangeOfString:@"png"].location != NSNotFound) {
[UIImagePNGRepresentation(image) writeToFile:[documentsDirectoryPath stringByAppendingPathComponent:imageName] options:NSAtomicWrite error:nil];
}
});