V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
RiESA
V2EX  ›  游戏开发

为什么那么多游戏的数据下载,无法后台

  •  
  •   RiESA · 2018-07-23 15:33:43 +08:00 · 6486 次点击
    这是一个创建于 2320 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有些游戏要下很大的数据,又非得让你挂在前台跟傻子一样等,切到后台就暂停

    是技术上有难题吗?

    到底是为什么? 难道是为了提高前台的运行时间?利益相关吗?

    27 条回复    2018-07-25 13:47:17 +08:00
    sundae91
        1
    sundae91  
       2018-07-23 15:43:59 +08:00
    技术问题。
    应该是指手游更新吧。
    ios 不用多说?退出后台后,基本程序随时可能被杀死。
    android 相对好一些,有技巧。但是后台下载大文件依旧不稳定,不可控因素太多,比如被系统进程杀掉,其他应用需要内存导致游戏内存被释放等等。重新下载或者断点下载还算好的,导致数据冲突等就更麻烦。
    murmur
        2
    murmur  
       2018-07-23 15:45:12 +08:00
    后台下载你又骂他偷跑流量
    RiESA
        3
    RiESA  
    OP
       2018-07-23 15:47:40 +08:00
    @sundae91 IOS 个人不清楚,但是安卓的话,应该没有这个问题吧
    @murmur 不是一个概念啊,我游戏更新,不退出,就切到其他 app,下载就停了,和没启动他后台悄悄帮我更新不是一个概念
    RiESA
        4
    RiESA  
    OP
       2018-07-23 15:49:39 +08:00
    主题有点描述的不清楚,补充一下,主题内容指手游更新
    这里的后台指的不是没有主动启动 app,自动帮你下载数据
    而是你自己启动开始更新后,不关闭的情况下,切换到其他 app 会停止下载
    Mutoo
        5
    Mutoo  
       2018-07-23 15:53:12 +08:00
    用于网络连接的 socket 属于系统资源,当 APP 切换至后台后,系统有权直接回收 APP 占用的 socket 资源,所以 iOS 的开发文档指出开发者需要自己维护进入后台时断开链接以及重新回到 APP 后的重连。
    murmur
        6
    murmur  
       2018-07-23 16:01:02 +08:00
    游戏这种占内存的东西放哪里都是优先回收内存的对象吧
    RiESA
        7
    RiESA  
    OP
       2018-07-23 16:08:08 +08:00
    @murmur 我感觉和内存没有必然联系,游戏前台启动了更新,但是游戏资源什么的还没加载的,自然不会有大内存占用,嘛,如果真的是更新的时候占用的资源和游戏过程一样,那么我觉得优化是有问题的
    @Mutoo 大概了解了,感谢
    ysc3839
        8
    ysc3839  
       2018-07-23 16:15:11 +08:00 via Android
    Android 系统有提供下载管理程序,用这个下载就能后台的。但实际上很多程序就不用。
    enenaaa
        9
    enenaaa  
       2018-07-23 16:18:46 +08:00
    以前我做得时候是要求后台下载, 其实也不麻烦。
    RiESA
        10
    RiESA  
    OP
       2018-07-23 16:24:16 +08:00
    @enenaaa
    @ysc3839
    技术上没有问题的话,我感觉是不是利益相关的可能性大一点?
    国产 app,貌似有利用启动时间之类的来考量一些利益相关的东西?不太确定有没有区分前后台
    w3sy
        11
    w3sy  
       2018-07-23 16:27:57 +08:00
    @sundae91 iOS App 有系统提供的后台下载进程,不会被杀死的,只是有的游戏没有实现而已
    Rekkles
        12
    Rekkles  
       2018-07-23 16:28:43 +08:00
    并不是 手机端切换后台之后,进程基本是类似被 freeze ( QQ 和微信需要更多权限才能后台接收消息,即使是这样也不可靠,我的手机就经常联网收不到微信),这时候 socket 基本是挂了。。。
    而且还有内存丢失,导致有些游戏还需要重新去考虑镜像复制加载,这是手机端机制的问题,并不是厂商恶意为之
    sunny352787
        13
    sunny352787  
       2018-07-23 16:31:24 +08:00
    Unity 的游戏吧? Unity 默认切后台暂停...一般程序员都懒,所以就那么着了
    RiESA
        14
    RiESA  
    OP
       2018-07-23 16:32:51 +08:00
    @Rekkles 受教了,我个人不是 app 开发者,只是玩游戏的时候觉得这个等待很 ZZ,
    综合上面几位的说法,我大概可以理解为,办法有,但是实现很麻烦,所以很多游戏就干脆不管了是么?
    个人真的感觉太影响用户体验了
    Rekkles
        15
    Rekkles  
       2018-07-23 16:35:49 +08:00
    @RiESA 投入和回报不成正比,而且需要高权限,增加耗电、发热等都是隐患(万一被人恶意抓辫子就完了)
    nciyuan
        16
    nciyuan  
       2018-07-23 16:46:08 +08:00 via Android
    @ysc3839 我就见过系统更新和谷歌翻译两款 APP 用过,所以其实也主要是怕直接获取信息,特别是下载管理你可以直接点击打开,看看里面更新了啥,这不就是给做外挂的一条捷径吗?
    RiESA
        17
    RiESA  
    OP
       2018-07-23 16:47:33 +08:00
    @nciyuan 这个我倒是觉得并没有什么问题吧,毕竟要知道下载文件的地址什么的这些直接抓包也行的
    sunny352787
        18
    sunny352787  
       2018-07-23 16:54:59 +08:00
    @RiESA 就是懒,没别的,因为后台下载功能游戏引擎都不带,也没人愿意浪费时间在这个上面
    guyeu
        19
    guyeu  
       2018-07-23 17:21:25 +08:00
    别的不知道 android 普遍的一个问题是进程切后台之后网络连接就被断掉了,连心跳都做不到何况跑下载(特指引擎内)。
    sampeng
        20
    sampeng  
       2018-07-23 17:29:39 +08:00
    第一是机制问题。。第二楼上说了。。如果真用一些技巧这样做了。
    你又要骂 XXX 傻逼,偷偷跑流量更新
    ysc3839
        21
    ysc3839  
       2018-07-23 17:43:05 +08:00 via Android
    @nciyuan 可以隐藏不显示下载记录的,比如 Google Play 就行。
    est
        22
    est  
       2018-07-23 17:45:48 +08:00
    iOS 有完全的不需要启动 app 就能下载的机制。
    Android 由于被阉了一刀导致各自为战。
    chengyiqun
        23
    chengyiqun  
       2018-07-24 08:35:11 +08:00
    完全是开发商懒不懒的问题,少女前线下载数据包的时候切换后台好好的。
    chengyiqun
        24
    chengyiqun  
       2018-07-24 13:57:24 +08:00
    @ysc3839 很多游戏需要热更新的,需要把数据下到自己的私有存储区 /data/data/packageName 里,系统的下载器是不行的,如果只是下载 obb 数据包,当然可以直接调用系统下载器。
    ysc3839
        25
    ysc3839  
       2018-07-24 14:10:19 +08:00 via Android
    @chengyiqun 我不确定下载管理程序是否能下载到私有空间内。但从 Google Play 来看应该是可以的。
    chengyiqun
        26
    chengyiqun  
       2018-07-25 13:26:06 +08:00
    @ysc3839 那个一般下载的是全量包数据包,我说的是热更新包,比如就改了几个脚本的那种更新,人家会从自己的服务器下载,而非 play 商店。
    ysc3839
        27
    ysc3839  
       2018-07-25 13:47:17 +08:00 via Android
    @chengyiqun 我说的是 Google Play 这个应用可以做到下载文件到私有空间内。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3477 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:19 · PVG 19:19 · LAX 03:19 · JFK 06:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.