gpt4 book ai didi

java - 在小型 RTS 中实现单位的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-01 14:36:25 27 4
gpt4 key购买 nike

我目前正在用 Java 开发一个小型 2D RTS,它将不依赖于任何非标准库。

我无法正确回答的一个关键问题是如何实现这些单元,以便每个单元都能独立运行,就像 RTS 中的正常情况一样。

我想到了两种方法:

1) 将它们实现为线程。由于线程与单元非常相似,具有生命周期并且独立运行,因此它们应该是一个很好的选择。

问题:如何维护单位 AI 的其他重要方面,例如瞄准和攻击敌人或在移动时为空闲动画旋转炮塔?

我正在考虑给每个单元子线程来处理这个问题(同样,因为它们应该是独立但并发的),但我担心这是一种低效的方法。我不受程序中计算限制的限制,但我想知道处理 future 开发的最佳方式。

2)“回合”。每个单元都有一组在每个回合中应考虑执行的操作,并且回合由迭代所有现有单元的非常快的 TimerTasks 触发。

问题:可能会导致代码笨重?

我倾向于第一种方法,但在深入研究之前,我想知道我的方向是否正确,或者我是否更有可能搬起石头砸自己的脚。

总结我的问题:我应该使用线程、计时器或其他方法来实现用 Java 编码的小型 RTS 中的单元吗?任何意见将不胜感激。

最佳答案

在单独的线程中实现它们可能会导致竞争条件,除非您希望将特定单元绑定(bind)到它恰好运行的任何核心,否则我会远离这种情况。

我更喜欢你的第二种方法,每个单位每回合都执行其操作。如果你把转弯切成足够小的切片,这就不会有问题。

你可以做的一件事是让“背景代码”与你的第二种方法(基于非常快速的回合)一起操作,以获得“重要”单位统计数据(HP、位置、moveFlag、attackFlag、deathAnimationFlag等)。然后,有一个用于动画的单独线程,它可以“轮询”或“订阅”单元的位置和状态以绘制正在发生的情况。如果绘制线程稍微落后统计线程一毫秒,没问题,对吧?

关于java - 在小型 RTS 中实现单位的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16449836/

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