Я написал несколько приложений для iOS, управляемых событиями, но они не полностью подготовили меня к тому, над чем я сейчас работаю, и мне нужен совет.
У меня есть простой дизайн стратегической игры, прототип которого я создал с помощью представлений, блоков анимации и распознавателей жестов. Имея доску, ходы и базовый пользовательский интерфейс, я только начинаю создавать ИИ-игроков и понял, что совершенно не понимаю, как лучше действовать. Мне нужно генерировать события перемещения ИИ и результирующие анимации, не блокируя основной поток. Несколько лет назад я мог бы использовать классический шаблон игрового цикла, но я бы хотел избежать этого в iOS, так как мне не кажется, что это техника, которую я могу использовать в неигровых приложениях, и одна из моих целей — расширить мое понимание того, как структурировать приложения для iOS.
Я читал о GCD, и мне кажется, что можно было бы выполнять большую часть моей работы вне основного потока с помощью GCD, но неясно, как я буду координировать различные части. Например, ИИ необходимо оценить доску, но каждый раз, когда актер меняет доску, текущая оценка становится недействительной. Нужно ли настраивать очередь для управления состоянием доски? Я помещаю каждого ИИ-игрока в одну очередь? Как лучше всего прервать ИИ, когда он выбирает лучший ход?
У кого-нибудь есть набросок архитектуры, которая нужна моему приложению для поддержки этого? Я ищу шаблоны, которые я могу использовать в целом, а не только в играх. Некоторый рабочий пример кода, с которым я мог бы поэкспериментировать, был бы идеальным, если кто-нибудь знает о такой вещи. Спасибо!