Перейти к содержимому
xedoc

IL2 CDR (AKA Командер)

Рекомендованные сообщения

Буду вести журнал процесса разработки, возможно будет кому-то интересно.

 

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

Пригодится для реализации статистики серверов и всевозможных сценариев аля Air Domination War, где необходим ввод команд от игроков и управление сервером, которое нельзя реализовать на уровне миссии.

 

Исходники обновляются тут:  https://github.com/xedoc/IL2CDR

Экзешник будет по этой ссылке: https://app.box.com/s/g6tmcu9tjv3eyeexf9buvhi1dqc4ofj1

Программа и скрипты пишутся на C#. Архитектура: MVVM (MVVMLight).

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

Сегодня планирую сделать парсер лога и простой скрипт для примера.

Если у кого-нибудь есть желание потестить или есть полезные советы - пишите. Если есть желающие чего-нибудь закоммитить - форкайте ;)

 

Пока быстро набросал скетч UI в VS.

  • Scripts - динамический список скриптов. Генерируется на основании списка файлов из папки с данными программы. Скрипты можно влючать, выключать и перезагружать. Для каждого скрипта отображается отдельный список настроек;
  • RCON - отправка консольных команд серверу. Разделена на команды управления игроками и глобальные команды;
  • Settings - глобальные настройки программы. Путь к логам миссии, опция чистки старых файлов(кстати, зачем они генерируются каждые 30 сек ???).
  • Log - журнал программы. Информация, ошибки загрузки сриптов со стектрейсом и т.д.

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

 

 

Q55HLQo.png

 

Изменено пользователем xedoc
  • Поддерживаю! 42

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ближе к результату ДОНАТЕ нарисуйте .И желательно с мнжеством способов внеснеия денег ибо лень для многих большее препятстие нежели бабло.

  • Поддерживаю! 14

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, если получится, надо будет парню собрать бакшиш . Пусть себе новый свитер купит - а то у компьютерщиков всегда один серый свитер ! )))

  • Поддерживаю! 6

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, если получится, надо будет парню собрать бакшиш . Пусть себе новый свитер купит - а то у компьютерщиков всегда один серый свитер ! )))

Поддерживаю!

Молодцы,что взялись.

Изменено пользователем AstronHaizer

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кто в этой фигне разбирается, вы помогайте советами, поделитесь опытом и наработками для ОБЩЕГО дела. Одна голова хорошо, а несколько - лучше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Пригодится для реализации статистики серверов и всевозможных сценариев аля Air Domination War, где необходим ввод команд от игроков и управление сервером, которое нельзя реализовать на уровне миссии.

 

Большое дело будет)

 

Если чем помочь можем - обращайся.

  • Поддерживаю! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ничерта не понимаю, но денег обязательно подброшу (другим помочь не могу). Удачи в разработке.

Изменено пользователем Mihalich1981
  • Поддерживаю! 6

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ближе к результату ДОНАТЕ нарисуйте

Поддерживаю. Спасибо автору за начинание! АДВ в БЗС - предел моих мечтаний!)

  • Поддерживаю! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

готов тестить и помочь в разработке вебовской части, составить архитектуру бд и прочее.

скайп kupikolesa

  • Поддерживаю! 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В программировании ни в зуб ногой :russian_ru: ,а вот пятаков могу подкинуть за такое дело! :good:

  • Поддерживаю! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

готов тестить и помочь в разработке вебовской части, составить архитектуру бд и прочее.

скайп kupikolesa

Отлично, я думал тестовую страничку статистики под Bootstrap сделать.

Хостинг для теста у меня есть. Можно еще на ASP.NET тестовый фронтенд сделать и залить на бесплатный Azure. Там 5Гб трафика на шару дают ;)

 

Чтобы не привязываться к структуре БД, я планирую использовать хранимые процедуры.

Со стороны клиента будет, например: CALL RecordKill(dateTime, attackerName, attackerCountry, attackerPlane, isAttackerInAir, targetName, targetCountry, targetPlane, isTargetInAir);

А уже в процедуре будет идти INSERT в соответствующие таблицы (килы, вулч, тимкил).

Там-же можно выдавать всякие медальки и звания.

 

Набор параметров пока не окончательный. Ну и процедур будет несколько. Отдельно для учета ботов, наземных целей и т.д.

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

Изменено пользователем xedoc
  • Поддерживаю! 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чтобы не привязываться к структуре БД, я планирую использовать хранимые процедуры.

Не понял немного. Данные ты не хочешь хранить в БД чтоли? Структуру можно сделать, а потом уже распространить ее на Мускул и МССКЛ, думаю иное что-то врятли понадобиться.

Если есть возмонжость, то нужно составить список параметров которые можно тащить из логов. Чтобы понять как потом строить стату.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Буду вести журнал процесса разработки, возможно будет кому-то интересно.

 

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

