У меня есть проект, чтобы сделать стратегию в реальном времени с нуля. Я все еще на ранней стадии планирования, но я немного программировал, чтобы увидеть механику.
Я знаю, как программировать. У меня также есть хорошая идея о том, как я буду структурировать игровые классы и AI на основе правил (конечного автомата) для компьютерного игрока.
Я хочу разработать Доктрины, которые дадут определенное поведение определенному отряду (но могут быть использованы на многих отрядах одновременно), такие как Разведчик, Маршрут миссии, удержание позиции (атака на любого приближающегося врага или отступление, если разбито) , и т.д...
Доктрины будут применяться только к юнитам, поэтому у них будет перспектива юнитов, и они не будут знать всю ситуацию на карте.
Компьютерный ИИ проанализирует всю видимую карту и решит, какой принцип назначить каждому юниту в зависимости от другого набора правил.
Я делаю это в C # с OpenGL.
Пока у меня не так много, только несколько вещей в тестах, прежде чем я начну свою основную концепцию. У меня есть игровой цикл, где происходит вся обработка игры (где я буду называть движение обновлений, бой, рендеринг и т. Д. Один за другим), он вызывается очень часто, если происходит событие Application.Idle.
Теперь мне было интересно. Поскольку в игровом цикле будет много чего обрабатывать, должен ли компьютерный ИИ и подразделения выбирать свои действия в этом цикле или это будет слишком медленно?
Если я хочу, чтобы все было одновременно, Должен ли я создать отдельную тему для компьютерного ИИ? Или даже отдельный поток для каждого блока?
У меня нет большого опыта с многопоточностью. Что будет лучшим подходом для этого?