使用Google App Engine在在线游戏中实现人工智能

1 投票
3 回答
1046 浏览
提问于 2025-04-15 20:32

我现在正在为谷歌应用引擎规划一个游戏,但对如何处理游戏中的人工智能感到有些困惑。我想要有一些可以在地图上移动的持久性非玩家角色(NPC),但除了写一个程序来生成我用来控制玩家动作的相同XML请求,然后在另一个服务器上运行它,我不知道该怎么做。我看过任务队列这个功能,但由于应用引擎不支持长时间运行的进程,我有点卡住了。

我打算运行多个服务器实例,管理200多个持久性NPC角色,这些角色需要不断更新。大部分时间它们会根据玩家的移动和聚集情况慢慢游荡,并攻击靠近的玩家……(你可能能猜到我正在开发什么类型的游戏)

3 个回答

2

请记住,你可以把更新分成多个请求来处理(在内部):先做一点工作,然后重定向到同一个处理程序,但状态不同;再做更多的工作;等等。(我不知道为什么不能在Peter Recore的回答下评论,这里其实更合适。)

我看到免费的服务每天只允许100,000次任务队列调用,所以每个任务/NPC可能会很快耗尽你的资源。可以考虑设置一个定时任务,来处理一些工作/创建任务队列,以适当的规模更新NPC?

总之,这只是一些想法;祝你好运。

2

如果这个游戏是回合制的,那么最好不要使用定时任务,而是每次玩家移动的时候更新一下NPC(非玩家角色)。我不太清楚你打算做多大的地图,但你可以考虑让玩家角色找到附近的NPC,然后调用他们的AI(人工智能)程序。这样的话,离玩家太远的NPC就不会动,这样可能会节省一些资源。不过这是否重要就不太确定了。

3

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

不管是哪种,我觉得你可以考虑两种方法。第一种是使用Cron功能,这样你可以定期更新游戏中的非玩家角色(NPC);第二种是在每次玩家移动的时候,把一个“更新NPC”的任务放到任务队列里。

撰写回答