Вход

Просмотр полной версии : IL-2 Horus Commander



oblalex
16.02.2013, 20:07
Всем доброго времени суток!

Я являюсь разработчиком IL-2 Horus Commander (Хорус коммандера), который входит в состав системы Horus. О том, что это такое, можно узнать из моего поста про установку выделенного сервера (http://oblalex.blogspot.com/2011/06/2.html#il2_step8). В этом посте я бы хотел продублировать свой пост из темы в гугл-группе проекта (https://groups.google.com/forum/?fromgroups=&hl=en#!topic/il-2-horus-commander/i7eCBFB4bk8).

Целью создания данной темы является формирование и обсуждение требований к базовому функционалу коммандера, а так же требования к его API (для разработчиков).

Чтобы не забивать головы лишней информацией, в этом первом посте писать много не буду. Надеюсь на появление наводящих вопросов, которые охарактеризуют общие цели конечных пользователей. По мере прояснения картины, полезной информацией будет наполняться Вики (http://ru.il2-horus-system.wikia.com)

Итак, для начала скажу, что система в целом переживает 5-е рождение, т.е. это не проект с нуля и способы решения большинства технических вопросов уже успешно найдены. Предыдущие попытки потерпели фиаско в силу отсутсвия четких целей и неверного проектирования архитектуры системы. У одной предыдущей версии был даже свой сайт (http://oblalex.github.com/horus/index.html). В данный момент архитектура является многомодульной. Сама система состоит из отдельных библиотек, которые могут разрабатываться параллельно разными группами людей и не имеют жестких привязок друг к другу.

Одна из основных фич - режимы коммандера. Коммандер может работать, как консольное приложение (режим демона/сервиса), так и графическое приложение со всякими кнопками и выпадалками и всеми отсюда вытекающими последствиями (графический режим). Ёще одной основной фичей является поддержка плагинов. Это означает, что стандартный функционал коммандера можно будет заменять своим, создавая таким образом свой уникальный коммандер. Например, свои журналы, свой парсер, свой менеджер миссий, свой менеджер пилотов и т.д. В будущем планируется создать отдельное хранилище плагинов от разных разработчкиков, чтобы все было как у людей (все же знают, как удобно пользоваться плагинами в браузерах, плеерах и т.п.)

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




p.s. для живого общения можно пользоваться скайп-чатом. как попасть:

или) скопируйте текст ниже в чат-строку Skype (можно в любую беседу из ваших контактов) и нажмите Ввод
skype:?chat&blob=Md7seNKEQXtKlZAlzUqjJ28nxLCBNhyuuJyLUZwLmO4bmKitNNmVFPUpbxhzJ8hEx-7O5LxN0izMAaVQ8GVMf816rttZmAyLPiWR

или) добавьте себе в контакты любого из представителей Horus Team, обращаясь с просьбой о вступлении в чат. Скайп-логины: oblalex, AnpeJIb_23.

WotD
09.03.2013, 11:35
Отличная идея, друзья. Модульная система, это именно то, что нужно. У нас нет адекватных коммандеров/сервисов, а на всех проектах делают что-то свое, причем это, как правило, недоступно публике..
Надеюсь, у вас все получится. Терпения вам, мужики.

71мсп
09.03.2013, 12:29
Вопрос от того, кто ничего не понимает в командерах: можно ли будет на сервере с Вашим командером привязать победу в миссии не к тупому уничтожению юнитов, а к комбинации двух событий: уничтожение юнитов и возвращение целыми на свой филд какого-то процента самолетов из некой, заранее зарегестрированной на сервере группы?

MEXAHNK
09.03.2013, 17:42
Вопрос от того, кто ничего не понимает в командерах: можно ли будет на сервере с Вашим командером привязать победу в миссии не к тупому уничтожению юнитов, а к комбинации двух событий: уничтожение юнитов и возвращение целыми на свой филд какого-то процента самолетов из некой, заранее зарегестрированной на сервере группы?

Это можно сделать на любом командере. Это вообще не свойство командера, это свойство надстройки над статистикой.

oblalex
11.03.2013, 14:07
Это вообще не свойство командера, это свойство надстройки над статистикой.

и да и нет.

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

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

WotD
11.03.2013, 15:20
Ну, тогда и мои пять копеек:


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

К примеру, вышел новый танк в очередном патче - открываем редактор формы, пишем туда игровой код этого танка, щелкаем кнопочку - база данных обновлена, танк будет корректно отображаться в статистике. То же и со всеми прочими, будь то самолеты, кораблики, etc.



-Возможность парсинга указанных пользователем конструкций.

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

-Работа с внешними программами/другими модулями.

Скажем, можно вызвать некий процесс, передать ему что-то, или, наоборот, что-то получить - если речь идет о модулях, то что-то вроде фреймворка. Load(data, handle), Get(Data, handle), и так далее.

-Работа с встроенной базой данных.

Ребята, серьезно - вам за это только спасибо скажут.
SQLite, Firebird, даже Access.


-Генерация.

Очень нужная вещь. Логику работы можно обсуждать долго, главное - сделать возможным работу пользовательских шаблонов.
К примеру - указать количество `жизней` у маркера линии фронта, радиус охвата маркера, время респауна объектов и т.д, и т.п.
По сути, я вижу это очень большим модулем.

MEXAHNK
11.03.2013, 15:42
и да и нет...

Однозначно да.
Командер не должен ничего делать кроме как быть интерфейсом между Ил-2 сервером и движком онлайн проекта, включающим SQL базу и, возможно, генератор миссий, ну пока без миссий невозможно. Хотя по идее и по-человечески SQL база со скриптами и должна реализовывать весь проект.

71мсп
11.03.2013, 22:09
Однозначно да.
Командер не должен ничего делать кроме как быть интерфейсом между Ил-2 сервером и движком онлайн проекта, включающим SQL базу и, возможно, генератор миссий, ну пока без миссий невозможно. Хотя по идее и по-человечески SQL база со скриптами и должна реализовывать весь проект.

Это значит "полный редактор сервера"? По аналогии с полным редактором миссии? Если да, то это очень нужно и очень правильно.

oblalex
11.03.2013, 22:36
Возможность удобного наполнения базы игровых объектов, для расчетов с ними.

фичи, связанные с работой с БД сильно зависят от схемы самой БД. например, я могу очнь подробно описать предметную область игрового процесса и это выльется в таблиц 80 (в случае с реляционными БД). но кому-то для своего проекта или дог-файт сервера будет достаточно 5-10 небольших таблиц. очевидно, что пользовательский интерфейс редактирования базы объектов будет совершенно разным. хорошо, если достаточно хранить только игровой код. хуже, если нужно хранить его геометрические параметры, максимальную скорость, дальность действия, вооружение, скорострельность, боезапас, броню, информацию о том, где он применялся, кем, в какие годы ну и так дальше.

как вариант - создать центральное хранилище подробной информации об объектах, картах и т.д., к которому по инету будет обращаться коммандер для проверки наличия новых данных, например в формате json или xml, и сам будет мигрировать полученные данные под конкретную схему БД. очевидно, это должен быть плагин. под свой проект нужно будет писать свой плагин. звучит не очень привлекательно для обычных пользователей, но это плата за гибкость.

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


Возможность парсинга указанных пользователем конструкций

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


Работа с внешними программами/другими модулями

да, можно. никто этого не запрещает :)


