首页 > 解决方案 > 为什么存在软件更新?

问题描述

我知道这听起来可能很疯狂,但请听我说...

假设您有一个游戏并且您想要更新它(添加新功能/重新装饰季节性主题/添加 LTM 等),而不是编辑您的代码,然后等待您的应用市场提供商(Google/Microsoft/Apple 等)等待几天。 ) 批准更新并推出更改,为什么不:

  1. 将所有代码放入数据库
  2. 从代码文件中删除所有现有代码
  3. 添加可以从数据库运行代码的代码(读入并发送eval()

这样,除非您想更改与数据库相关的代码,否则不需要软件更新,并且您可以简单地更新数据库以更改应用程序在运行时所做的事情。

我的问题:为什么没有这样做?

例如:

Fortnite(一个真正的游戏)通常有 LTM(限时模式),可以使用几周,然后被删除。通常,软件更新约为 5GB,除非您的宽带速度很快,否则需要很长时间。如果代码是从数据库中获取然后执行的,则不需要这些更新,并且更改可能是即时的。

编辑:(响应接近投票)

我正在寻找事实和统计数据来支持理由,而不仅仅是纯粹的意见。不需要像“我认为这将是好/坏......”这样的答案(这就是为什么会有评论);像这样的答案是“这将是好/坏,因为这一事实表明......”要好得多,也更受欢迎。

标签: performancecompilationupdatessoftware-distribution

解决方案


  1. 将所有代码放入数据库
  2. 从代码文件中删除所有现有代码
  3. 添加可以从数据库运行代码的代码(读入并 eval()s)

我的问题:为什么没有这样做?

这正是每款游戏的运作方式。

每次启动游戏时,可执行二进制游戏引擎(您在步骤 3 中描述)已经从“数据库”(文件系统)和“evals”(解释)它来运行游戏,以及关卡几何、纹理、声音和音乐等资产。

你说的是在引擎和它的数据之间引入一个抽象层(一个真正的数据库)来隐藏你的一些资产,但是数据库将它的数据存储在文件系统上,所以你真的什么都没得到,你我们刚刚改变了数据在静止时编码和在运行时查询的方式,并且在这两种情况下都引入了大量的开销。

另一方面,您是在故意以这种方式在应用程序审核过程中作弊,而您遇到的任何真正的技术问题都是没有实际意义的,因为您的应用程序不会被允许在应用程序商店中使用。应用审查过程的全部目的是防止人们向用户发送未经验证的未经审查的代码,如果你的程序显然是为了规避这一点而设计的,你的应用将被拒绝。

Fortnite(一个真正的游戏)通常有 LTM(限时模式),可以使用几周,然后被删除。通常,软件更新约为 5GB,除非您的宽带速度很快,否则需要很长时间。

Fotenite 将有一个小的二进制可执行文件,即游戏引擎。对此二进制文件的更新将占该 5GB 的一小部分。其余的将是某种解释/嵌入的语言来描述游戏的关卡(也是一小部分),然后是解释其余部分的资产(几何、纹理、声音、音乐)。

如果代码是从数据库中获取然后执行的,则不需要这些更新,并且更改可能是即时的

这是没有意义的。如果您将整个 5GB 从文件系统移动到数据库中,您仍然需要传输大约 5GB 的数据库更新。数据库中的 5GB 数据仍然作为文件系统中的 5GB 数据存在,只是您无法再直接访问它。无论您如何存储它,您都必须传输完全相同数量的数据。


推荐阅读