3

我有点想用 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 被创建。让人们了解脚本的执行方式会很有用。现在上面的例子很简单,但在我的例子中,我有一堆语句,我花了一段时间才弄明白。

接下来是creep名称。如果小兵死亡,名字应该是“消失”。我确实检查了这一点,并且由于某种原因,该名称“可用”再次使用,但该名称仅在一些滴答声后才可用。不是即时的!所以客户端和“服务器”是有区别的。现在,这显然可以通过多次迭代而不是重用名称来解决。说实话,我更喜欢重用名称。为什么?也许你的脚本会运行多年,这会导致像“worker1209128102981209128”这样的名字,在我的强迫症看来不是“好”。就我而言,我等到错误“名称已在使用中”消失了几个滴答声,然后再创建它。你有点“浪费”时间。

控制台.log(); (empty) ,将导致您的控制台精神崩溃。这种风格会被“窃听”。

接下来的事情:在新游戏中并不总是清除内存状态。也会导致一些奇怪的事情:你自己的记忆中已经有了东西,或者敌人的小兵波已经在第 1 波之后的波上。

我在 API 中没有找到的另一件事;Creeps 首先在他们的第一个模块上获得命中。所以,你很聪明地把 TOUGH 放在第一位,因为它是一个“无用”的模块。其次是其他不太有用的模块。

现在对于游戏模式,敌人的 AI 可能会被窃听。例如,如果你 - 不 - 移动你的小兵,敌人就不会攻击。当你让一个敌人从一波中存活时也是如此,人工智能可能会被“窃听”。不确定它是否正常,但过了一会儿我有以下情况;我无法“相信”如此快速地对抗这么多如此强大的敌人小兵是正常的(已经看身体模块了例子

最后,我可能想请开发人员做一些我们可以与开发人员交流的东西。即使 stackoverflow 很好,IMO 也更多地用于那些想要在正确的方向上稍微推动的人。

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

4

1 回答 1

2

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

  1. 您无法知道在此滴答声中是否已经调用了 createCreep - spawning 属性将仅在下一个滴答声中设置。所以你必须自己跟踪这个。
  2. 如果您将内存数据传递给 createCreep,它将立即在内存中设置,即使实际上不会创建cree,因为另一个对 createCreep 的调用会覆盖它。这会使内存因未使用的数据而变脏,除非您自己跟踪 (1) 并且不要在每次滴答时多次在同一个 spawn 上调用 createCreep。
于 2014-11-21T20:49:02.573 回答