【问题标题】:How does a real time browser game work?实时浏览器游戏如何运作?
【发布时间】:2015-04-03 20:28:56
【问题描述】:

我想知道像 ogame 这样的实时浏览器游戏是如何工作的?

您如何不断更新资源等内容?

我唯一的建议是让电脑 24-7 小时开机,但事实并非如此。

【问题讨论】:

  • 服务器当然是 24x7 运行。
  • My only suggestion is having a computer turned on 24-7 but that can't be it. 每个网站都是这样运作的。您认为任何网站的所有资源都来自哪里?
  • ^- 关于上面的 cmets:当然,查看网站的客户端计算机通常不会 24/7 运行,也不需要。但是,该网站是由一台或多台服务器机器提供的(嗯,它必须来自某个地方,对吧?),它们通常 24/7 运行。

标签: real-time game-engine


【解决方案1】:

通常,当人们不与游戏互动时,他们拥有相当稳定的资源流。因此,在更改此流程的事件之间,您无需更新金额,而是进行计算。

例如。假设在某个游戏中有一个stone 资源。玩家从 0 stones 开始,并且能够构建 stone quarry,每小时产生 1 个 stone,然后可以升级到 2 级,因此每小时可以产生 2 个 stones。最初,我们知道玩家没有stone quarry,因此他的stone 收入为每小时0。然后播放器构建stone quarry,我们进行以下日志条目:

at time T0 player P build stone quarry. He had 0 stones at that moment and stone income is now 1 stone per hour.

从这一刻开始,如果什么都没有发生,我们可以随时简单地计算出石头的数量,我们不需要保持更新。

如果玩家在某件事上花费了石头,我们会添加以下日志条目:

at time T1 player P spent X stones on <something>. He now has S1 stones and stone income is 1 stone per hour.

在此之后,即使我们的服务器崩溃,我们也可以随时计算石头数量的完整信息(假设日志以某种方式被强化)

然后玩家升级stone quarry:

at time T2 player P upgraded stone quarry to level 2. He had S2 stones at that moment and stone income is now 2 stones per hour.

所以我们的想法是在金额或收入发生变化时记录时间戳、资源数量和资源收入率。然后,您将拥有所有数据来计算未来任何时间点的资源量。

【讨论】:

    【解决方案2】:

    一种可能的情况:
    在服务器和客户端之间有一个 http 服务器(当然是 24x7!)和一些 web 套接字,任何更改都会立即通过套接字发送到客户端,因此页面更新很快。
    实际上并没有发生什么奇怪的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-12
      • 2016-11-18
      • 2022-06-10
      • 2016-10-22
      • 2014-08-13
      • 2014-10-15
      • 2012-05-02
      • 1970-01-01
      相关资源
      最近更新 更多