Показать сообщение отдельно
Старый 01.03.2021, 20:58   #282
ildar
Чёрный бомбер
 
Аватар для ildar
 
Регистрация: 26.11.2018
Адрес: Бишкек, Кыргызстан
Сообщений: 329
По умолчанию

Теперь на счет КП наведения, вместо наведения оператором РЛС.

В моем моде, да и в других радарных модах наведением самолета игрока занимается оператор потому, что используются ограничения зоны обзора вражеских самолетов относительно самого радара. Поэтому начальной точкой в расчетах берутся координаты наземного радара, а не самолета игрока (лишь в моде Command & Control за центр расчетов берутся координаты игрока, но там у наземных радаров почти нет ограничений по зоне обнаружения, поэтому автор не стал заморачиваться с этим).

Более того, операторы таких РЛС наводят самолет игрока не на ближайшего к игроку самолету противника, а на ближайшего именно к данному радару самолету противника. Так что если на карте расположено, например, два радара и налет производят несколько групп вражеских самолетов с разных сторон, то можно получать от операторов РЛС наведение с разными координатами противника.

Поэтому авторы модов прямо указывают, что лучше не использовать больше одного радара на карте.

В моем моде еще сложнее, помимо простого расчета находится ли самолет игрока и вражеские самолеты в зоне обнаружения, идут проверки не закрываю ли их горы от данной РЛС, есть ли рядом с данным РЛС высотомеры для выдачи высоты цели, а также при целеуказании выдаются координаты с учетом точности и в тех единицах измерения (метры, футы, мили, километры), которые прописываются в характеристиках technics.ini индивидуально для каждой модели РЛС.

Я согласен, что целеуказание игроку должно поступать не от операторов РЛС, а от вышестоящего КП. Поэтому все это время я обдумывал, как это лучше реализовать.

Сейчас алгоритм работы радаров состоит из трех этапов:
На первом этапе идут расчеты видит ли радар самолет игрока, если да, то отдается команда переходить ко второму этапу, на котором радар начинает искать ближайший к нему видимый самолет противника, как только он обнаруживает такой, то выдается команда переходить к третьему этапу, на котором начинаются расчеты направления на цель, её высота и её расстояние от самолета игрока и их отображение игроку.

Алгоритм работает циклично, время периодичности этого цикла задается индивидуально в class каждого радара. Обычно там прописан интервал в 30 сек.

Все три этапа работают на каждом радаре индивидуально от других радаров, поэтому на экране игрока будут отображаться команды от нескольких радаров.

Я хочу отделить третий этап алгоритма и сделать его общим для всех радаров.
Должно получится следующее: Каждый радар как и раньше ищет самолет игрока и ближайшие к данному радару самолет противника, далее они передают полученные координаты не напрямую игроку как раньше, а офицеру на КП, которые составляет список обнаруженных самолетов и выбирает из полученных данных ближайший к самолету игрока обнаруженный вражеский самолет и уже он выдает его координаты игроку.

Однако тут есть несколько нюансов:
Во-первых, такой КП будет выдавать координаты игроку только в одной системе единиц (высота в метрах, дальность в километрах), что может быть неудобно западным игрокам привыкшим к футам и милям.
Во-вторых, КП будет выдавать координаты с фиксированной точностью, без учета характеристик точности РЛС.

В принципе, это мелочи на которые можно забить.

Но тут есть более сложная проблема, а именно как реализовать сохранение того самого списка полученных от РЛС обнаруженных самолетов противника. Здесь надо создавать массив Array по аналогии с игровым Actor, в котором будут хранится полученные данные, но чет у меня нет идей как это сделать. Тут нужна помощь программиста лучше разбирающего в коде игры.


А вообще, я хочу сделать чтобы для игрока-истребителя выдавались сначала координаты на ближайшие бомбардировщики противника, а если их нет, то наводили его тогда на вражеские истребители. Если игрок на ударном самолете (штурмовике/бомбере), то выдавались координаты ближайших вражеских истребителей, а также если есть то координат и вражеских кораблей, если их обнаружат РЛС в море.

Более того, такой офицер наведения на КП может получат данные и выдавать их игроку не только с наземных РЛС, но и с самолетов ДРЛО и корабельных РЛС.

Последний раз редактировалось ildar; 02.03.2021 в 00:31.
ildar вне форума   Ответить с цитированием