Screeps很少有错误/问题

时间:2014-11-21 16:36:27

标签: javascript screeps

我想用SO来指出一些事情。

首先,脚本'有点奇怪。在这个游戏中,因为不像正常的' Javascript脚本,执行方式不同。我们都知道,在脚本中,第一件事就是先执行。如果我有:

Game.spawns.Spawn1.createCreep( [Game.WORK, Game.WORK, Game.CARRY, Game.MOVE], 'worker1');
Game.spawns.Spawn1.createCreep( [ Game.TOUGH, Game.TOUGH, Game.MOVE, Game.HEAL], 'healer1');

你会假设工人1会被创建。事实并非如此。 Healer1被创建了。让人们了解脚本的执行方式会很有用。现在上面的示例主要是简单的,但在我的情况下,我有一堆语句,我花了一段时间才弄明白。

接下来是蠕变名称。如果蠕变死亡,名称应该“消失”。我确实检查了这个名字,而且这个名字是可用的'再次使用YET由于某种原因,该名称仅在一些滴答后才可用。不是即时的!所以客户端和服务器之间存在差异。现在,通过迭代很多时间而不是重用名称,这显然是可以解决的。说实话,我更喜欢重复使用名称。为什么?也许你的脚本会运行多年,这会产生像' worker1209128102981209128'这在我的强迫症意见中并不是很好的'。在我的情况下,我等到错误的名称已被使用'已经不见了几个刻度并在此之后创建它。你有点失去'时间就到了。

CONSOLE.LOG(); (空),会导致你的控制台精神错乱。这种风格会被搞砸。#39;

下一步:在新游戏中并不总是清除内存状态。导致一些奇怪的事情:你已经拥有了自己的记忆中的东西,或者敌人的蠕动波已经超过了第一波。

我在API中没有找到的另一件事; Creeps首先获得了他们的第一个模块的命中。因此,你很聪明地将TOUGH推到第一位,因为它是一个无用的'模块。其次是其他不太有用的模块。

现在对于游戏模式,敌人的AI可以被窃听。例如,如果你 - 不 - 移动你的小兵,敌人就不会攻击。当你从一个波浪中留下一个敌人的蠕动时,同样的情况也会发生,人工智能可能会被“骚扰”。 不确定它是否正常,但过了一会儿我就得到了以下内容;我无法相信'对抗那么多如此强大的敌人小兵来对抗这种情况是很正常的(看看身体模块已经example

最后,我可能想让开发人员做一些我们可以与开发人员沟通的事情。即使堆栈溢出也很好,IMO更适合那些想要朝着正确的方向努力的人。

谢谢,我真的很喜欢这个游戏,我希望它会变大! :)

1 个答案:

答案 0 :(得分:2)

如果createCreep在tick中多次调用,则只会创建最后一次调用中的creep。每次调用都会覆盖creep来创建。但这有一些问题:

  1. 您无法获得是否已在此刻度中调用createCreep - 仅在下一个刻度上设置产生属性。所以你必须自己跟踪。
  2. 如果您将内存数据传递给createCreep,它将立即在内存中设置,即使实际上不会创建creep,因为对createCreep的另一次调用会覆盖它。这会使内存变脏并使用未使用的数据,除非您自己跟踪(1)并且不会在每个tick上多次调用createCreep在同一个spawn上。