【问题标题】:Artificial Intelligence in online game using Google App Engine使用 Google App Engine 的在线游戏中的人工智能
【发布时间】:2010-03-17 18:59:49
【问题描述】:

我目前正处于谷歌应用引擎游戏的规划阶段,但我无法思考我将如何处理人工智能。我打算让持久的 NPC 在地图上移动,但没有编写一个程序来生成我用来控制玩家操作的相同 XML 请求,而不是在另一台服务器上运行它,我被困在如何做到这一点上。我查看了任务队列功能,但由于长时间运行的进程不是 App 引擎上的选项,我有点卡住了。

我打算使用需要更新的 200 多个持久 NPC 实体运行多个服务器实例。大多数动作都是根据玩家的动作/注意力慢慢地四处游荡,并攻击近距离的玩家……(你大概可以猜到我正在开发的游戏类型)

【问题讨论】:

    标签: python google-app-engine artificial-intelligence


    【解决方案1】:

    你的游戏是回合制的还是实时的?

    无论哪种方式,我认为您有 2 个选项可供研究。一种是使用 Cron 功能,以便您可以定期安排 NPC 更新,另一种是每次人类玩家移动时将“更新 NPC”任务放入任务队列。

    【讨论】:

    • 它将是回合制的...我认为这些的组合对于我正在尝试做的事情可能是可行的...随着玩家的活跃,NPC 会更加活跃,所以它会让感觉。我只是想知道 cron'd 任务的限制可能是什么,如果 AI 很简单,它能否处理大规模的 NPC 更新(再次,AI 将是相当愚蠢的)
    • 您需要像处理常规请求一样将您的 cron 任务分成 30 秒的块,因为所有 cron API 真正为您做的就是让您在应用程序中调用 url。
    • 我认为任何时候玩家在某个区域内移动时排队几个 NPC 移动都是合理的。我想我将不得不平衡,因为我一直在寻找一段美好的婚姻。我可能会让它通过移动 NPC 区域中的其他 NPC 传播,这样我就可以获得像群一样的移动。这将很难正确处理,因为我已经可以看到意外地将任务增加到无限。
    【解决方案2】:

    如果游戏是回合制的,那么最好避免 Cron 任务并在每次玩家移动时更新 NPC。我不确定您计划的地图有多大,但您甚至可以考虑让玩家对象找到靠近它的 NPC 并调用他们的 AI 例程。这样,超出玩家范围的 NPC 根本不会移动,这可能会节省资源。不过不确定这是否重要。

    【讨论】:

      【解决方案3】:

      请记住,您还可以将更新分解为多个请求(内部):做一些工作,重定向到相同的处理程序但状态不同;做更多的工作;等等(我无法以某种方式评论 Peter Recore 的答案,这才是真正属于的地方。)

      我看到免费服务每天只允许 100k 任务队列调用,所以 1 个任务/NPC 可能会太快地耗尽你的资源。 Cron 工作来做一些工作/创建任务队列来更新适当大小的组中的 NPC?

      无论如何,只是一些想法;祝你好运。

      【讨论】:

      • LH,你还差 9 点声望才能让 cmets 回答别人的问题。 (有关您通过代表获得的能力的相对完整列表,请参阅常见问题解答)我刚刚对您的答案投了赞成票,所以您现在应该超过 50 岁。
      • 谢谢;我想我最近被叮了,因此跌破了门槛。所以感谢您的帮助...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多