Я работаю над пошаговой стратегической игрой на Java (в рамках Android). Следуя структуре в Beginning Android Games, у меня есть нить рендеринга и нить пользовательского интерфейса. Поток рендеринга многократно обновляет состояние мира, а затем перерисовывает мир. Когда пользователь взаимодействует с экраном, графический интерфейс отправляет действия в мир (шаблон команд). Сейчас я добавляю AI игроков, и вот мой план:
Каждый ИИ-игрок будет иметь ИИ, который работает в отдельном потоке.
Когда мир обновляется за ход ИИ, он проверяет, есть ли ожидающее действие. Если это так, он выполняет его. Затем он просит игрока AI о его следующем действии.
Игрок ИИ отправит запрос на действие в поток ИИ, а затем вернется.
В конце концов, ИИ придумает действие и отправит его обратно в Мир, который увидит его в следующем обновлении.
Два вопроса:
1) Кажется ли этот дизайн звучащим?
2) Как мне обработать связь с потоком AI? Если у меня есть поток AI, вызывающий world.queueAction (action), кажется, что он будет работать, но если поток визуализации вызывает ai.chooseAction (world), который будет запускать действие, выбирающее поток визуализации, а это не то, что мне нужно ,