По поводу "динамических изменений" поведения зенитных, да и вообще всех, орудий. Не знаю как сейчас всё устроено в РоФ, но поразмыслив, предлагаю модель поведения артиллерии, надеюсь пригодится:
- Под каждым зенитным/орудийным расчётом располагается сетка с пронумерованными ячейками (см. рисунок)
- Каждой ячейке присваивается "функция" которую она выполняет: наводчик, заряжающий, командир, часть орудия и т.д.
- В зависимости от функции ячейки прописывается её "высота" (см. рисунок) определяющая призму, которая будет определять объём
ячейки, и учитываться пр расчёте попаданий в ту или иную часть орудийного расчёта.
- Так же на высоту ячейки должен влиять коэффициент подложки на котором стоит орудие: на машине - высоты реальные (т.е. нет защиты), если за бруствером или в окопе - пропорционально уменьшены (моделируется затруднение поражения орудия и расчёта)
- Каждой ячейке прописывается коэффициент замены, показывающий с какой эффективностью будут выполнятся обязанности этого номера (члена расчёта) при его замене любым другим номером. В идеале должно быть два ряда коэфф-тов для каждого номера: заменяемость другими
номерами, и способность заменять другого в расчёте.
Т.е. командир может заменить любой номер расчёта с "качеством" 0.9 , наводчик может его заменить с качеством 0.7, а заряжающий или подносящий с качеством 0.3 и т.д.
- прописывается иерархия замен номеров
- прописывается критерий "замолкания" орудия: к примеру выбытие командира и наводчика, или недостаток людей для крупнокалиберных орудий (1-2 человека не смогут обеспечить нормальный темп стрельбы, и скорее всего предпочтут спрятаться от атак)
- так же критерием замолкания может служить недопустимо большое время открытия прицельного огня , т.е после расчёта всех задержек вызванных потерями расчёта, стрельба прекращается при превышении определённой величины задержки между выстрелами, т.к. расчёт не успевает за изменениями обстановки и не может эффективно обнаруживать, наводить, подносить, заряжать, сопровождать и т.д. (в основном критично для крупных калибров)
При штатной работе расчёта (считаем что это второй или последующие залпы) время рассчитывается так:
Время выстрела =
Время подноса(расстояние до ящиков, скорость носки)/Коэфф.замены(если действует другой номер)
+ Время заряжания/Коэфф.замены(если действует другой номер)
+ Время прицеливания(угловая скорость поворота в обеих плоскостях)/Коэфф.замены(если действует другой номер)
+ 2-3 секунды (время отдачи команд, докладов)
+ Время наблюдения и принятия решения командиром/Коэфф.замены(если действует другой номер), если расчёт полный - то не учитывается,
т.к. процесс параллелен во времени с доставкой снарядов
При выбытии каких-либо номеров расчёта, в формулу подставляются коэффициенты согласно иерархии замены (кто кого меняет в расчёте)
При такой системе будет конкретно учитываться кто в расчёте выбыл после атаки, и как повлияли потери на ведение стрельбы, или её невозможность при попадании в ячейки отвечающие за механизм орудия.
Первый залп отдельная песня, т.к. на время открытия огня влияет готовность расчёта (она будет существенно разная на линии фронта во время боя, и на прикрытии удалённого аэродрома или на марше).
Так же не знаю как происходит обнаружение объектов в игре, но хотелось бы что б летящий на бреющем с приглушённым двигателем самолёт, обнаруживался значительно позже газующего в небесах
На рисунке так же показал вариант при котором всю "конструкцию" можно не "вертеть" программно, а просто переназначать характеристики между ячейками при поворотах орудия.
PS. А хотя бы я и жадничаю, зато от чистого сердца! (с)))