Всем добрый вечер! Очень приятно за поддержание интереса к проекту!

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

Итак, мы действительно перешли на Python и довольно успешно, процесс пошел уверенно и в правильном направлении. Текущая поддерживаемая версия Python - 2.7. На самом деле ограничений на версию со стороны проекта нет, но есть со стороны утилиты, выполняющей проверку покрытия кода автоматическими тестами. Ничто не мешает использовать Python версий 2.4 - 2.7. Версии 3.х ещё не тестировались, но мы к ним обязательно доберемся.

Теперь по существу. После перехода на Python была создана библиотека il2ds-middleware. Она автономна и предоставляет высокоуровневый доступ к выделенному серверу Ил-2 для Python-приложений. Доступ может быть осуществлен с помощью 3-х каналов взаимодействия, предоставляемых выделенным сервером, а именно: асинхронный обмен данными с консолью сервера через TCP-сокет, синхронный обмен данными через интерфейс сервера DeviceLink с помощью UDP-сокета, мониторинг событий на карте посредством чтения журнала событий. Парсеры событий по умолчанию так же имееются.
Библиотека доступна в официальных Python пакетах. Текущая версия - 0.8.1. Это всё ещё не 1.0.0, т.к. пока что отсутвует надлежащая документация. Автоматическими тестами покрыто 99% кода.
"Физический смысл" библиотеки в том, что она позволяет общаться с сервером способом, похожим на удаленный вызов питоновских функций на сервере. С её помощью можно довольно легко и быстро написать простой коммандер всего за пару часов. Примеры так же имеются.
Например, radar_dynamic мониторит координаты самолетов на сервере в реальном времени и выводит их на стандартный вывод. При определенных событях DeviceLink-овский радар обновляется.
events_to_chat все события на карте и в консоли, которые прошли парсинг, выводит в чат игры. Под парсингом подразумевается то, что строки, которые приходят от сервера, преобразуются в объекты (Python-овские словари и кортежи). Список текущих поддерживаемых собитий можно увидеть в определении интерфейсов парсеров. Документация к ним обязательно появится.
mission_cycler - полноценный реальный ротатор одной миссии. Он перезагружает указанную карту через равные указанные промежутки времени, пишет об оставшемся времени миссии в чат, а так же реагирует на команду "timeleft".
Если вы внимательно посмотрите на эти примеры миникоммандеров, то должны заметить одно прекрасное сходство между ними: минимальный размер кода и его простота. Для того, чтобы написать простецкий коммандер нужно написать всего несколько десятков строк.

Использование созданной библиотеки не ограничилось одними простыми примерами. Был написан создатель высот. Это распределенное приложение, суть которого сводится к генерации карты с участком, заполненным равноотдаленными объектами, загрузке карты на сервер и опроса координат объектов с целью получения массива высот всей территории карты. Для ускорения опроса територий приложение было сделано распределенным (в отличии от первой версии на С++). Так, например, карта 300х400 км^2 (как Бессарабия) на 10-ти серверах опрашивается за полчаса. Раньше это занимало часов 8 на одном сервере.
На выходе мы имеем одномерный массив целых 16-ти битных чисел, которые содержат значения высот местости с точностью до метра. Сами точки идут в последовательности слева-направо свреху-вниз с шагом 100м. Этот шаг выбран исходя из того, что в SFS-архивах Ил-2 содержатся топографические карты (те самые, которые вы видите при нажатии клавиши М или Shift+М в игре) с найбольшим масштабом 1:100, т.е. в одном пикселе содержится квадрат 100х100 м^2.
Имея такой массив мы получаем массу новых возможностей. Наример, отрендерить карту высот в одном цвете, либо в другом. Так же можно отрендерить ровные участки на местности для облегчения поиска мест под аэродромы.

Готовые массивы высот, топографические карты, карты высот, а так же карты равнин можно посмотреть и получить здесь. На картах высот изображены изолинии с шагом 400м. Если они отсутствуют, значит максимальная высота на карте менее 400м. Всю эту кухню, в частности карты равнин, обязательно будут выложены отдельной темой как подарок картоделам.

В данный момент на основе полученных карт ведутся работы по новой версии Map Tools. Масштабируемую версию с некоторыми инструментами можно увидеть и потрогать здесь. Можно делиться ссылками на определенные участки карты, например так. Можно мерять линейкой расстояния, смотреть текущие координаты, а так же задавать их вручную. Можно переключаться между слоями карты. Так же есть пример с линейками, сеткой и фиксированными границами.

На данном этапе это даже не версии, а макеты, на основе которых будет создана javascript-библиотека, позволяющая встроить на свой сайт карту с желаемым инструментарием. Саму карту рендерить не придется, необходимо будет лишь при желании указать объекты на ней, например, линию фронта. На основе этой библиотеки будет создан Map Tools, а так же Django-приложение, позволяющее работать с пространственными типами данных (используя такие расширения для БД как Postgis, MySQL SPATIAL или Spatialite) на картах Ил-2.

После создания приложения возобновятся работы по созданию центра данных Ил-2. Это будет хранилище статической информации о предметной области Ил-2, например, о картах (их названия, размеры, и др.), городах, аэродромах, объектах, самолетах, их вооружении и др. Эти данные будут доступны как фикстуры (дамп) базы данных по стандартным объектам, а так же планируется создать сервис, который бы выдавал информацию об объектах на удаленные запросы (для того же Map Tools, например). Для этого сервиса необходимо будет искать некоторый хостинг или как-то подниматьего вручную.

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

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