Работа с встроенной базой данных

привязки к какой-то конкретной БД нет. у каждого свои предпочтения. в базовом наборе плагинов "из_коробки" будут поддерживаться sqlite, postgres, mysql. выбрать используемую СУБД можно будет в настройках коммандера.


Генерация

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


Командер не должен ничего делать кроме как быть интерфейсом между Ил-2 сервером и движком онлайн проекта, включающим SQL базу и, возможно, генератор миссий, ну пока без миссий невозможно.

совершенно верно. основная цель - облегчить разработчикам проектов взаимодействие с игровым сервером и БД, подняв его на более высокий уровень абстракции. это больше конструктор, фреймворк для программистов. получение коммандера с базовым функционалом - это просто побочный приятный и полезный эффект :)

oblalex
12.03.2013, 20:38
Генерация

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


Командер не должен ничего делать кроме как быть интерфейсом между Ил-2 сервером и движком онлайн проекта, включающим SQL базу и, возможно, генератор миссий, ну пока без миссий невозможно.

все примерно так и есть. основная цель - облегчить разработчикам проектов взаимодействие с игровым сервером и БД, подняв его на более высокий уровень абстракции. это больше конструктор, фреймворк для программистов. получение коммандера с базовым функционалом - это просто побочный приятный и полезный эффект :)

oblalex
12.03.2013, 20:39
Генерация

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

oblalex
12.03.2013, 20:40
Генерация

это вообще отдельная тема, очень интересная, но напрямую к коммандеру не относящаяся. какие критерии генерации должны быть, где их хранить, какие параметры объектов должны учитываться - зависит от того, что и для чего генерируется. например, даже генерация погодных условий для последовательности миссий - тема вообще холиварная. если нужно генерировать чего-то нового с учетом чего-то старого, то тут сразу вылазит привязка с схеме БД. если базовая схема БД будет всех устраивать, то тогда можно будет обсуждать генератор как часть базового набора плагинов.

oblalex
12.03.2013, 20:40
Командер не должен ничего делать кроме как быть интерфейсом между Ил-2 сервером и движком онлайн проекта, включающим SQL базу и, возможно, генератор миссий, ну пока без миссий невозможно.

все примерно так и есть. основная цель - облегчить разработчикам проектов взаимодействие с игровым сервером и БД, подняв его на более высокий уровень абстракции. это больше конструктор, фреймворк для программистов. получение коммандера с базовым функционалом - это просто побочный приятный и полезный эффект :)

oblalex
12.03.2013, 20:41
никак не могу добавить ответ про генерацию



Генерация

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

oblalex
12.03.2013, 20:42
никак не могу добавить ответ про генерацию. по-моему, форум не добавляет ответы, длиннее некоторого кол-ва символов

oblalex
12.03.2013, 20:43
Генерация

это вообще отдельная тема, очень интересная, но напрямую к коммандеру не относящаяся. какие критерии генерации должны быть, где их хранить, какие параметры объектов должны учитываться - зависит от того, что и для чего генерируется. например, даже генерация погодных условий для последовательности миссий - тема вообще холиварная.

oblalex
12.03.2013, 20:44
если нужно генерировать чего-то нового с учетом чего-то старого, то тут сразу вылазит привязка с схеме БД. если базовая схема БД будет всех устраивать, то тогда можно будет обсуждать генератор как часть базового набора плагинов. например, многие догфайт серверы имеют определенный набор карт, который находится в ротации. завсегдатаи таких серверов, наверно, с точностью до сантиметра знают карты и оно им приедается. чтобы у разнообразить такую ситуацию можно создать онлайн сервис генерации миссий и плагин, который бы к нему обращался для генерации миссий исходя из входных параметров. ну это как вариант для определенного круга задач. сначала надо сам коммандер сделать, а то без него разговоры о генерации не имеют смысла :)

WotD
21.03.2013, 16:11
Было бы здорово, если бы вы здесь выкладывали что-то вроде информации по текущему состоянию :)
Я понимаю, что вся информация доступна и в Твиттере/Гитхабе, но здесь как-то...нагляднее что ли.

Будем ждать от вас новостей и билдов :)

oblalex
26.03.2013, 01:44
очень приятно, что проект представляет интерес для общества :) изначально я думал, что тут будут обсуждения проблемы коммандера, но ничего не ограничивает писать тут все подряд. можно использовать гугл-группу, или организовать что-то наподобие дневников разработок, как у БзС (http://forum.il2sturmovik.su/topic/89-%D0%B4%D0%BD%D0%B5%D0%B2%D0%BD%D0%B8%D0%BA%D0%B8-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8/). по этому поводу предложения так же приветствуются :)

целями команды является разработка не только коммандер, но и любого софта и сервисов, связанных с Ил-2 ЗС. пока согласуются вопросы по коммандеру, понемногу идет разработка онлайн аналога maptools. это не попытка создать плагиат, а дать второе дыхание полезному софту, приспособить его под современные требования. основная фича - хранение всех карт местности с их картами высот, возможность группового редактирования, а так же предоставление API для получения инструментов на своем сайте на своих картах. Карты местности все, вроде, видели, а карты высот пока приходится пилить самим. пример - сетевые горы (https://www.dropbox.com/s/a549vj75o47kh2p/NetMountains.png). репозиторий находится тут (https://github.com/IL2HorusTeam/web-map-tools), а staging-версия проекта здесь (http://il2-horus-maptools.herokuapp.com/).

новостями делиться будем обязательно. было бы еще чудесно найти хотя бы парочку разработчкиков :)

oblalex
26.03.2013, 01:46
очень приятно, что проект представляет интерес для общества :) изначально я думал, что тут будут обсуждения проблемы коммандера, но ничего не ограничивает писать тут все подряд. можно использовать гугл-группу, или организовать что-то наподобие дневников разработок, как у БзС (http://forum.il2sturmovik.su/topic/89-%D0%B4%D0%BD%D0%B5%D0%B2%D0%BD%D0%B8%D0%BA%D0%B8-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8/). по этому поводу предложения так же приветствуются. новостями делиться будем обязательно. было бы еще чудесно найти хотя бы парочку разработчкиков :)

AnpeJIb
26.03.2013, 01:51
oblalex:
очень приятно, что проект представляет интерес для общества :) изначально я думал, что тут будут обсуждения проблемы коммандера, но ничего не ограничивает писать тут все подряд. можно использовать гугл-группу, или организовать что-то наподобие дневников разработок, как у БзС (http://forum.il2sturmovik.su/topic/89-%D0%B4%D0%BD%D0%B5%D0%B2%D0%BD%D0%B8%D0%BA%D0%B8-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8/). по этому поводу предложения так же приветствуются. новостями делиться будем обязательно. было бы еще чудесно найти хотя бы парочку разработчкиков :)

целями команды является разработка не только коммандер, но и любого софта и сервисов, связанных с Ил-2 ЗС. пока согласуются вопросы по коммандеру, понемногу идет разработка онлайн аналога maptools. это не попытка создать плагиат, а дать второе дыхание полезному софту, приспособить его под современные требования. основная фича - хранение всех карт местности с их картами высот, возможность группового редактирования, а так же предоставление API для получения инструментов на своем сайте на своих картах. Карты местности все, вроде, видели, а карты высот пока приходится пилить самим. пример - сетевые горы (https://www.dropbox.com/s/a549vj75o47kh2p/NetMountains.png). репозиторий находится тут (https://github.com/IL2HorusTeam/web-map-tools), а staging-версия проекта здесь (http://il2-horus-maptools.herokuapp.com/).

WotD
27.03.2013, 13:18
Ребята, я предлагаю (раз уж рассматриваются предложения) вам выпустить версию коммандера хотя бы с базовым функционалом, для начала :)

Чего хочется:

Создавать список карт для ротации, с возможностью указать условие перехода из формы. ЕСЛИ map1 ЗАКРЫТА RED, ГРУЗИТЬ map2, примерно так.
Или простая ротация, пока без логики.
Ну, перезагружать\выгружать\загружать сервер\карту, конечно.
Наследовать другие плюшки сервера - указание ограничения пинга, выдача бана, кик, все в этом духе.
Возможность указать сообщения, выводимые при коннекте, а так же через назначаемые промежутки времени.

Кроме того, со своей стороны могу предложить еще и тестирование всего этого `в боевых условиях`, на нашем местном сервачке. Обо всех замеченных косяках я бы писал куда следует :)

