gpt4 book ai didi

java - 我应该如何处理 AI 线程和主游戏循环之间的通信?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:28:18 24 4
gpt4 key购买 nike

我正在使用 Java(在 Android 框架中)开发一款回合制策略游戏。按照 Beginning Android Games 中的结构,我有一个渲染线程和一个 UI 线程。渲染线程反复更新世界状态,然后重新绘制世界。当用户与屏幕交互时,GUI 向世界发送操作(命令模式)。现在我要添加 AI 播放器,这是我的计划:

每个 AI 玩家都有一个在单独线程上运行的 AI。

当世界在 AI 回合更新时,它会检查是否有待处理的 Action 。如果是这样,它会执行它。然后它会询问 AI 播放器的下一步操作。

AI玩家会向AI线程发送 Action 请求,然后返回。

最终,AI 会想出一个 Action ,并将其发布回世界,世界将在下一次更新时看到它。

两个问题:

1) 这个设计看起来合理吗?

2) 如何处理与 AI 线程之间的通信?如果我有 AI 线程调用 world.queueAction(action),这似乎可行,但如果渲染线程调用 ai.chooseAction(world),它将运行在渲染线程上选择的 Action ,这不是我想要的.

最佳答案

我会为 AI 提供一个 ExecutorService,并为您希望它执行的事情向其中添加任务。对于 UI,您可以有一个队列,其中包含已更改且可能需要重新绘制的内容。在您知道这会有所帮助之前,我很想对所有 AI 使用单个线程。无论如何,大多数 Android 设备只有 1-2 个 CPU。

关于java - 我应该如何处理 AI 线程和主游戏循环之间的通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8449059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com