我目前正在用 Java 开发一个不依赖任何非标准库的小型 2D RTS。
我无法正确回答的一个关键问题是如何实现这些单元,以便它们中的每一个独立运行,这在 RTS 中是正常的。
我想到了两种方法:
1)将它们实现为线程。由于线程与单元非常相似,具有生命周期并独立运行,因此它们应该很合适。
问题:我如何保持单位 AI 的其他重要方面,例如瞄准和攻击敌人或在移动时为空闲动画旋转炮塔?
我正在考虑让每个单元子线程来处理这个问题(同样,因为它们应该是独立但并发的),但我担心这是一种低效的方法。我不受程序中计算限制的限制,但我想知道处理事情的最佳方式以供未来发展。
2)“转身”。每个单元都有一组在每个回合中应该考虑执行的动作,并且回合由迭代所有现有单元的非常快的 TimerTasks 触发。
问题:可能会导致代码笨拙?
我倾向于第一种方法,但在我深入研究之前,我想知道我是否朝着正确的方向前进,或者我是否更有可能射中自己的脚。
总结一下我的问题:我应该使用线程、计时器还是其他方法来实现用 Java 编码的小型 RTS 中的单元?任何输入将不胜感激。