MEXAHNK
27.03.2013, 16:38
Ребята, я предлагаю (раз уж рассматриваются предложения) вам выпустить версию коммандера хотя бы с базовым функционалом, для начала :)

Чего хочется:

Создавать список карт для ротации, с возможностью указать условие перехода из формы. ЕСЛИ map1 ЗАКРЫТА RED, ГРУЗИТЬ map2, примерно так.
Или простая ротация, пока без логики.
Ну, перезагружать\выгружать\загружать сервер\карту, конечно.
Наследовать другие плюшки сервера - указание ограничения пинга, выдача бана, кик, все в этом духе.
Возможность указать сообщения, выводимые при коннекте, а так же через назначаемые промежутки времени.

Это не имеет отношение к коммандеру, ты просишь написать тебе скрипты для конкретного, желаемого тобой проекта.

WotD
27.03.2013, 16:57
Это не имеет отношение к коммандеру, ты просишь написать тебе скрипты для конкретного, желаемого тобой проекта.

Механик, я ничего не прошу. И никакого конкретного проекта у меня нет. У меня есть только желание мотивировать разработчиков, давая им понять, что хоть кто-то по-настоящему интересуется их трудом и кому-то он нужен, раз уж в теме такая невероятная активность.
И если они смогут предоставить это - я буду рад. Думаю, не один только я. А что имеет-не имеет отношения к коммандеру - это уже дело разработчиков. Я только высказываю свое предложение, поскольку оно здесь приветствуется, либо, по крайней мере, не запрещается. И одними предположениями телега далеко не уедет.

oblalex
29.03.2013, 17:33
окей, желающие есть, пойдем подкидывать угля :)

AnpeJIb
23.04.2013, 11:07
oblalex:

Здравствуйте! Сегодня я хочу поделиться новостями нашей команды.

1. В нашей команде, в рядах разработчиков, произошло пополнение
2. На гитхабе IL2HorusTeam https://github.com/IL2HorusTeam теперь числится не как пользователь, а как организация. Список членов команды, связанных непосредственно с написанием кода можно увидеть тут https://github.com/IL2HorusTeam?tab=members
3. Вскоре появится первичная документация по проектам для упрощения ориентации
4. Не забываем про гугл-группу https://groups.google.com/forum/?hl=en&fromgroups=#!forum/il-2-horus-commander . Было решено создать тему для предложения любых идей, связанных с коммандером https://groups.google.com/forum/?hl=en&fromgroups=#!topic/il-2-horus-commander/aUVMmpp3oN8 . При принятии идеи создается отдельная тема для её обсуждения.

В данный момент есть 2 темы по идеям:
1. MapTools - https://groups.google.com/forum/?hl=en&fromgroups=#!topic/il-2-horus-commander/sQerFYilsHw
2. Коммандер - https://groups.google.com/forum/?hl=en&fromgroups=#!topic/il-2-horus-commander/i7eCBFB4bk8 . Обратите внимание на 2-е сообщение. Оно касается построения системы плагинов.

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

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

oblalex
02.05.2013, 11:26
Здравствуйте, товарищи! Хочу сообщить, что члены нашей команды испытывают затруднения при отправке сообщений на этом форуме по техническим причинам. Мы ищем другое место для общения с вами. Будем рады услышать ваши предпочтения.

oblalex
15.06.2013, 12:38
Наконец-то форум как-то работает.

