【发布时间】:2011-12-09 17:05:25
【问题描述】:
我正在使用 Java(在 Android 框架中)开发一款回合制策略游戏。按照开始 Android 游戏中的结构,我有一个渲染线程和一个 UI 线程。渲染线程反复更新世界状态,然后重绘世界。当用户与屏幕交互时,GUI 向世界发送动作(命令模式)。现在我正在添加 AI 玩家,这是我的计划:
每个 AI 玩家都有一个在单独线程上运行的 AI。
当世界在 AI 回合中更新时,它会检查是否有待处理的动作。如果是这样,它会执行它。然后它会询问 AI 玩家的下一步行动。
AI 播放器会将动作请求发送到 AI 线程,然后返回。
最终,人工智能会提出一个动作,并将其发布回世界,世界将在下一次更新中看到它。
两个问题:
1) 这个设计听起来不错?
2) 我如何处理与 AI 线程之间的通信?如果我有 AI 线程调用 world.queueAction(action),这似乎可以工作,但如果渲染线程调用 ai.chooseAction(world),它将在渲染线程上运行选择操作,这不是我想要的.
【问题讨论】:
-
你没有在渲染线程中做世界逻辑,是吗?
标签: java android multithreading artificial-intelligence