Пригодится для реализации статистики серверов и всевозможных сценариев аля Air Domination War, где необходим ввод команд от игроков и управление сервером, которое нельзя реализовать на уровне миссии.

 

Исходники обновляются тут:  https://github.com/xedoc/IL2CDR

Экзешник будет по этой ссылке: https://app.box.com/s/g6tmcu9tjv3eyeexf9buvhi1dqc4ofj1

Программа и скрипты пишутся на C#. Архитектура: MVVM (MVVMLight).

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

Сегодня планирую сделать парсер лога и простой скрипт для примера.

Если у кого-нибудь есть желание потестить или есть полезные советы - пишите. Если есть желающие чего-нибудь закоммитить - форкайте ;)

 

Пока быстро набросал скетч UI в VS.

  • Scripts - динамический список скриптов. Генерируется на основании списка файлов из папки с данными программы. Скрипты можно влючать, выключать и перезагружать. Для каждого скрипта отображается отдельный список настроек;
  • RCON - отправка консольных команд серверу. Разделена на команды управления игроками и глобальные команды;
  • Settings - глобальные настройки программы. Путь к логам миссии, опция чистки старых файлов(кстати, зачем они генерируются каждые 30 сек ???).
  • Log - журнал программы. Информация, ошибки загрузки сриптов со стектрейсом и т.д.

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

 

 

Q55HLQo.png

 

 

 

Можно ли будет вообще уйти от миссионного подхода? Ну, там, запилить ДК в реальном времени?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не понял немного. Данные ты не хочешь хранить в БД чтоли? Структуру можно сделать, а потом уже распространить ее на Мускул и МССКЛ, думаю иное что-то врятли понадобиться.

Если есть возмонжость, то нужно составить список параметров которые можно тащить из логов. Чтобы понять как потом строить стату.

Это я к тому, что к структуре БД у меня нет никаких требований. Хочешь нормализуй, хочешь храни все в одной таблице. 

Главное, чтобы в БД был создан набор хранимых хранимых процедур с определенными параметрами. 

 

Образно говоря, в программе вместо вызова INSERT INTO stats SET player='blah', kills=kills+1,... будет CALL AddKill('blah') или для MSSQL: EXEC uspAddKill 'blah';

А уже в самой процедуре AddKill(), на сервере, будет выполняться один или несколько INSERT-ов, UPDATE-ы и все что душе угодно ;)

 

То-есть программе не обязательно знать название таблиц, их связи, имена полей и т.д. Если завтра захочется добавить новые вычисляемые параметры в статистике, то в коде программы менять ничего не придется.

  • Поддерживаю! 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

Можно ли будет вообще уйти от миссионного подхода? Ну, там, запилить ДК в реальном времени?
 

Знать бы еще такое ДК :biggrin: ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Динамическая Кампания, поди?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Динамическая Кампания, поди?

Так сейчас пили нехочу. Или нужны объяснения что человек именно хочет!

 

Образно говоря, в программе вместо вызова INSERT INTO stats SET player='blah', kills=kills+1,... будет CALL AddKill('blah') или для MSSQL: EXEC uspAddKill 'blah'; А уже в самой процедуре AddKill(), на сервере, будет выполняться один или несколько INSERT-ов, UPDATE-ы и все что душе угодно

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

Интересует по секциям. Общие данные по миссии и по каждому пользователю в отдельности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

  • Поддерживаю! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это я к тому, что к структуре БД у меня нет никаких требований. Хочешь нормализуй, хочешь храни все в одной таблице. 

Главное, чтобы в БД был создан набор хранимых хранимых процедур с определенными параметрами. 

 

Образно говоря, в программе вместо вызова INSERT INTO stats SET player='blah', kills=kills+1,... будет CALL AddKill('blah') или для MSSQL: EXEC uspAddKill 'blah';

А уже в самой процедуре AddKill(), на сервере, будет выполняться один или несколько INSERT-ов, UPDATE-ы и все что душе угодно ;)

 

То-есть программе не обязательно знать название таблиц, их связи, имена полей и т.д. Если завтра захочется добавить новые вычисляемые параметры в статистике, то в коде программы менять ничего не придется.

 

Вопрос. А как тогда оптимизировать это под себя? Прописать что куда класть. Надо будет к тебе обращаться или будет доступно любому далекому от программирования?

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

 

Сменить ник? Это как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

Или же сменить ник и зайти под другим

 

С текущей политикой продажи аккаунтов, на это можно не отвлекаться. ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

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

Кстати, наступил на довольно серьезное ограничение. Чат пишется в файл только после остановки сервера. Как в таком случае читать команды пользователей - загадка. Возможно какой-то параметр есть.

Буду искать.

 

 

 