У нас на прошлой неделе был минирелиз MapTools (http://il2horusteam.github.io/web-map-tools/).

Что есть:
- выбор карты
- просмотр её размера
- перемещение по карте с помощью скроллов (в хроме по горизонтали можно перемещаться shift+колесо мышки)
- линейка с названиями квадратов имеет фиксированную позицию на экране
- отображается сетка, названия нас. пунктов и географических объектов, филды с направлением посадки
- отображаются текущие координаты мышки, квадрат и высоту, что соответствуют этим координатам

проверялось на настольных ПК и на таблетках

WotD
08.10.2013, 18:45
Ну что, период отпусков вроде как закончился, да и времени с последних новостей прошло уже немало...
Единственно, заметил, что вы сменили платформу на python, но здесь-то новостей никаких. А ведь, имха, освещай вы процесс здесь, интерес к проекту, со стороны общественности, возрос бы значительно. Многие-то попросту и не догадываются о разработке. Может и помощь бы кто предложил. Процесс-то движется? Или запал уже не тот?..

Kosmos256601
08.10.2013, 20:07
WotD поддерживаю!

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

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

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

Теперь по существу. После перехода на Python была создана библиотека il2ds-middleware (https://github.com/IL2HorusTeam/il2ds-middleware). Она автономна и предоставляет высокоуровневый доступ к выделенному серверу Ил-2 для Python-приложений. Доступ может быть осуществлен с помощью 3-х каналов взаимодействия, предоставляемых выделенным сервером, а именно: асинхронный обмен данными с консолью сервера через TCP-сокет, синхронный обмен данными через интерфейс сервера DeviceLink (https://docs.google.com/document/d/1xpKVF1ClXyLCxacBjnw3-lzrAPF_7gzVlduAFQfwNKc/edit) с помощью UDP-сокета, мониторинг событий на карте посредством чтения журнала событий. Парсеры событий по умолчанию так же имееются.
Библиотека доступна в официальных Python пакетах (https://pypi.python.org/pypi/il2ds-middleware/0.8.1). Текущая версия - 0.8.1. Это всё ещё не 1.0.0, т.к. пока что отсутвует надлежащая документация. Автоматическими тестами покрыто 99% кода (https://coveralls.io/r/IL2HorusTeam/il2ds-middleware).
"Физический смысл" библиотеки в том, что она позволяет общаться с сервером способом, похожим на удаленный вызов питоновских функций на сервере. С её помощью можно довольно легко и быстро написать простой коммандер всего за пару часов. Примеры так же имеются (https://github.com/IL2HorusTeam/il2ds-middleware/tree/master/examples).
Например, radar_dynamic мониторит координаты самолетов на сервере в реальном времени и выводит их на стандартный вывод. При определенных событях DeviceLink-овский радар обновляется.
events_to_chat все события на карте и в консоли, которые прошли парсинг, выводит в чат игры. Под парсингом подразумевается то, что строки, которые приходят от сервера, преобразуются в объекты (Python-овские словари и кортежи). Список текущих поддерживаемых собитий можно увидеть в определении интерфейсов парсеров (https://github.com/IL2HorusTeam/il2ds-middleware/blob/master/il2ds_middleware/interface/parser.py). Документация к ним обязательно появится.
mission_cycler - полноценный реальный ротатор одной миссии. Он перезагружает указанную карту через равные указанные промежутки времени, пишет об оставшемся времени миссии в чат, а так же реагирует на команду "timeleft".
Если вы внимательно посмотрите на эти примеры миникоммандеров, то должны заметить одно прекрасное сходство между ними: минимальный размер кода и его простота. Для того, чтобы написать простецкий коммандер нужно написать всего несколько десятков строк.

Использование созданной библиотеки не ограничилось одними простыми примерами. Был написан создатель высот (https://github.com/IL2HorusTeam/il2-heightmap-creator). Это распределенное приложение, суть которого сводится к генерации карты с участком, заполненным равноотдаленными объектами, загрузке карты на сервер и опроса координат объектов с целью получения массива высот всей территории карты. Для ускорения опроса територий приложение было сделано распределенным (в отличии от первой версии на С++ (https://github.com/IL2HorusTeam/desktop-app-heightmap-creator)). Так, например, карта 300х400 км^2 (как Бессарабия) на 10-ти серверах опрашивается за полчаса. Раньше это занимало часов 8 на одном сервере.
На выходе мы имеем одномерный массив целых 16-ти битных чисел, которые содержат значения высот местости с точностью до метра. Сами точки идут в последовательности слева-направо свреху-вниз с шагом 100м. Этот шаг выбран исходя из того, что в SFS-архивах Ил-2 содержатся топографические карты (те самые, которые вы видите при нажатии клавиши М или Shift+М в игре) с найбольшим масштабом 1:100, т.е. в одном пикселе содержится квадрат 100х100 м^2.
Имея такой массив мы получаем массу новых возможностей. Наример, отрендерить карту высот в одном цвете (http://imageshack.com/a/img844/9878/3ip6.png), либо в другом (http://imageshack.com/a/img855/8311/lld4.png). Так же можно отрендерить ровные участки на местности (http://imageshack.com/a/img51/1899/uaff.png) для облегчения поиска мест под аэродромы.

Готовые массивы высот, топографические карты, карты высот, а так же карты равнин можно посмотреть и получить здесь (https://www.copy.com/s/uKwaDtRBJKix/maps). На картах высот изображены изолинии с шагом 400м. Если они отсутствуют, значит максимальная высота на карте менее 400м. Всю эту кухню, в частности карты равнин, обязательно будут выложены отдельной темой как подарок картоделам.

В данный момент на основе полученных карт ведутся работы по новой версии Map Tools. Масштабируемую версию с некоторыми инструментами можно увидеть и потрогать здесь (http://il2horusteam.github.io/maps). Можно делиться ссылками на определенные участки карты, например так (http://il2horusteam.github.io/maps/#4/0.22/0.50). Можно мерять линейкой расстояния, смотреть текущие координаты, а так же задавать их вручную. Можно переключаться между слоями карты. Так же есть пример с линейками, сеткой и фиксированными границами (http://il2horusteam.github.io/maps/dev.html).

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

После создания приложения возобновятся работы по созданию центра данных Ил-2. Это будет хранилище статической информации о предметной области Ил-2, например, о картах (их названия, размеры, и др. (https://github.com/IL2HorusTeam/django-il2-domain/blob/master/il2_domain/locations/fixtures/init_data.json)), городах, аэродромах, объектах, самолетах, их вооружении и др. Эти данные будут доступны как фикстуры (дамп) базы данных по стандартным объектам, а так же планируется создать сервис, который бы выдавал информацию об объектах на удаленные запросы (для того же Map Tools, например). Для этого сервиса необходимо будет искать некоторый хостинг или как-то подниматьего вручную.

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

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

oblalex
08.10.2013, 23:34
Для линуксоидов:
Да, кстати, под Wine (http://www.winehq.org/about/) был создан bug-report (http://bugs.winehq.org/show_bug.cgi?id=33791), который повлиял на включение важного патча в wine. Начиная с версии wine 1.6 можно спокойно запускать выделенный сервер под unix-ами и спокойно использовать DeviceLink на локальной машине (например, для реализации в коммандере мониторинга координат пилотов).

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

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

Большую работу Вы делаете, респект! Для того, кто вообще ничего не понимает в программировании, командерах и т.д., проясните, пожалуйста:


Например, radar_dynamic мониторит координаты самолетов на сервере в реальном времени и выводит их на стандартный вывод.

сможет ли создатель сервера или миссии задать на карте зону "запрещенную для полетов" определенной категории игроков? Например, по замыслу карты, на определенную цель должны прийти и отработать по ней ТОЛЬКО специально заранее зарегистрированные игроки-Пеховоды и Яководы... в определенном количестве. А перехватить или сбить над целью их могут только заранее зарегистрированные на сервере пилоты "мессов" и "Фок".

Если бы удалось создать статистику, в которой набранный командой BlueTeam или RedTeam результат зависел бы не только от количества выбитой наземки, но и ещё от соотношения количества игроков (через их предварительную регистрацию на вылет), то, как мне кажется, мы бы увидели в виртуальном небе более интересный процесc, чем сейчас; плотные формации бобров и эскадрильи ястребов
.

oblalex
09.10.2013, 09:47
сможет ли создатель сервера или миссии задать на карте зону "запрещенную для полетов" определенной категории игроков? ...

Да, конечно, такое вполне возможно. А статистику собирать можно самую разнообразную.

WotD
09.10.2013, 14:17
Звучит все чертовски заманчиво. Если взаправду на выходе будет едва ли не фреймворк, то это `просто праздник какой-то`.
Итоговый функционал будет чрезвычайно гибким, благодаря своей модульности. И если вам, ребята, хватит терпения все это довести до ума, я не побоюсь утверждать, что наступит новая эра в серверостроении старичка. Такие проекты можно будет делать, что всякие Вартундры и близко не подберутся. Все ограничится лишь фантазией разработчика... Ведь текущая проблема не в незаинтересованности, а в отсутствии инструментов, а зачастую и времени на их создание.

Ведь, вообразите себе:

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

=RF=ODESSA
09.10.2013, 14:45
Это все конечно красиво, но есть ли что либо готовое, простое как командер Геннадича и рабочее?

oblalex
09.10.2013, 17:18
Полная телеметрия игрока - количество топлива и БК, возможно, текущие повреждения самолета и состояние пилота, его координаты.

Кое-как такое можно сделать и сейчас, через костыли, но было бы эффективнее использовать возможности DeviceLink, ведь с его помощью можно получить информацию обо всем самолете полностью. Но, насколько мне известно, такое можно делать только на стороне клиента да и то в однопользовательском режиме. На стороне сервера можно только узнать коичество самолетом/объектов/кораблей/зданий и их координаты. Остальные вкусности или нереализованы или недокументированы. Попытки получить какую-то информацию у ДТ как обычно заканчиваются по сценарию "а в ответ тишина".


Это все конечно красиво, но есть ли что либо готовое, простое как командер Геннадича и рабочее?

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

Хотелось бы узнать, кто-нибудь знаком с использованием IRC? Очень хотелось бы создать общедоступный канал чата для того, чтобы давать ответы на любые вопросы (проще, чем скайп, быстрее, чем форум). Можно запросто организовать на том же самом freenode (http://freenode.net/).

oblalex
10.10.2013, 22:13
Дабы не откладывать дело в долгий ящик, приступаем к реализации событийного коммандера il2ds-events-commander (https://github.com/IL2HorusTeam/il2ds-events-commander) :rolleyes:. Текущий упор будет на создание бекэнда (внутренностей). Т.к. создание инструментария по отображению карты, а так же сбор различной информации об объектах требуют достаточно много времени, то эти вещи будут доделываться по ходу и после мало-мальской альфа-бета версии. Правда, мне нужно срочно закончить свой диплом, так что заранее предупреждаю, что в течении пары следущих недель особых новостей не намечается, но на все вопросы ответы даваться будут.

oblalex
12.10.2013, 13:47
Всем привет!

Ведется работа по созданию независимого парсера лога il2ds-log-parser (https://github.com/IL2HorusTeam/il2ds-log-parser), который будет интегрирован в il2ds-middleware (https://github.com/IL2HorusTeam/il2ds-middleware). Сам парсер позволяет преобразовать строку журнала сервера в событие. Например, строка


[8:52:43 PM] More:Pe-8(0) was killed at 208531.81 103386.945

будет преобразована в событие


{
"callsign": "More",
"aircraft": "Pe-8",
"pos": {
"x": 208531.81,
"y": 103386.945
},
"seat": 0,
"time": "20:52:43",
"type": "KLD"
}

Текущий список поддерживаемых пользовательских событий можно посмотреть здесь (https://github.com/IL2HorusTeam/il2ds-log-parser/blob/484053e53b11f8ff61b6f848af3619836e00ac3c/src/il2ds_log_parser/regex.py#L103-L129). На каждый тип события можно назначить свой обработчик.

В данный момент создан преобразователь журнала в JSON формат log2json (https://github.com/IL2HorusTeam/il2ds-log-parser/blob/484053e53b11f8ff61b6f848af3619836e00ac3c/src/log2json.py). Он является вспомагательной утилитой и разбирает весь журнал на события и группирует их по миссиям. В рамках миссии события сгруппированы по пилотам. Т.е. на выходе имеем прообраз летной книги. Например этот журнал (https://www.dropbox.com/s/uu4xioccvm5isru/eventlog.lst) будет приведен к следующему виду (https://www.dropbox.com/s/d9chdchlt7ik7rk/events.json). В ходе разбора выводится информация об общем количестве строк в журнале, количестве разобранных и неразобранных строк, а так же сокращенный список неразобранных строк.

С целью расширения списка поддерживаемых событий, хотелось бы попросить всех, кому не жалко, присылать любые журналы серверов. Особенно интересуют журналы мисий, где есть движущаяся наземка, корабли и боты. Заранее спасибо! :)

oblalex
28.10.2013, 00:21
Всем привет!

На днях вылез из академического окопа и все выходные пропыхтел.

Вчера была выпущена библиотека разбора журнала событий il2ds-log-parser версии 0.9.0 (https://github.com/IL2HorusTeam/il2ds-log-parser). Пока поддерживаются 33 события (https://github.com/IL2HorusTeam/il2ds-log-parser/blob/master/src/il2ds_log_parser/tests/test_parser.py#L283). В данный момент остается некоторое количество открытых задач (https://github.com/IL2HorusTeam/il2ds-log-parser/issues?labels=&milestone=&page=1&state=open). В основном они касаются поддержки событий движущейся наземки, ботов и командных килов. Буду очень признателен, если у вас есть любые журналы событий сервера и для вас не составит особых усилий выложить их сюда :).

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

В связи с выходом парсера лога, была обновлена il2ds-middleware до версии 0.9.0 (https://github.com/IL2HorusTeam/il2ds-middleware). Теперь она использует парсеры из il2ds-log-parser, имеет чуть более причесанный код и документацию к нему. Вы можете увидеть список всех поддерживаемых событий здесь (https://github.com/IL2HorusTeam/il2ds-middleware/blob/master/il2ds_middleware/interface/service.py), а так же их применение посредством отправки разобранных событий здесь (https://github.com/IL2HorusTeam/il2ds-middleware/blob/master/examples/events_to_chat.py).

Так как академический окоп меня никуда не отпускал, то на следующих выходных начнутся работы по созданию полноценного событийного коммандера. Конечно, написание двух универсальных библиотек само по себе является и частью написания коммандера (процентов на 40), но со следующей недели будет уже писать код непосредственно коммандера.

Краткое описание планируемой логики коммандера:

Центральное место в коммандере будет отведено управлению, контролю и мониторингу события (сценария). Событие может быть в следующих состояниях:
- запланированное;
- активное;
- завершенное.

Запланированное или активное событие может быть только одно. Просматривать информацию о событиях может любой пользователь.

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

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

Общее количество самолетов по типам, количество свободных и кол-во заявок на каждый тип можно просматривать на веб-морде. Там же можно смотреть инфформацию об активном событии и о прошедших событиях.

oblalex
01.11.2013, 10:16
Я видел тут было сообщение от WotD, но не успел ответить - форум уже лежал.

Спасибо за пожелания в учёбе :) Работа, кстати, тоже время забирает. Хотелось бы более стабильно вести разработку и периодично делиться новостями, но ближайшие пару месяцев все будет проходить в текущем режиме.

Срочные задачи по парсеру закрыты, теперь он обновлен до версии 0.10.0 (https://github.com/IL2HorusTeam/il2ds-log-parser), и middleware библиотека так же обновлена до версии 0.9.1 (https://github.com/IL2HorusTeam/il2ds-middleware). Так что теперь работа пойдет уже над коммандером!

Так же у нас в команде появился человек, которому интересно заняться map-tools. Я очень рад и надеюсь, что работа в этом направлении будет возобновлена и принесет определёные плоды. А пока что это все новости на сегодня.

oblalex
05.01.2014, 15:06
Всем привет! Хочу поделиться парой новостей.

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

1. Была выпущена Python библиотека wine-deamonizer (https://github.com/oblalex/Wine-deamonizer), которая позволяет вертеть виндовыми процессами на юниксах под Wine как обычными сервисами. Подробнее - на странице проекта.

2. Был выпущен сервис il2dsd (https://github.com/IL2HorusTeam/il2dsd), который позволяет превратить сервер Ил-2 в обычный юникс-сервис. С сервисом так же поставляется инструмент "il2ds-installer", который автоматически собирает сервер, выкачивая нужные патчи и распаковывая их в нужное место. Данный проект призван упростить жизнь админам юниксов, избавляя их от лишних проблем и представляя стандартный интерфейс управления сервисом. По правде говоря, этот проект предназначается для автоматического развертывания и управления сервером в виртуальной среде разработки, но он вполне пригоден для использования в реальной жизни. Подробнее - на странице проекта.

Оба проекта доступны для установки из debian-репозитория il2horus (https://launchpad.net/~il2horus/+archive/ppa). Их названия "python-wine-deamonizer" и "il2dsd" соответственно. Также доступна ручная установка. Более подробно о процессе усстановки указано на страницах проектов.

Ну, и на последок: в связи с выходом "il2dsd" была обновлена статья по установке (https://github.com/IL2HorusTeam/projects/wiki/%D0%92%D1%8B%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D0%98%D0%BB-2-%D0%A8%D1%82%D1%83%D1%80%D0%BC%D0%BE%D0%B2%D0%B8%D0%BA) выделенного сервера Ил-2.

oblalex
13.01.2014, 02:34
Коротко о коммандере:

Настроено автоматическое развертывание виртуализированного окружения разработки, настройки проекта и команды управления им. Ссылка на странице проекта остается [прежней (https://github.com/IL2HorusTeam/il2ds-events-commander)]. [На рисунке (https://www.dropbox.com/s/avu7x8sx0roifhq/commander.png)] отображена общая структура проекта. Как было сказано раньше, развертывание и настройка всей серверной части происходит автоматически. На стороне сервера имеется postges+postgis, redis, nginx+uwsgi, python+django+twisted и сервер ил-2. Это всё работает и можно зайти в админку помучать пользователей и группы. Выглядит это [вот так (https://www.dropbox.com/s/za01t6ecpbodv70/3684455.png)].

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

WotD
13.01.2014, 13:29
Приятно видеть, что проект продолжает активно разрабатываться. Быть может, здесь и нет бурного обсуждения, но могу смело заявить - это до крайности нужная вещь, нужная многим людям. Огромное спасибо за ваши труды, ребята. Буду ждать новостей.

oblalex
20.01.2014, 02:15
Итоги прошедшей недели:

На этой неделе была начата работа непосредственно на самим коммандером. Сейчас он умеет:


кодключаться к консоли сервера, слушать входящие сообщения и посылать команды;
переподключаться в случае потери соединения (например, если сервер был перезапущен);
общаться с сервером через ДевайсЛинк;
слушать лог сервера;
обрабатывать события и парсить их (с помощью ранее созданной и упоминавшейся библиотеки);
слушать команды на своём собственном API-интерфейсе.


Всё, вроде, более-менее понятно, кроме последнего. API-интерфейс позполяет управлять самим коммандером, будь то консольный клиент, или запрос с веб сервера. В отличии от игрового сервера, API коммандера поддерживает множественные одновременные соединения. В основном интерфейс предназначает для управления миссиями, киканья подозрительных личностей и т.д. Так же можно сделать прямой обмен данными с игровым сервером. В этом случае коммандер сможет работать как мулиплексор+дешифратор, позволяя разным клиентам выполнять разные задачи. Например, в одном окне терминала иметь чат с сервером без всякой служебной информации, а в другом окне следить за событиями на карте. Нужен ли такой функционал, пока не известно, но сама возможность существует. В данный момент по API можно только выключить коммандер. Следующим этапом (довольно близким во времени) будет управление миссиями.

Ниже представлено несколько скринов как доказательство работоспособности некоторых вещей.

Например, реакция на событие консоли:

http://i.imgur.com/0Tq03Ydl.jpg (http://imgur.com/0Tq03Yd)

Присоединение к серверу и оповещение всех игроков о том, что им придется переподключиться (если игроки есть):

http://i.imgur.com/PhuLnOxl.jpg (http://imgur.com/PhuLnOx)

Оповещение игроков о том, что коммандер выключается (опять-таки, если игроки есть):

http://i.imgur.com/xz5AdS3l.jpg (http://imgur.com/xz5AdS3)

С виду это мало о чем говорит, но на самом деле показывает, что коммандер полноценно умеет взаимодействовать с сервером.

На этой неделе также производилась работа с визуальной частью проекта. Дизайнер и верстальщик из меня не ахти, так что...

Заготовок главной страницы:

http://i.imgur.com/LApXJukl.png (http://imgur.com/LApXJuk)

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

http://i.imgur.com/kdByGyGl.png (http://imgur.com/kdByGyG)

Так же имеется рабочая переключалка языка для анонимных пользователей:

http://i.imgur.com/UDbht97.png

Такой вид имеет форма входа и форма запроса восстановления пароля:

http://i.imgur.com/K2loIcu.png http://i.imgur.com/SKzHWZu.png

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

В остальном все пока идет без проишествий. Историю изменений и ход разработки можно смотреть [тут (https://github.com/IL2HorusTeam/il2ds-events-commander/commits/master)]. Изменения за весь день там появляются примерно в это же время.

oblalex
02.02.2014, 23:18
Доброго всем вечера! Сегодня коротко об итогах прошедших двух недель.

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

Пока что из всего этого реализована где-то половина. Не так много, как хотелось бы, но задачи действительно объёмные для одного человека. Из оффтопа: в течении этих двух недель я закончил-таки магистратуру и сменил место работы.

Возможно, следующая сводка будет опять через две недели. В любом случае работа не прекращается ни на один день.

Спасибо за внимание :)

Sita
04.02.2014, 23:36
Какая то невероятно сложная штуковина затевается! 0_0...

oblalex
19.02.2014, 00:47
Всем привет!

Сегодня прошло ровно 50 дней с момента начала непрерывной работы над проектом. Каждый день, каждая неделя проходили не зря (https://github.com/IL2HorusTeam/il2ds-events-commander/graphs/commit-activity).

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


формирование запроса на регистрацию и отправка письма с подтверждением почтового адреса
подтверждение почтового адреса и непосредственно регистрация
аутентификация по имени пользователя/почтовому адресу
отправка запроса на сброс пароля с получением письма с соответствующей ссылкой
непосредственно сброс пароля
изменение учетных данных, в том числе и предпочитаемого языка в системе
изменение пароля
изменение имени пользователя
отключение и включение учетки


Далее идет ряд скринов того, как это всё выглядит. Обработка всевозможных ошибок не отображена, чтоб не мозолить глаза.

http://i.imgur.com/3InnUWml.png (http://imgur.com/3InnUWm)

http://i.imgur.com/xBNh6Nll.png (http://imgur.com/xBNh6Nl)

http://i.imgur.com/OrrsIpLl.png (http://imgur.com/OrrsIpL)

http://i.imgur.com/noaWYR9l.png (http://imgur.com/noaWYR9)

http://i.imgur.com/G9OuUOHl.png (http://imgur.com/G9OuUOH)

http://i.imgur.com/mCS9eDNl.png (http://imgur.com/mCS9eDN)

http://i.imgur.com/KygBPFhl.png (http://imgur.com/KygBPFh)

http://i.imgur.com/WfUSBvrl.png (http://imgur.com/WfUSBvr)

http://i.imgur.com/bU6OfnPl.png (http://imgur.com/bU6OfnP)

http://i.imgur.com/msfSLc4l.png (http://imgur.com/msfSLc4)

http://i.imgur.com/NZ6pYfxl.png (http://imgur.com/NZ6pYfx)

http://i.imgur.com/B60YW0Ol.png (http://imgur.com/B60YW0O)

http://i.imgur.com/8eY8TYil.png (http://imgur.com/8eY8TYi)

http://i.imgur.com/VuDvWOgl.png (http://imgur.com/VuDvWOg) http://i.imgur.com/sfYLbr8l.png (http://imgur.com/sfYLbr8)

http://i.imgur.com/orTaDR3l.png (http://imgur.com/orTaDR3) http://i.imgur.com/VGh0FoMl.png (http://imgur.com/VGh0FoM)

http://i.imgur.com/9lLx9OHl.png (http://imgur.com/9lLx9OH)


Понятно, что скриншоты это хорошо, но все мы знаем, что это скучная дразнилка. Зачастую веб - вещь интерактивная. И у коммандера со статистикой интерактивности хоть отбавляй и её нужно щупать руками.

Благодаря =AxA=KamAL уже существует отдельное железо, которое ждет-не дождется, когда на нем начнут запускаться сборки проекта. Благодарю его за такую щедрую возможность! В обозримом будущем эта возможность будет полноценно использована, и проект будет тестироваться в реальных условиях.

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


Какая то невероятно сложная штуковина затевается! 0_0...

Это врядли. Обычный веб-проект, который разделяет БД и код с коммандером. Например, я софт нуллвара не разворачивал, но его описание (http://www.nullwar.com:84/%D0%A1%D0%BE%D1%84%D1%82.ashx) выглядит куда посуровей. После настройки деплоя на удаленный сервер появится документация по развертыванию проекта для пользователей. Надеюсь, тогда станет немного понятней суть вещей :)

oblalex
01.03.2014, 17:24
Всем привет! Сегодня у нас очередная порция новостей.

Итак, по порядку и по степени вкусности:


Внесено множество различных технических правок.
Отправка почты была переведена в фоновый процесс и теперь параллельные http-запросы не блокируются.
Распилены и переорганизованы настройки для различных платформ.
Добавлена документация с общим описанием (https://github.com/IL2HorusTeam/il2ds-events-commander#synopsis), с обзором структуры проекта (https://github.com/IL2HorusTeam/il2ds-events-commander#project-structure-overview), с описанием установки (https://github.com/IL2HorusTeam/il2ds-events-commander#installation-process) (пока это ручная установка под линупс) и с описанием развертывания стейджинг платформы (https://github.com/IL2HorusTeam/il2ds-events-commander#configuring-staging-environment).
Добавлена форма обратной связи, котороя несколько отличается для аутентифицированных и анонимных пользователей (см. спойлер)
http://i.imgur.com/r2NINfvl.png (http://imgur.com/r2NINfv)

http://i.imgur.com/JqbKg3Yl.png (http://imgur.com/JqbKg3Y)

http://i.imgur.com/gbtloZVl.png (http://imgur.com/gbtloZV)

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


Надеюсь, обзор структуры проекта (https://github.com/IL2HorusTeam/il2ds-events-commander#project-structure-overview) несколько прояснит картину с технической точки зрения. Процесс установки может показаться несколько затейливым, но на самом деле сложного ничего нет: обычный веб-проект, способный держать большую нагрузку. От БД, кеша, фоновых задач и веб-сервера никуда не денешься. В будущем вся документация будет причёсана и разделена на страницы, а процесс установки будет упрощен. В пинде же установка по большей части будет производиться мышкой со всеми причандалами.

Но отложим документацию в долгий ящик и перейдем к самому интересному. Как я уже упоминал, благодаря =AxA=KamAL (ещё раз ему большущее спасибо) у нас есть реальное железо и интернет для реальных проверок. Так вот: это железо полностью настроено и выступает в роли стейджинг сервера. Посмотреть и пощупать его могут все желающие:

Адрес веб-приложения:
http://il2events.servegame.com/

Адрес игрового сервера:
il2events.servegame.com:21000

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

Так как база будет периодически обнулятся, то в целях тестирования было создано несколько тестовых пользователей: user1, user2, ..., user10. Их пароли идентичны их именам. Чтобы не выступать в роли жандарма или полицейского, попрошу их настройки не изменять. Создавайте свои учетки и без проблем меняйте там всё, что угодно. Так как здесь собираются взрослые люди, то надеюсь, что про ДДОС и другие пакости можно не упоминать. В остальном, на сайте можете проверять и пытаться ломать всё, что угодно.

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

На этом первую ключевую фазу с номером 0 можно считать завершенной. Дальше по плану идет создание и наращивание функционала.

И не стесняйтесь задавать вопросы :)

oblalex
09.03.2014, 13:58
Всем привет!

Сегодня очередные новости за неделю:


"Имя пользователя" было переименовано в "позывной"
Раньше нужно было обязательно вводить имя и по желанию фамилию. Теперь же можно просто по желанию ввести полное имя.
Добавлены переводы на русский. Сообщения в игровом чате для зарегистрированных пользователей выводятся на том языке, который указан в настройках пользователя на сайте.
Добавлен вывод информации о сервере (как общей информации, так и информации о настройках сложности). Адрес сервера легко выделяется и копируется. Информация обновляется автоматически без перезагрузки страницы. Если сервер падает, то информация и функции, связанные с сервером становятся недоступны.
Добавлена аутентификация на стороне игрового сервера. Теперь для того, чтобы зайти на сервер, необходимо на сайте запросить подключение. Для подключения каждый раз выдается новый одноразовый пароль, который необходимо отправить на сервер через чат игры. Так как пароль одноразовый, то его случайная отправка в общий канал не вызовет разлома галактики и остановки времени.
На игровом сервере запущены 3 карты с периодом 2 часа: Вязьма 42-го года, Новороссийск 43-го, Словакия 45-го (спасибо парням sovteam.ru!). На картах присутствуют боты и движущаяся наземка.


Ниже приведены различные скрины, но можно и собственноручно всё пощупать. Адрес всё тот же: http://il2events.servegame.com/.


http://i.imgur.com/zYINoD8l.png (http://imgur.com/zYINoD8)

http://i.imgur.com/hsgyokDl.png (http://imgur.com/hsgyokD)

http://i.imgur.com/jG9IRwJl.png (http://imgur.com/jG9IRwJ)

http://i.imgur.com/eBEDIdxl.png (http://imgur.com/eBEDIdx)

http://i.imgur.com/KJO5MdRl.png (http://imgur.com/KJO5MdR) http://i.imgur.com/3IAqBt9l.png (http://imgur.com/3IAqBt9)

http://i.imgur.com/pJvVDf3l.jpg (http://imgur.com/pJvVDf3)

http://i.imgur.com/J1N4TRIl.jpg (http://imgur.com/J1N4TRI)

http://i.imgur.com/V5k6QCgl.jpg (http://imgur.com/V5k6QCg)

http://i.imgur.com/uTx7YhTl.jpg (http://imgur.com/uTx7YhT)


Для вывода информации о настройках сложности была создана отдельная библиотека il2ds-difficulty (https://github.com/IL2HorusTeam/il2ds-difficulty), позволяющая кодировать и декодировать число с суммарными настройками сложности.

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

oblalex
16.03.2014, 19:39
Всем привет!

На этой неделе особых новостей нет.
Реализован мониторинг базовой информации об игроках (с помощью "user" и "user STAT"), а так же их координат (с помощью Device Link). Можно было бы давно отрисовать на морде список онлайт пилотов, но пока что ведутся внутренние работы над библиотекой "il2ds-middleware" (чистится код, переливаются наработки из коммандера), а так же ведётся работа над парсером миссий.

oblalex
30.03.2014, 23:50
Всем доброго времени суток! Настал час очередных новостей.

Для тех, кто из Лаконии: нового потрогать нечего.

Для любопытных: завершено переливание функционала из коммандера в il2ds-middleware (https://github.com/IL2HorusTeam/il2ds-middleware), завершена чиста и рефакторинг кода. Хоть изменений и насобиралось на несколько тысяч строк, но трудно объяснить,что же такого важного произошло. Это как генеральная уборка большого здания. Всё же я попробую объяснить.

Во-первых, il2ds-middleware обновилась до версии 0.10.0 (https://github.com/IL2HorusTeam/il2ds-middleware/pull/18). Напомню, что это библиотека высокоуровнего доступа к серверу Ил-2: как к консоли, так к Девайс Линку, так и к журналу событий. Что-то типа меча джедая, только джедаем быть не надо. В новую версию из коммандера перекочевала поддержка автоматического переподключения к консоли в случае обрыва соединения; запросы на кик одного пользователя или всех сразу; запрос на получение количества подключенных игроков; запросы на получение данных от комманд "user" и "user STAT"; добавлена поддержка установления таймаута для всех запросов; для тестирования нового функционала были внесены соответствующие изменения в эмулятор сервера; жестко отрефакторены сами тесты. Хотелось написать статью про тестирование протоколов, но лучше потрачу время на командер.

Во-вторых, проведён небольшой рефакторинг парсера журнала событий il2ds-log-parser (https://github.com/IL2HorusTeam/il2ds-log-parser). Он был обновлён до версии 0.10.1, и перешёл из стадии альфа в бету. Повторю свою просьбу: если у Вас завалялись или появятся журналы событий из миссий, где есть боты или движущаяся/шевелящаяся наземка, пожалуйста, поделитесь журналом и миссией, если не жалко :rolleyes:. Они будут проанализированы, в результате чего парсер сможет перейти в стабильную версию 1.0.0. Заранее спасибо!

В-третьих, из командера расширения журналирования для библиотеки Twisted (https://twistedmatrix.com/trac/) перекочевали в отдельную библиотеку tx-logging (https://github.com/oblalex/tx-logging). Её разом используют коммандер, миддлварь и парсер.

И, наконец, в-четвертых, ведётся параллельная работа над парсером миссий il2ds-mis-parser (https://github.com/IL2HorusTeam/il2ds-mis-parser). Парсер уже ясно видит свет в конце тоннеля. Нетрудно догадаться, что эта штука умеет превращать ужас в файлах миссий в человеко-понятные структуры данных. Примеры разборов отдельных секций можно посмотреть в тестах (https://github.com/IL2HorusTeam/il2ds-mis-parser/blob/master/il2ds_mis_parser/tests/test_parsers.py), где преобразование исходных строк "lines" проверяется на соответствие эталонным объектам "expected". Так как разбор некоторых секций - дело совсем нетривиальное, то вместе с описанием парсера будет предоставлено описание секций файла миссий и параметров внутри этих секций. Чтиво выйдет занятное и может пригодится тем, что хочет генерировать миссии. Планируется это дело включить в статью по установке и настройке сервера, которая, кстати, уже заждалась, когда я её обновлю.

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

oblalex
26.04.2014, 11:59
Всем привет!

Текущее положение дел:


Создана библиотека candv (http://candv.readthedocs.org/en/latest/) (Constants & Values), которая позволяет определять сложные константы с именами, описаниями, значениями, искать константы по имени и значению.
Заканчивается разработка библиотеки il2-commons (https://github.com/IL2HorusTeam/il2-commons) (осталась только зависимость от другой разрабатываемой библиотеки). Эта библиотека хранит глобальные константы для всего, что сязано с Ил-2: армии, страны, ВВС, все полки ВВС, погодные условия, поддерживаемые языки и версии игры и т.д.
Парсер миссий il2-mis-parser (https://github.com/IL2HorusTeam/il2-mis-parser) почти завершен. Логика разбора файла завершена полностью. Она включает в себя полный разбор 20-ти секций. Остаются некоторые технические моменты и зависимость от другой разрабатываемой библиотеки. Так же ведется документация библиотеки (http://il-2-missions-parser.readthedocs.org/en/latest/index.html). В разделе 4. Output format (http://il-2-missions-parser.readthedocs.org/en/latest/output_format.html) описаны первые 3 секции файла миссии.
Начата работа над библиотекой verboselib (https://github.com/oblalex/verboselib), которая позволит создавать библиотеки с поддержкой переводов внутренних строк, а так же с поддержкой ленивых строк.
Ведется обновление библиотеки il2-difficulty (https://github.com/IL2HorusTeam/il2-difficulty), которая позволяет работать с настройками сложности.


Общая картина по проектам и библиотекам представлена в спойлере:

http://i.imgur.com/80kSHjl.png (http://imgur.com/80kSHjl)

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


il2-confs - библиотека для работы с настройками сервера confs.ini. к ней планируется создать документацию так же, как и к парсеру миссий.
il2-map-tools - библиотека для работы с картами.


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

Sita
28.04.2014, 23:17
Звучит интригующе)

oblalex
29.04.2014, 20:09
=RF=ODESSA (3 недели назад) и HAMILTON (сегодня) писали мне по поводу коммандера. Я им отправлял ответы, но в личных отправленных сообщениях они не отображаются. Поэтому я не знаю, отправились ли сообщения вообще. Глюк ли это форума, или какие-то настройки сообщений, но для надежной переписки можно использовать скупе oblalex (skype:oblalex?add) или почту oblovatniy@gmail.com.