Вопрос. А как тогда оптимизировать это под себя? Прописать что куда класть. Надо будет к тебе обращаться или будет доступно любому далекому от программирования?

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

  • Поддерживаю! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати, наступил на довольно серьезное ограничение. Чат пишется в файл только после остановки сервера. Как в таком случае читать команды пользователей - загадка. Возможно какой-то параметр есть.

Буду искать.

Спроси у Ваала, там вроде api какой-то есть. У него же сайт про количество народа на серверах крутится и ники написаны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спроси у Ваала, там вроде api какой-то есть. У него же сайт про количество народа на серверах крутится и ники написаны.

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

Логи и rcon я в конфиге включил и потестил.

 

А вот файл чата создается при запуске сервера, но содержимое записывается только после остановки сервера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

UPD: с чатом разобрался  :salute: Можно будет читать почти в онлайне. Только не знаю как отправить сообщение, чтобы не видел никто, кроме сервера. 

Видно как минимум команде.

Изменено пользователем xedoc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Это теория, так как самому ковырять все это пока нет возможности.

 

Может стоит просить разработчиков сделать серверный канал чата, но не уверен, что сделают, и тем более, что сделают быстро...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

может этот канал уже есть,только не ентер и снтрл\ентер ,а  какой ни будь  *??:;*%:?*?)(*    набор в чат ))) ...надо все спаришивать и вообще....не сделали сами ,тему могли бы пару раза в неделю читатить...за большое спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пробовал разные префиксы в чате, но пока не подобрал ничего.

 

ID-шников в логах хватает. Там их аж три для игрока. Один Guid для логина, один Guid для ника и еще один цифровой идентификатор игрока как объекта в миссии.  То-есть даже если игрок поменяет ник - привязка к нему по идее останется.

 

В данный момент авторизацию можно сделать через веб.

 

Например, игрок заходит на веб страницу и заполняет форму с текущим ником.

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

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

Если игрок поменяет ник, то по Guid-у можно будет его обновить.

 

Проблема мне видится не в авторизации, а в том, что команда противника может узнать - что происходит на той стороне по командам в чате, случайно отправленным через ENTER, вместо Ctrl+ENTER.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Проблема мне видится не в авторизации, а в том, что команда противника может узнать - что происходит на той стороне по командам в чате, случайно отправленным через ENTER, вместо Ctrl+ENTER.

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

 

Больше интересует вопрос: а может ли сервер отвечать в чат конкретному игроку, а не в общий/командный канал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Больше интересует вопрос: а может ли сервер отвечать в чат конкретному игроку, а не в общий/командный канал?

Еще не тестил, но есть rcon-команда для отправки всем, коалиции, стране или определенному ID-клиента

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сменить ник? Это как?

А ну тут ты прав. Уникальность зашита в БЗС. Но все равно нужно тогда сделать список авторизированных пилотов для сервера.

 

Кстати, наступил на довольно серьезное ограничение. Чат пишется в файл только после остановки сервера. Как в таком случае читать команды пользователей - загадка. Возможно какой-то параметр есть.

Буду искать.

Чат это на столько второстепенно что не стоит даже останавливаться на этом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Проблема мне видится не в авторизации, а в том, что команда противника может узнать - что происходит на той стороне по командам в чате, случайно отправленным через ENTER, вместо Ctrl+ENTER.

Это случайность. Не думаю что стоит так сирьезно останавливаться на этом. Вообще чат это приблуда второстепенная ИМХО.

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

 

А вот первая табличка с игроками мне уже видна))).

Расскажите с какой целью налаживаете общение игрока с сервером? Для распознования целей? Или еще какие хотелки есть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

 

Парсер это первоочередное. Им сейчас и занимаюсь. Дело несколько усложняет тот момент, что файл лога не один и каждые 30 секунд генерится новый. Соответственно надо отслеживать файловую систему. Кроме того при первом запуске надо собирать историю текущей миссии по кусочкам, чтобы не потерять ID и т.д.

Изменено пользователем xedoc
  • Поддерживаю! 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я б поддержал рублем. Сам не программист ни разу :( Но возможность командой с сервера какой-нибудь триггер активировать в реальном времени - это что то невероятно пользительное.

Изменено пользователем Valdamar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Парсер это первоочередное. Им сейчас и занимаюсь. Дело несколько усложняет тот момент, что файл лога не один и каждые 30 секунд генерится новый. Соответственно надо отслеживать файловую систему. Кроме того при первом запуске надо собирать историю текущей миссии по кусочкам, чтобы не потерять ID и т.д.

На данный момент управление наземкой проработано спауном самолета на филде. Т.е. спаунишся и колонна выходит по заданному тобой маршруту. Маршруты естественно все заранее прописаны. Человек выбирает маршрут и тип колонны.

Да логи видел, геморойные. Но зато нет файла в 4-6 гигов как в старичке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так сейчас пили нехочу. Или нужны объяснения что человек именно хочет!

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×